[Change] Updated README with roadmap.

This commit is contained in:
Ritchie Cunningham 2025-09-21 01:37:34 +01:00
parent a73aa4feaf
commit 7376761d36

View File

@ -7,18 +7,46 @@ The following dependencies are required:
- A C++ compiler (e.g., clang, g++)
- CMake (3.16 or newer)
- SDL3 development libraries
- SDL3_net development libraries
- GLEW development libraries
- FreeType development libraries
** Installation (Debian)
You can install all required dependencies with the following command:
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
#+END_SRC
** Installing SDL3_net (from source)
As SDL3 is new, the networking library may require compiling and installed
manually.
1. *Clone the repository:*
#+BEGIN_SRC bash
git clone https://github.com/libsdl-org/SDL_net.git
cd SDL_net
#+END_SRC
2. *Build and install:*
#+BEGIN_SRC bash
mkdir build && cd build
cmake ..
make
sudo make install
# You can delete the downloaded SDL_net directory after install.
#+END_SRC
3. *Update linker cache:*
If you have linker issues after install SDL3_net, try updating your linker
cache.
#+BEGIN_SRC bash
sudo ldconfig
#+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.
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:
@ -45,6 +73,50 @@ Simply run the following commands from the root of the project directory:
* Project Structure
The codebase is organised into three main components:
- =common/=: A shared library (=libbettola=) containing code used by both the client and server.
- =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, manages game state and the world simulation.
- =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
- [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=).
- [ ] 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.