I’ve been working on Open Sosaria these past days and it finally feels like things are starting to click together, the game loop is beginning to resemble something playable.
There are still a lot of missing pieces, but now I can walk around, run into enemies, fight, die, come back, check my stats, and keep going.
Saving the game
Saving is now working in the overworld. Nothing fancy from the player side, but under the hood it led to one of the more interesting discoveries so far.
The original game does not really “serialize” state in the way we would today. It just dumps a chunk of memory into disk. That chunk is the BEVERY file. At first I thought this file was mostly text data, but it turns out it also contains variables. Actual runtime state. It is basically a snapshot of memory.
So instead of trying to emulate that directly, I added a way to read that snapshot and extract the values I care about. Things like strings and variables can now be located and interpreted from that data.
Ztats screen and overflow
The Ztats screen is now working, including scrolling through items. One funny detail is that in the original game, the text can overflow and scroll in a way you almost never see in normal gameplay. You would need to have basically everything. Still, it is there, and now it behaves properly here too.

Inform command
The Inform command now tells you what tile you are standing on. This is one of those small things that many players would not use since its main use is to know the name of the city, castle or dungeon your are standing over.
Seamless overworld
The overworld no longer has borders. You can just keep walking in any direction and the world wraps naturally.
Ready command
The Ready command is now implemented for weapons, armors, and spells. This one is interesting because the input rules are not consistent. Weapons use two letters, armors use one, spells have their own quirks. Recreating that input behavior ended up being more about observation than guessing.

Combat and encounters
Enemies can now spawn and attack the player.
Encounters happen as you move, and once active, enemies get their own turn to retaliate. It is not just visual anymore, there is an actual back and forth. You can also try to avoid encounters by moving away. Sometimes it works, sometimes it does not. You can also attack with your current weapon, the only thing missing its using magic spells.

Console improvements
Messages can now be queued instead of instantly replacing each other, and some of them can flash.
Death and resurrection
There is now a proper resurrection routine. When you die, you lose your weapons, your state gets partially reset, and you are placed back into the world.
While looking into this, I found that the original game can respawn you in completely invalid places like water or mountains, which can leave you stuck until you die again.
That behavior is documented, but in this version I am avoiding those cases so the player does not end up in a dead loop.
Video showcase
Where things are now
The important part is not any individual feature, but how they interact:
- you move around a continuous world
- encounters can happen
- enemies attack
- you can attack back
- you can try to escape
- you can die
- you come back and continue
That loop is now there.
There is still a lot missing. Towns, dungeons, quests, the space section, Mondain himself. But now there is a foundation where those systems can plug in.