2025-12-13 Status Update & Commitment by EOY!

Finally, I’ve reworked the wall segments stuff heavily! This took multiple rewrites, and with a bit of sadness I had to reject some capabilities built into the engine in the past (such as free-angle sprite rotation, and it got fundamentally incompatible with scaling and trimming, while trimming was essential to not draw the wall caps at junctions). How it looks for modders since now: 128×32 for wall straight horizontal segment (leftmost and/or rightmost 16×16 to be overlapped by crosspoint sprites) 32×128 for vertical (likewise. 16×16 areas to be overlapped by wall caps) 32×32 crosspoint sprites: L-junctions, T-junctions, cross-4-walls All the walls are now seamlessly rendered. No gaps, no ugly overlaps at junctions. This means dense prisons stay readable even at high zoom levels - no visual noise, no guessing where walls actually are. ...

December 13, 2025

My personal AI "policy"

It’s my thirteenth post, and while I'm thinking on the new wall sprites design, I’d like to share my own personal AI “policy” and perception. I saw a lot of projects, from indie-driven to large enterprises, where AI has chewed everything. No one cares anymore about thinking, engineering or debugging. You got an idea? Ask Claude to code it for you. You got a bug? Ask ChatGPT and blatantly copy-paste its generated code. Why should you care to ever review it when Copilot can do it for you? And if the AI-generated code produces bugs… just make AI to fix it! ...

November 22, 2025

Walls Behave Badly

Hey there my dear friends, I genuinely intended to jump to the assets and some tasty demos soon. But once I introduced a new sprite, something hidden deeply under the engine hood which patiently waited its hour to hit me finally got its chance. What happened? I decided to bring up a texture for the fence. And this happened: Fence segments overlap each other. Why this happened? As you can guess, the rendering engine simply renders full sprites, hanging wall segments over the map tiles to connect their endpoints at corners. ...

November 12, 2025

Wall Rendering Refactor (Weekend of Nov 9–10, 2025)

This update closes a long-standing visual bug that caused walls to disappear at corners and same-floor geometry to be incorrectly shadowed. Ground floor OK. First floor not OK. Some walls from the ground floor suddenly disappeared, and corners look weird. The fix required a refactor of both data structures and rendering order logic. Data Structure Refactor Walls were previously stored in a shared structure within each map tile: ...

November 8, 2025

Prefab System Rebuild (Weekend of Nov 1–2, 2025)

Hey guys, I know I was silent for a long time. So happy to return from my 5-weeks rewind at sunny Crete. This weekend’s work focused on a complete redesign of the prefab system, making it composable, extensible, and suitable for future modding capabilities. The implementation now supports both patching and derivation of prefabs, as well as proper argument mapping and validation. Circular dependency handling has also been added. How it was before this weekend From the very beginning, patching of existing prefabs was always in my mind. The engine always provided a capability to register a new prefab factory under the same ID as an existing prefab. In that case, the new factory didn’t overwrite the pre-existing one, but got appended to the chain of factories. ...

November 2, 2025

2025-09-14 Status Update: Walls, Floors, and a Leash on the Camera

Making steady progress, and this time the changes are a little less “under the hood” and a little more visible: Prefabs now take arguments. Think of it as giving your Lego bricks different colors without having to buy a whole new set. Walls and floor tiles are now regular entities. They may still get rendered in their own loops, but for modders they behave just like everything else. No more “special snowflake” walls—everything’s unified. Camera pan is bounded to the map. At last, you can’t drift into the void and discover the edge of the universe. What’s coming up: ...

September 14, 2025

2025-08-30 Status Update

After almost 2 months spent on the extensible game engine development from scratch, I have finally some screenshots to proudly demonstrate! The road overcome so far: Modular-based, extensible core Why I Use ECS (and What That Means for Modding) Camera with keyboard-controlled pan and zoom Map-tile system with multilevel-in-mind! Going Vertical: Multi-Floor Maps Sprite rendering Automatic texture atlas building from the individual sprites supplied by mods (so that you as a modder would never have to mess around with your own atlas building!) Automatic Texture Atlasing for Modders Frustum culling Walls in between tiles (unlike in Prison Architect where they occupy an entire tile) Rethinking Walls: Between Tiles, Not Inside Rotation of sprites (so that you wouldn’t have to provide different textures for horizontal and vertical wall sections) Banging Head Against Vertical Walls Stay tuned, there is a lot in my mind to come up with yet before an alpha release! ...

August 31, 2025

Banging Head Against Vertical Walls

This is the story of how a simple rendering problem turned into a small descent into madness. It started with floor tiles and wall segments — and ended with me re-deriving trigonometry and then deliberately ignoring it. The Naive Start In the early version of the renderer, everything was simple: Floor tiles were drawn with no scaling or rotation. Textures of 128x128 were just taken and drawn. Wall segments had two dedicated textures: a horizontal texture (128x32) and a separate vertical texture (32x128). Just two different .png files. Rendering code was clean, direct, and straightforward. It worked great… until it didn’t. ...

August 31, 2025

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. ...

August 24, 2025

Going Vertical: Multi-Floor Maps

One of the first big design choices I made was to break away from Prison Architect’s flat map. In PA, everything happens on a single plane: walls, rooms, entities, and jobs all share the same 2D grid. That’s simple, but it means no basements, no bridges, no multi-level facilities. When I set out to design my own engine, I knew I wanted true multi-floor gameplay. Multi-floor buildings. Underground tunnels. Rooftop yards. A real sense of vertical space. ...

August 17, 2025