121 lines
4.1 KiB
Org Mode
121 lines
4.1 KiB
Org Mode
#+TITLE: Working Title: Bettola
|
|
|
|
A multiplayer hacking simulator with a graphical OS, built in C++ and OpenGL.
|
|
|
|
* Dependencies
|
|
The following dependencies are required:
|
|
- A C++ compiler (e.g., clang, g++)
|
|
- CMake (3.16 or newer)
|
|
- SDL3 development libraries
|
|
- SDL3_net development libraries
|
|
- GLEW development libraries
|
|
- FreeType development libraries
|
|
|
|
** Installation (Debian)
|
|
You can install most required dependencies with the following command:
|
|
#+BEGIN_SRC bash
|
|
sudo apt update
|
|
sudo apt install build-essential clang cmake libsdl3-dev libglew-dev libfreetype-dev
|
|
#+END_SRC
|
|
|
|
** Installing SDL3_net (from source)
|
|
As SDL3 is new, the networking library may require compiling and installed
|
|
manually.
|
|
|
|
1. *Clone the repository:*
|
|
#+BEGIN_SRC bash
|
|
git clone https://github.com/libsdl-org/SDL_net.git
|
|
cd SDL_net
|
|
#+END_SRC
|
|
2. *Build and install:*
|
|
#+BEGIN_SRC bash
|
|
mkdir build && cd build
|
|
cmake ..
|
|
make
|
|
sudo make install
|
|
# You can delete the downloaded SDL_net directory after install.
|
|
#+END_SRC
|
|
3. *Update linker cache:*
|
|
If you have linker issues after install SDL3_net, try updating your linker
|
|
cache.
|
|
#+BEGIN_SRC bash
|
|
sudo ldconfig
|
|
#+END_SRC
|
|
|
|
* Build Instructions
|
|
This project uses a top-level Makefile to simplify the CMake workflow. Build
|
|
artifacts will be placed in the =bin/= directory.
|
|
|
|
Simply run the following commands from the root of the project directory:
|
|
|
|
- *Build the project:*
|
|
#+BEGIN_SRC bash
|
|
make
|
|
#+END_SRC
|
|
|
|
- *Build and run the client:*
|
|
#+BEGIN_SRC bash
|
|
make runc
|
|
#+END_SRC
|
|
|
|
- *Build and run the server:*
|
|
#+BEGIN_SRC bash
|
|
make runs
|
|
#+END_SRC
|
|
|
|
- *Clean the project:*
|
|
This removes the =bin/= directory.
|
|
#+BEGIN_SRC bash
|
|
make clean
|
|
#+END_SRC
|
|
|
|
* Project Structure
|
|
The codebase is organised into three main components:
|
|
- =common/=: A shared library (=libbettola=) containing code used by both the
|
|
client and server.
|
|
- =client/=: The game client (=bettolac=), handles rendering, UI, and user input.
|
|
- =server/=: The game server (=bettolas=) manages game state and the world
|
|
simulation.
|
|
|
|
* Planned Features /Note: [X] indicates a feature that is currently in progress./
|
|
|
|
** Core Gameplay & Hacking
|
|
- [X] Custom-built graphical OS desktop environment.
|
|
- [X] Interactive terminal with command history and scrolling.
|
|
- [X] Draggable and focusable UI windows.
|
|
- [X] Local and remote virtual file systems (VFS).
|
|
- [X] Core filesystem commands (=ls=, =cd=).
|
|
- [ ] Remote system connections via ingame =ssh= tool.
|
|
- [ ] Network scanning tools to discover hosts, open ports, and running
|
|
services.
|
|
- [ ] A deep exploit system based on service versions (e.g., SSH, FTP, HTTP).
|
|
- [ ] Ability to find, modify, and write new exploits.
|
|
- [ ] Functionality to upload/download files to and from remote systems.
|
|
- [ ] Log cleaning utilities and other tools for covering your tracks.
|
|
- [ ] Social engineering through in-game email and websites.
|
|
|
|
** The World
|
|
- [ ] Narrative-driven main storyline (serves as tutorial before the sandbox
|
|
world).
|
|
- [ ] Emergent gameplay arising from the interaction of world systems.
|
|
- [ ] A persistent, shared "core" universe of high-level NPC networks.
|
|
- [ ] A unique, procedurally generated "local neighbourhood" for each new
|
|
player.
|
|
- [ ] NPC factions and corporations with simulated goals and stock markets.
|
|
- [ ] Dynamic missions generated organically from the state of the world.
|
|
- [ ] Active NPC system administrators who patch vulnerabilities and hunt for
|
|
intruders.
|
|
|
|
** Player Systems & Progression
|
|
- [ ] Embedded Lua scripting engine for creating custom tools.
|
|
- [ ] In-game code editor with syntax highlighting etc.
|
|
- [ ] Secure, sandboxed execution of player scripts with CPU/RAM as a
|
|
resource.
|
|
- [ ] An in-game internet with a web browser, email, and online banking.
|
|
- [ ] Online stores for purchasing virtual hardware, software, and exploits.
|
|
- [ ] The ability to purchase and upgrade dedicated servers.
|
|
- [ ] Hosting of player-owned services (web, FTP, etc.).
|
|
- [ ] Creation of custom websites using HTML and basic JS.
|
|
- [ ] Player-to-player secure messaging and file transfers.
|