Theme: iWiki Log in Register

Diff: BackroomsEngine

Comparing revision #3 (2026-06-22 03:47:30) with revision #4 (2026-06-22 17:55:19).

OldNew
{{Infobox project|name=BackroomsEngine|type=Native game engine and dedicated server runtime|status=In development|language=C++20|build system=CMake, vcpkg|platform=Windows client and dedicated server, Linux server support|main targets=BackroomsMMO, BackroomsServer, BackroomsTests|related=[[BackroomsMMO]]}}
{{Infobox project|name=BackroomsEngine|type=Native game engine and dedicated server runtime|status=In development|language=C++20|build system=CMake, vcpkg|platform=Windows client and dedicated server, Linux server support|main targets=BackroomsMMO, BackroomsServer, BackroomsTests|related=[[BackroomsMMO]]}}
'''BackroomsEngine''' is the native C++ engine and runtime used by [[BackroomsMMO]]. It provides the game client, dedicated server, renderer, world generation, networking, audio, voice, replay capture, gameplay systems, asset loading, tools, and regression tests used by the project.
'''BackroomsEngine''' is the native C++ engine and runtime used by [[BackroomsMMO]]. It provides the game client, dedicated server, renderer, world generation, networking, audio, voice, replay capture, gameplay systems, asset loading, tools, and regression tests used by the project.
The engine is built as a C++20 CMake project. Its main public-facing targets include '''BackroomsMMO''' for the game client, '''BackroomsServer''' for online shards, and '''BackroomsTests''' for automated regression coverage. It also includes tools for models, animation, mods, replays, launch workflows, load testing, and internal game operation.
The engine is built as a C++20 CMake project. Its main public-facing targets include '''BackroomsMMO''' for the game client, '''BackroomsServer''' for online shards, and '''BackroomsTests''' for automated regression coverage. It also includes tools for models, animation, mods, replays, launch workflows, load testing, and internal game operation.
BackroomsEngine is designed around the needs of an online Backrooms survival game. It is not only a graphics layer. It includes the systems needed to generate and stream unsettling spaces, simulate players and entities, connect clients to servers, persist gameplay state, capture replays, and support multiplayer safety.
BackroomsEngine is designed around the needs of an online Backrooms survival game. It is not only a graphics layer. It includes the systems needed to generate and stream unsettling spaces, simulate players and entities, connect clients to servers, persist gameplay state, capture replays, and support multiplayer safety.
== Purpose ==
== Purpose ==
The purpose of BackroomsEngine is to provide a custom native runtime for BackroomsMMO. A general web application cannot render the game, simulate realtime movement, process audio, stream world chunks, or maintain low-latency multiplayer state. Those responsibilities belong to the engine.
The purpose of BackroomsEngine is to provide a custom native runtime for BackroomsMMO. A general web application cannot render the game, simulate realtime movement, process audio, stream world chunks, or maintain low-latency multiplayer state. Those responsibilities belong to the engine.
The engine gives the project control over the exact shape of the game. It can define how Backrooms spaces are generated, how players move, how worlds are streamed, how server authority works, how replays are recorded, how voice behaves, and how tools fit the project's workflow.
The engine gives the project control over the exact shape of the game. It can define how Backrooms spaces are generated, how players move, how worlds are streamed, how server authority works, how replays are recorded, how voice behaves, and how tools fit the project's workflow.
Because BackroomsMMO is an online game, the engine also has to work with a website and account platform. The engine does not exist in isolation. It is built to talk to the BackroomsMMO web layer for login, character selection, server discovery, session verification, replay support, and online state.
Because BackroomsMMO is an online game, the engine also has to work with a website and account platform. The engine does not exist in isolation. It is built to talk to the BackroomsMMO web layer for login, character selection, server discovery, session verification, replay support, and online state.
== Architecture ==
== Architecture ==
BackroomsEngine is organised into shared engine libraries, renderer support, native bridge code, applications, tools, tests, and runtime assets. The shared engine code contains core systems such as world generation, networking, assets, save data, replay capture, audio, chat, AI, modding, configuration, and gameplay state.
BackroomsEngine is organised into shared engine libraries, renderer support, native bridge code, applications, tools, tests, and runtime assets. The shared engine code contains core systems such as world generation, networking, assets, save data, replay capture, audio, chat, AI, modding, configuration, and gameplay state.
The application layer builds separate programmes for the game client, server, replay player, launcher, model tools, animation tools, mods tool, admin utilities, message utilities, load testing, and test execution. This keeps development tools close to the runtime while still separating them from the player-facing game.
The application layer builds separate programmes for the game client, server, replay player, launcher, model tools, animation tools, mods tool, admin utilities, message utilities, load testing, and test execution. This keeps development tools close to the runtime while still separating them from the player-facing game.
The engine uses vcpkg-managed dependencies such as GLFW, fmt, spdlog, nlohmann-json, Asio, ENet, OpenSSL, libsodium, compression libraries, SQLite, Recast Navigation, GLM, EnTT, and other supporting libraries. These dependencies support rendering, logging, serialisation, networking, compression, cryptography, navigation, asset handling, and data-oriented systems.
The engine uses vcpkg-managed dependencies such as GLFW, fmt, spdlog, nlohmann-json, Asio, ENet, OpenSSL, libsodium, compression libraries, SQLite, Recast Navigation, GLM, EnTT, and other supporting libraries. These dependencies support rendering, logging, serialisation, networking, compression, cryptography, navigation, asset handling, and data-oriented systems.
== Rendering ==
== Rendering ==
BackroomsEngine contains a native renderer used by the game runtime and related tools. On Windows, the renderer uses DirectX 12. The renderer code is split into modules so frame lifecycle, scene work, post processing, UI drawing, and resource state can be managed separately.
BackroomsEngine contains a native renderer used by the game runtime and related tools. On Windows, the renderer uses DirectX 12. The renderer code is split into modules so frame lifecycle, scene work, post processing, UI drawing, and resource state can be managed separately.
The rendering work is tied to the needs of BackroomsMMO. The game needs large interior spaces, repeated patterns, low-light atmosphere, props, doors, streamed chunk geometry, player models, effects, UI, and stable performance while the world changes around the player.
The rendering work is tied to the needs of BackroomsMMO. The game needs large interior spaces, repeated patterns, low-light atmosphere, props, doors, streamed chunk geometry, player models, effects, UI, and stable performance while the world changes around the player.
The project includes renderer hardening around startup, shader compilation, graphics profile changes, streamed chunk churn, invalid mesh data, scene resource retirement, lighting, shadows, reflections, and replay-oriented rendering. Stability is important because a Backrooms game loses its effect if the world flickers, stalls, or collapses during exploration.
The project includes renderer hardening around startup, shader compilation, graphics profile changes, streamed chunk churn, invalid mesh data, scene resource retirement, lighting, shadows, reflections, and replay-oriented rendering. Stability is important because a Backrooms game loses its effect if the world flickers, stalls, or collapses during exploration.
== World Generation ==
== World Generation ==
World generation is one of the central systems in BackroomsEngine. The engine supports deterministic chunk-based generation, world seeds, floors, chunk sizes, render distances, simulation distances, instance doors, edge doors, corridors, loot spots, props, biomes, and templates for world assets.
World generation is one of the central systems in BackroomsEngine. The engine supports deterministic chunk-based generation, world seeds, floors, chunk sizes, render distances, simulation distances, instance doors, edge doors, corridors, loot spots, props, biomes, and templates for world assets.
The generator is built to make streamed chunks line up with neighbouring chunks. Door openings and corridors need to match across chunk boundaries so that the world feels continuous rather than stitched together randomly. This is especially important for a Backrooms setting, where repeated corridors and subtle changes are part of the atmosphere.
The generator is built to make streamed chunks line up with neighbouring chunks. Door openings and corridors need to match across chunk boundaries so that the world feels continuous rather than stitched together randomly. This is especially important for a Backrooms setting, where repeated corridors and subtle changes are part of the atmosphere.
World configuration can define floors, walls, ceilings, lights, doors, props, clutter, and loot markers. The engine can use built-in Backrooms assets or project-specific asset tokens. This lets the same generator support different levels, themes, and spaces without hard-coding every room layout.
World configuration can define floors, walls, ceilings, lights, doors, props, clutter, and loot markers. The engine can use built-in Backrooms assets or project-specific asset tokens. This lets the same generator support different levels, themes, and spaces without hard-coding every room layout.
== World Streaming ==
== World Streaming ==
BackroomsEngine streams world chunks around the player. The world streaming system decides which chunks should be visible, which should be simulated, which should be generated next, and which old chunks should be removed. It uses priority rings, job submission, commit budgets, eviction rules, and predictive loading to avoid large stalls.
BackroomsEngine streams world chunks around the player. The world streaming system decides which chunks should be visible, which should be simulated, which should be generated next, and which old chunks should be removed. It uses priority rings, job submission, commit budgets, eviction rules, and predictive loading to avoid large stalls.
Streaming is essential for an MMO-style Backrooms game because the world can be much larger than what should be loaded at once. The engine needs to make nearby space available quickly while keeping memory, physics, renderer uploads, and server state under control.
Streaming is essential for an MMO-style Backrooms game because the world can be much larger than what should be loaded at once. The engine needs to make nearby space available quickly while keeping memory, physics, renderer uploads, and server state under control.
The engine also supports authoritative streamed chunks. This means an online server can provide or correct world chunk data for connected clients. That is important when the world is shared by multiple players and cannot be treated as purely local.
The engine also supports authoritative streamed chunks. This means an online server can provide or correct world chunk data for connected clients. That is important when the world is shared by multiple players and cannot be treated as purely local.
== Dedicated Server Runtime ==
== Dedicated Server Runtime ==
BackroomsEngine includes the '''BackroomsServer''' dedicated server. The server accepts clients, verifies online sessions, manages player state, tracks connected players, runs server authority, reports runtime status, and sends world or gameplay updates to clients.
BackroomsEngine includes the '''BackroomsServer''' dedicated server. The server accepts clients, verifies online sessions, manages player state, tracks connected players, runs server authority, reports runtime status, and sends world or gameplay updates to clients.
The server is designed to reduce trust in the client. For online play, the server can own or check important state such as movement, player vitals, chat, combat, inventory, loot, persistence, and world changes. This makes the game more suitable for public multiplayer use.
The server is designed to reduce trust in the client. For online play, the server can own or check important state such as movement, player vitals, chat, combat, inventory, loot, persistence, and world changes. This makes the game more suitable for public multiplayer use.
The server also exposes operator controls through safe channels. Operators can manage connected players, deal with abusive behaviour, update runtime settings, and monitor server health. This is necessary for any online game that expects real players rather than only local test sessions.
The server also exposes operator controls through safe channels. Operators can manage connected players, deal with abusive behaviour, update runtime settings, and monitor server health. This is necessary for any online game that expects real players rather than only local test sessions.
== Networking ==
== Networking ==
Networking in BackroomsEngine covers online clients, online servers, network messages, transport, authentication support, content sync, state broadcasts, admin data, and diagnostics. The engine can track remote players, mimic entities, paranormal events, projectiles, voice frames, state corrections, and streamed world changes.
Networking in BackroomsEngine covers online clients, online servers, network messages, transport, authentication support, content sync, state broadcasts, admin data, and diagnostics. The engine can track remote players, mimic entities, paranormal events, projectiles, voice frames, state corrections, and streamed world changes.
The client tracks whether it is connected, authenticated, accepted by the server, assigned to an instance, receiving authority state, using UDP state transport, or falling back to TCP state frames. These details help diagnose whether an online session is healthy.
The client tracks whether it is connected, authenticated, accepted by the server, assigned to an instance, receiving authority state, using UDP state transport, or falling back to TCP state frames. These details help diagnose whether an online session is healthy.
The engine also tracks runtime metrics such as packet counts, traffic, state updates, movement corrections, combat acceptance, chat acceptance, chunk builds, tick timings, and worker activity. These metrics are useful for making the online runtime stable under real play conditions.
The engine also tracks runtime metrics such as packet counts, traffic, state updates, movement corrections, combat acceptance, chat acceptance, chunk builds, tick timings, and worker activity. These metrics are useful for making the online runtime stable under real play conditions.
== Gameplay Systems ==
== Gameplay Systems ==
BackroomsEngine contains a wide range of gameplay systems used by BackroomsMMO. The game state includes players, identities, world configuration, dungeon and instance data, ambience, director state, progression, missions, reputation, alignment, stashes, challenges, safe rooms, respawn anchors, clans, explored map data, searched loot, chalk marks, blood traces, investigation evidence, waypoints, chat, and safety tracking.
BackroomsEngine contains a wide range of gameplay systems used by BackroomsMMO. The game state includes players, identities, world configuration, dungeon and instance data, ambience, director state, progression, missions, reputation, alignment, stashes, challenges, safe rooms, respawn anchors, clans, explored map data, searched loot, chalk marks, blood traces, investigation evidence, waypoints, chat, and safety tracking.
This gives the project a foundation for survival play, exploration, long-term progression, group identity, and player history. The Backrooms setting benefits from these systems because players need more to do than walk through corridors. They need reasons to remember places, fear encounters, recover from mistakes, and return to the world later.
This gives the project a foundation for survival play, exploration, long-term progression, group identity, and player history. The Backrooms setting benefits from these systems because players need more to do than walk through corridors. They need reasons to remember places, fear encounters, recover from mistakes, and return to the world later.
The engine also contains bodyguard and support-oriented AI systems, challenge mode structures, environmental devices, paranormal events, biotic orb snapshots, and gameplay recovery mechanics. These systems support the project's interest in group survival and support roles.
The engine also contains bodyguard and support-oriented AI systems, challenge mode structures, environmental devices, paranormal events, biotic orb snapshots, and gameplay recovery mechanics. These systems support the project's interest in group survival and support roles.
== Audio and Voice ==
== Audio and Voice ==
BackroomsEngine includes audio playback, audio banks, acoustic systems, runtime sound output, chat, and voice systems. Audio is important in a Backrooms game because atmosphere depends heavily on hums, echoes, distant movement, sudden sounds, and spatial uncertainty.
BackroomsEngine includes audio playback, audio banks, acoustic systems, runtime sound output, chat, and voice systems. Audio is important in a Backrooms game because atmosphere depends heavily on hums, echoes, distant movement, sudden sounds, and spatial uncertainty.
Voice is also part of the multiplayer design. The engine can represent voice frames, playback, radio-style behaviour, and voice-related runtime data. Because player voice can be sensitive, voice features are paired with consent and account-level control in the wider BackroomsMMO platform.
Voice is also part of the multiplayer design. The engine can represent voice frames, playback, radio-style behaviour, and voice-related runtime data. Because player voice can be sensitive, voice features are paired with consent and account-level control in the wider BackroomsMMO platform.
== Replays ==
== Replays ==
BackroomsEngine includes replay capture and replay playback support. The replay system can keep recent gameplay snapshots over a configured time window. Snapshots can include fixed ticks, camera position, player positions, player vitals, life state, flashlight state, projectiles, audio events, and voice frames.
BackroomsEngine includes replay capture and replay playback support. The replay system can keep recent gameplay snapshots over a configured time window. Snapshots can include fixed ticks, camera position, player positions, player vitals, life state, flashlight state, projectiles, audio events, and voice frames.
Replay support is useful for both players and development. Players can preserve strange or dramatic moments. Developers can review runtime behaviour, movement, combat, audio, or unexpected events. For a multiplayer Backrooms game, replay capture also supports moderation and debugging because it creates a record of what happened.
Replay support is useful for both players and development. Players can preserve strange or dramatic moments. Developers can review runtime behaviour, movement, combat, audio, or unexpected events. For a multiplayer Backrooms game, replay capture also supports moderation and debugging because it creates a record of what happened.
== Assets and Tools ==
== Assets and Tools ==
BackroomsEngine includes asset handling for models, textures, materials, audio, prefabs, and runtime content. Its preferred runtime model format is GLB, with GLTF supported for development assets and FBX accepted through a conversion path.
BackroomsEngine includes asset handling for models, textures, materials, audio, prefabs, and runtime content. Its preferred runtime model format is GLB, with GLTF supported for development assets and FBX accepted through a conversion path.
The repository includes tools for model viewing, animation work, mod packaging, replay playback, load testing, graphics settings tests, asset import, model optimisation, texture and model quality checks, and runtime asset packaging. These tools are part of making the engine usable for a full game rather than a one-off prototype.
The repository includes tools for model viewing, animation work, mod packaging, replay playback, load testing, graphics settings tests, asset import, model optimisation, texture and model quality checks, and runtime asset packaging. These tools are part of making the engine usable for a full game rather than a one-off prototype.
== Modding ==
== Modding ==
BackroomsEngine includes modding support through a `.brmod` package format and a BackroomsModsTool executable. The tool can create, validate, pack, install, enable, disable, list, and self-test mod packages.
BackroomsEngine includes modding support through a `.brmod` package format and a BackroomsModsTool executable. The tool can create, validate, pack, install, enable, disable, list, and self-test mod packages.
The modding system is controlled by runtime policy. Official online play can restrict mods, while local or permitted non-official contexts can allow them. This gives the project room for community experimentation without weakening the integrity of official online servers.
The modding system is controlled by runtime policy. Official online play can restrict mods, while local or permitted non-official contexts can allow them. This gives the project room for community experimentation without weakening the integrity of official online servers.
Mod packages are validated to avoid unsafe file paths and unwanted executable behaviour. This is important because mod support can become a security risk if packages are treated as trusted files without checks.
Mod packages are validated to avoid unsafe file paths and unwanted executable behaviour. This is important because mod support can become a security risk if packages are treated as trusted files without checks.
== Testing ==
== Testing ==
BackroomsEngine includes a large regression test target called '''BackroomsTests'''. The tests cover world generation, doors, themed worlds, poolrooms, dungeon logic, runtime AI, audio, props, stairs, saves, chunk streaming, avatar models, trading, parties, clans, voice, materials, camera systems, bodyguard AI, acoustic systems, and online performance harnesses.
BackroomsEngine includes a large regression test target called '''BackroomsTests'''. The tests cover world generation, doors, themed worlds, poolrooms, dungeon logic, runtime AI, audio, props, stairs, saves, chunk streaming, avatar models, trading, parties, clans, voice, materials, camera systems, bodyguard AI, acoustic systems, and online performance harnesses.
The test coverage reflects the project's complexity. A change to world generation can affect rendering, navigation, physics, doors, saves, and online state. A change to networking can affect login, movement, persistence, chat, replays, and server authority. Automated tests help keep those systems from regressing while development continues.
The test coverage reflects the project's complexity. A change to world generation can affect rendering, navigation, physics, doors, saves, and online state. A change to networking can affect login, movement, persistence, chat, replays, and server authority. Automated tests help keep those systems from regressing while development continues.
== Development Status ==
== Development Status ==
BackroomsEngine is in active development alongside BackroomsMMO. It has undergone repeated hardening and refactoring work around rendering, world streaming, server authority, online login, client stability, runtime diagnostics, assets, and test coverage.
BackroomsEngine is in active development alongside BackroomsMMO. It has undergone repeated hardening and refactoring work around rendering, world streaming, server authority, online login, client stability, runtime diagnostics, assets, and test coverage.
The engine should be understood as a custom game runtime for BackroomsMMO rather than a general-purpose public engine. Its systems are shaped by the specific needs of a multiplayer Backrooms survival game: unsettling spaces, large streamed worlds, online authority, replays, voice, group play, moderation, and tools that support continued development.
The engine should be understood as a custom game runtime for BackroomsMMO rather than a general-purpose public engine. Its systems are shaped by the specific needs of a multiplayer Backrooms survival game: unsettling spaces, large streamed worlds, online authority, replays, voice, group play, moderation, and tools that support continued development.
== See Also ==
== See Also ==
* [[BackroomsMMO]]
* [[BackroomsMMO]]
* [[Cameron Lobban]]
* [[Cameron Lobban]]
== Source Notes ==
This page is based on direct review of the BackroomsEngine source tree, including the CMake build, vcpkg dependency manifest, world generation configuration, runtime tools, tests and BackroomsMMO.com integration files. Public project pages are included below where available.
== References ==
* [https://backroomsengine.com BackroomsEngine public homepage]
* [https://backroomsmmo.com BackroomsMMO public site]
* Source review: BackroomsEngine CMakeLists.txt and vcpkg.json.
* Source review: BackroomsEngine worldgen.json, native bridge files, model tools, mod package examples and regression test tree.
* Source review: BackroomsMMO.com GAME_AUTH_API.md, deployment documentation and control-plane source files.
[[Category:Backrooms]]
[[Category:Backrooms]]
[[Category:Projects]]
[[Category:Projects]]
[[Category:Game engines]]
[[Category:Game engines]]
[[Category:Software]]
[[Category:Software]]