From 3d0b75b444952cf3eed2ce04d591424fc50b414e Mon Sep 17 00:00:00 2001 From: WiseDev <83840010+wisedevik@users.noreply.github.com> Date: Sun, 23 Aug 2026 17:14:52 +0300 Subject: [PATCH] log the data reference, and what frida found hooked the client and read its own memory rather than guessing again. what it settles: the listener is installed, addGameObject runs, Character::Character completes, and both sprites reach the render system at layers 9 and 11. no Debugger::error, no warning. models are built. and the references we send are right - asked the client's own tables and got (34,0) Knight, (34,9) Barbarian, (35,0) KingTower, (35,1) PrincessTower. then the object dump gave it away. the arena is 33000 tall and the king towers sit at y=3000 and y=29000, but our troops are at y=250 and y=31750 - past the enemy king tower, hard against the edge of the map. they are not missing, they are in the corner. that is also why they were "fighting air". so the fault is ours after all, in target selection: a unit walks through the tower it should stop at and keeps going to the boundary. --- crates/game-service/src/battle.rs | 2 ++ crates/game-service/src/battle_session.rs | 1 + 2 files changed, 3 insertions(+) diff --git a/crates/game-service/src/battle.rs b/crates/game-service/src/battle.rs index 11d272b..d4edf42 100644 --- a/crates/game-service/src/battle.rs +++ b/crates/game-service/src/battle.rs @@ -64,6 +64,8 @@ impl BattleBuilder { .unwrap_or(0); tracing::info!( buff_type_count, + knight_id = ?character_data("Knight").global_id(), + barbarian_id = ?character_data("Barbarian").global_id(), king_id = ?character_data(CHARACTER_KING_TOWER).global_id(), princess_id = ?character_data(CHARACTER_PRINCESS_TOWER).global_id(), "battle builder ready" diff --git a/crates/game-service/src/battle_session.rs b/crates/game-service/src/battle_session.rs index b8f6d09..4b0bccb 100644 --- a/crates/game-service/src/battle_session.rs +++ b/crates/game-service/src/battle_session.rs @@ -275,6 +275,7 @@ impl BattleSession { tick, global_id = ?entry.global_id.0, data = %entry.data, + data_ref = ?entry.data.global_id(), owner = entry.owner_index(), position = ?entry.position(), "spawning"