Freeing Entities from the Grid
In Prison Architect, every entity — prisoner, guard, item, tree — is ultimately tied to a tile. The grid is the world, and the engine assumes that all entities can be reduced to a tile index. That works fine for a flat, strictly tile-based game, but it comes with trade-offs: Anything that doesn’t really “fit” into a single tile (like multi-tile objects, diagonal movement, or smooth animation) ends up bolted on awkwardly. Remember how in Prison Architect you tried to place a 1-tile chair at a 2-tiles table ending up with one or another side but not the middle? Precise positioning isn’t possible — everything snaps to the grid whether it looks right or not. Yes, in Prison Architect entities are moving seemingly smoothly, but it’s achieved with rendering quirks such as decoupled render-specific attributes in the entity and floating-point additions/subtractions which are fundamentally prone to errors and are significantly slower than these operations done on integer values. In Prison Architect, the source of truth is still tiles, and every movement apparently requires interpolation of the rendered pixel coordinate to the tile index. For every step of move. In every draw iteration. Modders quickly hit limits when trying to represent entities that should move more naturally. Want to add a helicopter? In Prison Architect, it (I assume) still participates in collision detection as a tile-bound entity. A small bin under an office desk? Impossible in Prison Architect. A small bin next to a small coat hanger? In Prison Architect, they take as much space as two fridges. I decided to take a different approach. ...