99 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Org Mode
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Org Mode
		
	
	
	
	
	
#+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.
 |