Rethinking Walls: Between Tiles, Not Inside

One of the more subtle design changes in my game compared to Prison Architect is where walls live. In Prison Architect, a wall occupies an entire tile. In my engine, walls live between tiles — exactly where you’d expect them in real architectural terms. This may seem like a small shift, but it unlocks a lot. The Problem with Tile-Occupying Walls In PA, walls are just tile entities. When you place a wall, it takes over the tile. ...

August 17, 2025

Automatic Texture Atlasing for Modders

One of the most annoying parts of modding 2D games — especially tile-based ones — is dealing with spritesheets and texture atlases. If you’ve modded Prison Architect, RimWorld, or similar games, you’ve probably had to: Cram your sprites into a shared PNG file Copy paste into exact pixel-aligned grid slots Maintain an accompanying XML or Lua file with offsets, pivots, and sizes Rebuild everything if just one image changed It’s tedious, error-prone, and downright unfriendly for casual modders. ...

August 6, 2025

Why I Use ECS (and What That Means for Modding)

My game is built on top of an ECS — short for Entity-Component-System architecture. If you’ve never used one before, this post will explain what it is, how it compares to traditional Object-Oriented Programming (OOP), and why it’s such a good fit — especially for a simulation-heavy, modding-friendly game like this one. What is ECS? ECS is a way of organizing game data and behavior by separating what something is from what it does. ...

June 8, 2025

Building a Better Prison Architect — For Modders

I’m starting something new: a Prison Architect-inspired game, rebuilt from scratch with one core goal front and center: make modding first-class. If you’ve ever created or maintained mods for Prison Architect, you probably know the struggle: Want to add a new need or status effect? You’re out of luck — hardcoded. Want to tweak how AI prioritizes jobs? Better grab a hammer, because there’s no real interface for that. Want a new UI panel? Prepare to inject Lua into undocumented corners of the engine and pray the next update doesn’t break it. That’s the kind of friction I’m eliminating. ...

June 8, 2025