Block a user
akgl_Actor::layer is unbounded but draw_world stops at AKGL_TILEMAP_MAX_LAYERS
akgl_actor_render hard-codes SDL_FLIP_NONE, doubling the art cost of a side-on character
akgl_tilemap_compute_tileset_offsets silently requires spacing == 0 and margin == 0
akgl_character_sprite_add leaks a reference when the same sprite is re-added
akgl_TilemapLayer does not record a layer's name
use_own_physics is set and never read
Every actor spawned from a map is invisible on frame one
Actors and characters unregister under a different key than they register
Parent/child offset is double-counted at draw time
akgl_game_update calls simulate through a NULL pointer -- segfault on frame one
akgl_ControlMap.mouseid, .penid and the axis fields are dead, deliberately
An actor cannot be scaled per axis
A character's state-to-sprite binding can be replaced but not removed
A large drag coefficient can invert velocity
Integration is explicit Euler, so trajectories are frame-rate dependent
Releasing a direction stops the actor dead -- there is no deceleration
A fall accelerates without limit: there is no terminal velocity
P9: the tilemap footprint refactor -- targets 14 and 15, 28 MB of BSS
P8: target 13 needs a realistic map fixture before it needs anything else
P6:
draw_world rescans all 64 actor slots once per layer -- 1024 refcount checks a frame