Skip to content

Technical and comparative study

This section justifies the technologies, algorithms and data structures used by Aegis2D and the R-Type game. Each choice is compared with the realistic alternatives, along the axes the project cares about: portability (Linux and Windows, macOS for development), performance, robustness, security, and how much the choice helps or hinders a team of three working for six weeks.

Page Covers
Graphics Graphics API, windowing library, rendering techniques
Networking and security Transport, networking library, protocol design, threading, threats and countermeasures
Algorithms, data structures and storage ECS storage, collisions, timing, queues, configuration and persistence

Status

Decisions marked in place already exist in the code; decisions marked planned are the design the corresponding tickets implement. Each page is updated when a planned part lands, with measurements where they matter.

Language and build

Choice Alternatives Why
C++26 C++20, C++23 Imposed language (C++). The latest standard brings std::span, ranges, constexpr improvements and std::expected (C++23) that simplify safe parsing and error handling. Clang 18+, GCC 14+, Apple Clang 17+ and clang-cl support it; plain MSVC (cl.exe) has no C++26 mode in CMake, hence clang-cl on Windows.
CMake + presets Meson, xmake, Premake De facto standard for C++, first-class support in every IDE and in CI images, presets give one command per platform.
CPM vcpkg, Conan Plain CMake, no extra tool to install, dependencies pinned by version, commit or SHA-256 and cached in CI. vcpkg and Conan are more powerful for binary caching but add a second tool and a learning curve for the whole team.