Hacking sim game?
			
		
		
				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).  | 
			||
|---|---|---|
| assets | ||
| client | ||
| common | ||
| server | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Makefile | ||
| README.org | ||
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 
sshtool. - 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.