[PR #214] [MERGED] kb: First-person camera and WASD on vanilla Kenshi 1.0.68 (OGRE plugin + signature-scanned internals) #216

Closed
opened 2026-10-15 20:54:26 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/214
Author: @GustavoHSCruz
Created: 10/11/2026
Status: ✅ Merged
Merged: 10/11/2026
Merged by: @rehan-remade

Base: main ← Head: kb/kenshi-first-person-camera-and-wasd


📝 Commits (5)

  • d2fc87a kb: First-person camera and WASD on vanilla Kenshi 1.0.68: an OGRE plugin plus signature-scanned game internals (Kenshi)
  • ad410ce Merge main: regenerate the index, link the 1.0.65 Kenshi recon note
  • 53d0c67 kb: kenshi first-person camera: review fixes
  • baa9da5 Merge remote-tracking branch 'origin/main' into land/pr-214
  • cd78520 kb: regenerate the index

📊 Changes

4 files changed (+276 additions, -1 deletions)

View changed files

📝 knowledge/INDEX.md (+2 -1)
➕ knowledge/games/kenshi/first-person-camera-and-wasd-on-vanilla-kenshi-1-0-68-an-ogr.md (+233 -0)
📝 knowledge/games/kenshi/kenshi-1-0-65-native-ogre-recon.md (+2 -0)
📝 knowledge/index.json (+39 -0)

📄 Description

A field note for a game the knowledge base did not cover yet: Kenshi (OGRE 2.0, native, no anti-cheat).

What the note records

  • Route: a plugin DLL that OGRE itself loads from Plugins_x64.cfg. The camera layer uses only OgreMain_x64.dll exports; the character layer finds the selected character and the game's own movement code in the vanilla 1.0.68 exe by signature, so the RE_Kenshi downgrade to 1.0.65 was not needed.
  • Engine facts: Lo-Fi's extra FrameListener virtual, the order of culling and animation inside SceneManager::_cullPhase01 (why a camera override has to be placed twice per pass), the camera rig and floating origin, walking all entities through the SoA memory manager without STL, the bone-size hook that hides the head, the OIS mouse layout, and the 1.0.68 addresses and offsets for world → player → selected character → movement.
  • 11 gotchas as symptom → cause → fix, including two that cost real time: exact vtable checks refuse every live character (they are CharacterHuman, so RTTI is-a is needed), and leaving direct movement makes the character run back to where it started.
  • Verification: an offline harness that boots the game's own OgreMain_x64.dll under Wine with no render system, a scan of the real exe mapped as an image, and in-game checks with positions read back from the plugin's log. The note says plainly what was not verified (the unload path in the real game, squad switching, combat).

Checks

  • um kb check --index: PASS (60 notes)
  • uv run --with pytest pytest -q tests: 65 passed, 1 skipped
  • um publish check .: 0 failures

No game files, assets or decompiled code. Class names and field offsets come from KenshiLib's headers (GPLv3), used as reference and re-checked in the 1.0.68 binary.

Built by two agents working together for the same human: Claude Code (plugin and in-game testing) and Codex CLI (static reverse-engineering and a safety review).

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rehan-remade/universal-modder/pull/214 **Author:** [@GustavoHSCruz](https://github.com/GustavoHSCruz) **Created:** 10/11/2026 **Status:** ✅ Merged **Merged:** 10/11/2026 **Merged by:** [@rehan-remade](https://github.com/rehan-remade) **Base:** `main` ← **Head:** `kb/kenshi-first-person-camera-and-wasd` --- ### 📝 Commits (5) - [`d2fc87a`](https://github.com/rehan-remade/universal-modder/commit/d2fc87a785e6c749fad16e91de1843efb4484588) kb: First-person camera and WASD on vanilla Kenshi 1.0.68: an OGRE plugin plus signature-scanned game internals (Kenshi) - [`ad410ce`](https://github.com/rehan-remade/universal-modder/commit/ad410ce9d7a8b1dc0f77155c6a5716cd9910bbfe) Merge main: regenerate the index, link the 1.0.65 Kenshi recon note - [`53d0c67`](https://github.com/rehan-remade/universal-modder/commit/53d0c672497bb7ff6a5299df0ef3e9e36eeb3d68) kb: kenshi first-person camera: review fixes - [`baa9da5`](https://github.com/rehan-remade/universal-modder/commit/baa9da58ec655dfa2b7641b8e42a26b0dc340153) Merge remote-tracking branch 'origin/main' into land/pr-214 - [`cd78520`](https://github.com/rehan-remade/universal-modder/commit/cd78520ab5f99e5a61328634ff4767d666e9aa81) kb: regenerate the index ### 📊 Changes **4 files changed** (+276 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `knowledge/INDEX.md` (+2 -1) ➕ `knowledge/games/kenshi/first-person-camera-and-wasd-on-vanilla-kenshi-1-0-68-an-ogr.md` (+233 -0) 📝 `knowledge/games/kenshi/kenshi-1-0-65-native-ogre-recon.md` (+2 -0) 📝 `knowledge/index.json` (+39 -0) </details> ### 📄 Description A field note for a game the knowledge base did not cover yet: **Kenshi** (OGRE 2.0, native, no anti-cheat). ## What the note records - **Route:** a plugin DLL that OGRE itself loads from `Plugins_x64.cfg`. The camera layer uses only `OgreMain_x64.dll` exports; the character layer finds the selected character and the game's own movement code in the vanilla 1.0.68 exe by signature, so the RE_Kenshi downgrade to 1.0.65 was not needed. - **Engine facts:** Lo-Fi's extra `FrameListener` virtual, the order of culling and animation inside `SceneManager::_cullPhase01` (why a camera override has to be placed twice per pass), the camera rig and floating origin, walking all entities through the SoA memory manager without STL, the bone-size hook that hides the head, the OIS mouse layout, and the 1.0.68 addresses and offsets for world → player → selected character → movement. - **11 gotchas** as symptom → cause → fix, including two that cost real time: exact vtable checks refuse every live character (they are `CharacterHuman`, so RTTI is-a is needed), and leaving direct movement makes the character run back to where it started. - **Verification:** an offline harness that boots the game's own `OgreMain_x64.dll` under Wine with no render system, a scan of the real exe mapped as an image, and in-game checks with positions read back from the plugin's log. The note says plainly what was not verified (the unload path in the real game, squad switching, combat). ## Checks - `um kb check --index`: PASS (60 notes) - `uv run --with pytest pytest -q tests`: 65 passed, 1 skipped - `um publish check .`: 0 failures No game files, assets or decompiled code. Class names and field offsets come from KenshiLib's headers (GPLv3), used as reference and re-checked in the 1.0.68 binary. Built by two agents working together for the same human: Claude Code (plugin and in-game testing) and Codex CLI (static reverse-engineering and a safety review). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:54:26 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rehan-remade/universal-modder#216
No description provided.