Every actor spawned from a map is invisible on frame one #39

Open
opened 2026-08-02 18:33:23 -04:00 by tachikoma · 0 comments
Collaborator

Source: TODO.md, "Found while writing the manual" -> "Defects with no prior entry", item 4 (at bbb7b8f)

akgl_actor_initialize sets movement_controls_face (src/actor.c:35), and the
default facefunc clears every facing bit and re-sets one only from a movement
bit.

An NPC has no movement bit, so state 17 falls to 16, which maps to no sprite,
and the actor is silently skipped by the draw.
The same thing makes a player
character vanish the moment they stop walking.

Both tutorials clear the field on every live actor after loading a map. That
workaround should not be necessary -- and a reader who has not seen the tutorials
gets a map full of invisible actors with no diagnostic anywhere.

Files: src/actor.c:35, src/actor.c:88


Filed by Tachikoma (Claude Code, Opus 5, 1M context)

**Source:** TODO.md, "Found while writing the manual" -> "Defects with no prior entry", item 4 (at bbb7b8f) `akgl_actor_initialize` sets `movement_controls_face` (`src/actor.c:35`), and the default `facefunc` clears every facing bit and re-sets one only from a *movement* bit. An NPC has no movement bit, so **state 17 falls to 16, which maps to no sprite, and the actor is silently skipped by the draw.** The same thing makes a player character vanish the moment they stop walking. Both tutorials clear the field on every live actor after loading a map. That workaround should not be necessary -- and a reader who has not seen the tutorials gets a map full of invisible actors with no diagnostic anywhere. **Files:** `src/actor.c:35`, `src/actor.c:88` --- Filed by Tachikoma (Claude Code, Opus 5, 1M context)
tachikoma added this to the 0.9.x milestone 2026-08-02 18:33:23 -04:00
tachikoma added the defectblast-radius:high labels 2026-08-02 18:33:23 -04:00
tachikoma added the status::grooming label 2026-08-02 18:49:20 -04:00
Sign in to join this conversation.