Hacking sim game?
Go to file
Ritchie Cunningham 6272800a22 [Refactor] Migrate networking from SDL_net to Asio.
the SDL3_net implementation was causing blocking behaviour and was
difficult to debug and has bad docs due to not being released. Caused
crashes all over. so moved to Asio. This thing took so damn long as this
also had it's issues!

- All networking now uses Asio's async callback model.
- TcpConnection class encapsulates logic for a single client-server
  connection, managing socket and message framing.
- Implmented thread-safe queues for handling incoming and outgoing
  messages between the network thread and the main application.
- Refactored ClientNetwork and NetworkManager, the primary client and
  server networking classes have been rewritten to use the new
asio-based architecture.
- Player objects on the server are not managed by std::unique_ptr to
  ensure proper lifetime management and prevent memleaks.
- VFSManager is now a single instance on the server, passed by reference
  to new players, avoding redundant script loading for every connection.
- Resolved server crash that occured immediately upon client connection.
  This was traced to an object lifetime issue within Asio's async
handlers which was fixed by simplifying the send operation.
2025-09-25 22:41:01 +01:00
assets [Change] Remove hybrid local/remote network model 2025-09-23 20:54:39 +01:00
client [Refactor] Migrate networking from SDL_net to Asio. 2025-09-25 22:41:01 +01:00
common [Refactor] Migrate networking from SDL_net to Asio. 2025-09-25 22:41:01 +01:00
server [Refactor] Migrate networking from SDL_net to Asio. 2025-09-25 22:41:01 +01:00
.gitignore [Add] Load command scripts from filesystem. 2025-09-22 19:24:44 +01:00
CMakeLists.txt [Refactor] Migrate networking from SDL_net to Asio. 2025-09-25 22:41:01 +01:00
Makefile [Add] Generate compilation database. 2025-09-20 01:18:19 +01:00
README.org [Add] Dependency management to build system. 2025-09-21 16:36:45 +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 (managed by CMake)
  • GLEW development libraries
  • FreeType development libraries
  • Lua 5.4 development libraries
  • sol2 (header-only, managed by CMake)

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 liblua5.4-dev

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.