Hacking sim game?
Go to file
2025-09-21 01:43:15 +01:00
assets [Add] Implement basic UI windowing system. 2025-09-20 12:30:57 +01:00
client Create hybrid authority model for command processing. 2025-09-21 00:22:04 +01:00
common Create hybrid authority model for command processing. 2025-09-21 00:22:04 +01:00
server Create hybrid authority model for command processing. 2025-09-21 00:22:04 +01:00
.gitignore [Fix] .gitignore typo 2025-09-20 01:19:53 +01:00
CMakeLists.txt [Add] Initial project structure. 2025-09-20 01:03:03 +01:00
Makefile [Add] Generate compilation database. 2025-09-20 01:18:19 +01:00
README.org Fine!! Stupid gitea not recognising orgmode lists. 2025-09-21 01:43:15 +01:00

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 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.