Hacking sim game?
Go to file
Ritchie Cunningham fbf70c43b3 [Add] Embedded Lua scripting language.
Over the past couple of commits, the build process now automates the
dependenices you'd normally compile from source.
This commit is focused on laying the foundation for scriptable in-game
commands using Lua.

- sol2 and lua5.4 are the new project dependencies.
- Created a new 'LuaProcessor' class to manage a Lua state and eecute
  scripts.
- The 'CommandProcessor' now contains a 'LuaProcessor' instance.
- Replaced the hardcoded c++ 'ls' command with a system that executes a
  '/bin/ls.lua' script from the Virtual File System.
- Implemented C++ -> Lua bindings for the 'vfs_node' struct, allowing
  Lua scripts to inspect the VFS and perform actions (i.e, list files).
2025-09-21 20:13:43 +01:00
assets [Add] Implement basic UI windowing system. 2025-09-20 12:30:57 +01:00
client Fix some fucking weird quirk in a Fedora VM. 2025-09-21 17:30:22 +01:00
common [Add] Embedded Lua scripting language. 2025-09-21 20:13:43 +01:00
server Explicitly tell linker where to find SDL3_net 2025-09-21 17:10:04 +01:00
.gitignore [Fix] .gitignore typo 2025-09-20 01:19:53 +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.