Hacking sim game?
Go to file
Ritchie Cunningham e06d6eec37 [Refactor] Implement scriptable Lua API
Large architecture refactor of the scripting system.

Previous implementation required Lua scripts to return "action
tables" which were interpreted by a large and not very flexible at all
if-else ladder in C++. While fine for the initial implementation, it's
not scalable, and it makes it impossible for players to write their own
meaningful tools.
2025-09-27 21:18:05 +01:00
assets [Refactor] Implement scriptable Lua API 2025-09-27 21:18:05 +01:00
client [Refactor] One GameState to rule them all! 2025-09-27 18:07:01 +01:00
common [Refactor] Implement scriptable Lua API 2025-09-27 21:18:05 +01:00
server [Refactor] :O Machines now walk the earth!! 2025-09-27 17:30:14 +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.