#+TITLE: 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 - Asio networking library (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: #+BEGIN_SRC bash sudo apt update sudo apt install build-essential clang cmake libsdl3-dev libglew-dev libfreetype-dev liblua5.4-dev #+END_SRC * 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:* #+BEGIN_SRC bash make #+END_SRC - *Build and run the client:* #+BEGIN_SRC bash make runc #+END_SRC - *Build and run the server:* #+BEGIN_SRC bash make runs #+END_SRC - *Clean the project:* This removes the =bin/= directory. #+BEGIN_SRC bash make clean #+END_SRC * 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 or complete. ** Core Gameplay & Hacking - [X] Custom-built graphical OS desktop environment. - [X] Interactive terminal with command history and scrolling. - [X] Draggable and focusable UI windows. - [X] Local and remote virtual file systems (VFS). - [X] Core filesystem commands (=ls=, =cd=). - [X] Remote system connections via ingame =ssh= tool. - [X] 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 - [X] Embedded Lua scripting engine for creating custom tools. - [X] 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.