4.1 KiB
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:
sudo apt update
sudo apt install build-essential clang cmake libsdl3-dev libglew-dev libfreetype-dev
Installing SDL3_net (from source)
As SDL3 is new, the networking library may require compiling and installed manually.
1 Clone the repository:
git clone https://github.com/libsdl-org/SDL_net.git
cd SDL_net
2 Build and install:
mkdir build && cd build
cmake ..
make
sudo make install
# You can delete the downloaded SDL_net directory after install.
3 Update linker cache: If you have linker issues after install SDL3_net, try updating your linker cache.
sudo ldconfig
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:
make -
Build and run the client:
make runc -
Build and run the server:
make runs -
Clean the project: This removes the
bin/directory.make clean
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
- Custom-built graphical OS desktop environment.
- Interactive terminal with command history and scrolling.
- Draggable and focusable UI windows.
- Local and remote virtual file systems (VFS).
- Core filesystem commands (
ls,cd). - Remote system connections via ingame
sshtool. - 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.