Skip to content

build: Ninja Multi-Config, schema codegen, and the offline-mod FPS cap endpoint - #30

Open
Seltraeh wants to merge 1 commit into
decompfrontier:devfrom
Seltraeh:split/01-build-structural
Open

build: Ninja Multi-Config, schema codegen, and the offline-mod FPS cap endpoint#30
Seltraeh wants to merge 1 commit into
decompfrontier:devfrom
Seltraeh:split/01-build-structural

Conversation

@Seltraeh

@Seltraeh Seltraeh commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

build: Ninja Multi-Config, schema codegen, and the offline-mod FPS cap endpoint

Branch: split/01-build-structural
Base: dev

Build-system and plumbing changes only. No gameplay behaviour is touched.

What's included

  • CMakePresets.json — replaces the Visual Studio 17 2022 generator with Ninja Multi-Config, so the build no longer pins a platform toolset and works on 2022 and 2026+ alike. Adds paired Debug/Release build presets.
  • CMakeLists.txt — wires the packet-generator into the build. gimuserver/packets/all.hpp and gimuserver/archive/archive.hpp are regenerated whenever a .kdl changes, replacing the hand-run generate.py.
  • OfflineModController (new) — one route, GET /offline_mod/fps_cap, returning the configured render cap as a bare integer. Consumed by the offline-proxy render hook at startup, not by the game client; the proxy falls back to its compile-time default if unreachable.
  • standalone_frontend — optional config path as argv[1] with a chdir to its parent, so relative paths in config.json resolve regardless of launch directory. stdout unbuffered so headless/redirected boot logs survive a crash.
  • bootstrap_windows.cpp — MSVC wants __declspec(dllexport) before the return type. The __APPX__ block had never been compiled (debug-win64 builds STANDALONE), so this C2059 only appeared on the first release build.
  • vcpkg.json — drops drogon[ctl]. The port marks it supports:"native" and vcpkg refuses it on x86-windows-static. drogon_ctl is a scaffolding CLI this codebase never calls.
  • packet-generator — submodule bumped to 1e1682e.
  • BadgeInfo.cpp — serialises ::BadgeInfoResp rather than ::BadgeInfo, so the response carries the h23iRjGN dispatch key at its root. Needs the wrapper struct from the submodule bump, which is why it rides along here.
  • Dispatcher — handler exceptions are now written to the request log alongside the existing LOG_ERROR.

Review focus

The submodule bump is the only real risk. It carries gatchagacha renames, a user_level_mst field rename to energy, and unit KDL type corrections. Those were validated inside the combined branch — this is the first time they are compiled against dev alone.

Verification

Clean configure and build, Debug and Release. GET /offline_mod/fps_cap returns 200 with the configured value.

…p endpoint

Replaces the Visual Studio 17 2022 generator with Ninja Multi-Config so the
build works against any toolset (2022, 2026+) without pinning a platform
toolset. Adds paired Debug/Release build presets.

Wires the packet-generator into CMake: gimuserver/packets/all.hpp and
gimuserver/archive/archive.hpp are regenerated from the KDL schemas whenever a
.kdl file changes, replacing the hand-run generate.py step.

standalone_frontend accepts an optional config path as argv[1] and chdirs to
its parent so relative paths in config.json resolve regardless of the launch
working directory. stdout is unbuffered so redirected and headless boot logs
survive a crash instead of dying in the CRT block buffer.

Adds OfflineModController with a single route, GET /offline_mod/fps_cap, which
returns the configured render-loop cap as a bare integer. It is read by the
offline-proxy render hook at startup, not by the game client; the proxy falls
back to its compile-time default if the endpoint is unreachable.

game_frontend/bootstrap_windows.cpp: MSVC requires __declspec(dllexport)
before the return type. The __APPX__-gated block had never been compiled
because debug-win64 builds STANDALONE, so the C2059 only surfaced on the
first release build.

vcpkg.json drops the drogon[ctl] feature. The port marks ctl as
supports:"native" and vcpkg refuses to install it on x86-windows-static.
drogon_ctl is a scaffolding CLI that this codebase never references.

Bumps the packet-generator submodule to 1e1682e, and switches BadgeInfo to
serialise ::BadgeInfoResp rather than ::BadgeInfo so the response carries the
h23iRjGN dispatch key at its root. The dispatcher also now records handler
exceptions into the request log alongside the existing LOG_ERROR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant