Hacking sim game?
Go to file
Ritchie Cunningham 388c6429cf [Change] Remove hybrid local/remote network model
Client architecture has been refactored to be fully
server-authoritative, remove the previous "hybrid" model that supported
both local and remote command execution, that was a stupid idea.

- Client now connects to server on startup.
- The local command processor and VFS have been removed from the
  Terminal class.
- All command processing is now handled by the server.
- The client is now just a thin client essentially

I'll in the future enable single player mode by running the server on
the local machine in a separate thread.
2025-09-23 20:54:39 +01:00
assets [Change] Remove hybrid local/remote network model 2025-09-23 20:54:39 +01:00
client [Change] Remove hybrid local/remote network model 2025-09-23 20:54:39 +01:00
common [Change] Remove hybrid local/remote network model 2025-09-23 20:54:39 +01:00
server [Change] Remove hybrid local/remote network model 2025-09-23 20:54:39 +01:00
.gitignore [Add] Load command scripts from filesystem. 2025-09-22 19:24:44 +01:00
CMakeLists.txt [Fix] SDL3_net has no official release. Use main branch. 2025-09-21 17:04:41 +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.