Hacking sim game?
Go to file
Ritchie Cunningham e7607e3fc0 [Refactor] Created UIRenderer for consistant coord system.
The UI codebase was suffering with complexity due to the need to
manually convert between two different coordinate systems:
- Top-down "screen coordinates" used by SDL for input and windowing.
- Bottom-up "GL coordinates" used by low-level renderers.

This was making layout calculations diffucult and is bug prone.

With this commit, I'm introducing a 'UIRenderer' abstraction layer that
wraps the low-level 'ShapeRenderer' and 'TextRenderer'. This is
responsible for centralising all coordinate system conversations.

All UI components has been refactored to use the 'UIRenderer' so the
entire UI code opeates exclusively in a single, top-down screen
coordinate system as one would expect.
2025-10-04 03:11:48 +01:00
assets [Add] Implement system boot sequence screen. 2025-09-28 03:10:12 +01:00
client [Refactor] Created UIRenderer for consistant coord system. 2025-10-04 03:11:48 +01:00
common [Fix] Created get_text_width for menu button centering. 2025-10-02 23:45:56 +01:00
server [Add] File loading and fix local 'exit' command. 2025-10-01 21:38:33 +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] make sp option in makefile. 2025-09-27 00:37:15 +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.