Commit Graph

19 Commits

Author SHA1 Message Date
ea0605711d [Refactor] Shared VFS template for CoW foundation.
Refactors the Virtual file System creation process to improve memory
efficiency at scale. This is laying the ground work for a copy-on-write
system.

Previously, each new VFS instance was a full copy, which won't scale to
a large number of NPC's. Especially now that we are loading in entire
Lua scripts.

- Added VFSManager class which now manages the lifecycle of all VFS
  instances.
- VFSManager creates a single "template" VFS on initilisation. The
  template holds the shared, read-only directories like '/bin' and their
command scripts.
- When a new VFS is created (for a client or NPC), it links it's 'bin'
  directory to the shared template's '/bin' by pointer rather than
creating a copy of it.

this makes sure the content for *all* common command scripts exists in
memory only once, regardless of the number of NPC's we will later
generate.
2025-09-21 21:50:06 +01:00
76e61336a1 Fix some fucking weird quirk in a Fedora VM. 2025-09-21 17:30:22 +01:00
03b56b44e4 Explicitly tell linker where to find SDL3_net 2025-09-21 17:10:04 +01:00
274ff9f665 [Fix] SDL3_net has no official release. Use main branch. 2025-09-21 17:04:41 +01:00
019059e209 [Add] Dependency management to build system. 2025-09-21 16:36:45 +01:00
208314f54a [Add] Remote SSH sessions and window management.
This is the beginning of the remote session functionality. It allows
players to connect to different NPC systems via an 'ssh' command.

*Server*
- Can now manage a world of multiple NPC file systems that are
  identified by IP addresses.
- Implemented SSH command to allow connection to remote NPC systems.
  Each remote session is managed via a 'CommandProcessor'.
- 'exit' command causes the remote server to terminate the client
  connection

*Client*
- Terminal can enter a 'remote' state via the SSH command which sends
  subsequent commands to the server.
- the local 'exit' command will close the terminal window.
- Refactored UI object ownership to prevent memory leaks and ensure
  proper cleanup when a window is closed or the terminal application.
2025-09-21 15:22:35 +01:00
a73aa4feaf Create hybrid authority model for command processing. 2025-09-21 00:22:04 +01:00
dbe6e437ad [Add] Process cd and ls commands. 2025-09-20 22:23:04 +01:00
92106a3c44 [Add] Client/server networking and 'ls' command. 2025-09-20 18:58:24 +01:00
70f096abc4 [Add] Bound-checked terminal scrolling. 2025-09-20 15:51:55 +01:00
846b8595f4 [Add] Blinking terminal cursor. 2025-09-20 14:13:36 +01:00
2d79aba17a [Add] Window focus and event routing. 2025-09-20 14:05:00 +01:00
8a902d3034 [Add] Desktop and draggable UI windows. 2025-09-20 13:48:12 +01:00
1bce18e993 [Change] Render terminal conte in UI window. 2025-09-20 13:06:13 +01:00
a0c5eab1cf [Add] Implement basic UI windowing system. 2025-09-20 12:30:57 +01:00
8cc30eaa17 [Add] Implement initial interactive terminal. 2025-09-20 03:46:38 +01:00
f86015736d [Add] Text rendering. 2025-09-20 03:16:59 +01:00
c3ebd0e501 [Add] Initialise SDL and OpenGL window. 2025-09-20 01:39:32 +01:00
01e6d432a4 [Add] Initial project structure. 2025-09-20 01:03:03 +01:00