diff --git a/README.org b/README.org index 7e9194b..16fa8a7 100644 --- a/README.org +++ b/README.org @@ -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.