Strategy Shift

I decided to temporarily abandon my endeavor with Mod API. The reason is quite human and simple: I spent a lot of time on this project by now. However, since the New Year, I still have nothing playable to show off. A couple of days ago I encountered a need to conduct yet another refactoring. Namely, I had to revamp the whole Config XML engine to decouple it, in order to allow an XML mod parser to reuse the same XML engine. I also made the extensible file accessor API so that to grant a safe, controllable but extensible access to different part of the file system. And for that, I also employed the XML engine to allow configs and mods to universally read files via trusted file system plugins. ...

April 14, 2026

Hooks That Let Mods Breathe

My past post was way too vague. Today I decided to shed the light on what actually I have come through. ✋ CAUTION: This post may only be of interest for C# developers. Skip them if you don’t feel like a geek. What’s up? I didn’t limit myself to only game exit hooks. Instead, I decided to design a full-fledged, complex hook system which could benefit not only myself but any future mod developer. ...

April 5, 2026

2026-03-23 Status Update

UPD 2026-04-05: Hooks That Let Mods Breathe. Short update: Finally, I’ve accomplished a major roadmap item: ✅ Game exit hooks. A mod might need to know a player is about to exit the game. I’m going to implement two-phases game exit process: First, all concerned mods are queried (asynchronously) whether they allow exiting. This is a moment when you mod could ask a user some confirmation. Second, (if all concerned mods asynchronously confirmed) all concerned mods receive pre-exit hook. This is a moment for your mod to make clean up, save subconfig and so on. The API had to be reworked several times, but eventually I’m quite happy with it: ...

March 23, 2026

2026-03-15 Status Update

Hey guys, The entire past month (wow, it’s mid-March already??) I spent on the fascinating journey with re-implementing Windows®™ Registry in expandable way for mods. How it was? A bit painful, I must admit. But I loved every minute of that pain (as any genuine engineer would, I believe). First steps First of all, I entrusted the amazing ChatGPT to build quite a naive implementation. Of course, this required a lot of prompting and directing, because the task I tried to solve was not trivial at all: loading an XML file with XSD schema validation, whereas could be custom XSD schemas registered in-flight by plugins, all bound with XsdGen’ed classes which are also subject for dynamic registration and binding to XML namespaces… Basically, I had to craft the entire SOAP framework without remote calls and on modern .NET. ...

March 15, 2026

2026-02-08 Status Update

After a month of storm at my main work hell with all shitty one-day layoffs and rebuilding roadmaps and commitments (I’m a lead engineer there), I’m finally back to put hands on my beloved Penal Engineer. First things first, the result of the poll: Survey results Thanks for voting, and most important – thanks for all your warm and supportive comments under that post! I love you guys. Your presence inspires me to continue delivering the game, and shines the light in our quite dark times we have with IT overall in the world (and especially in U.S.). ...

February 8, 2026

2025 EOY Demo

Hey hey hey, my dear followers, I promised you to deliver _something_ by the end of 2025, and I hold my word! Most of the time I spent since my last post was to deal with the walls textures. Having stepped in shoes of a potential modder, I realized how inconvenient the last design could be. And I’ve made some changes… again. For the last time. Honestly. I won’t retouch this anymore in the closest future. Time to move forward to more interesting parts of the game. ...

January 1, 2026

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