XaiJu
Zaggy Norse
Zaggy Norse

patreon


Progress update: June 2023

Hello from an unpleasantly cold winter. Covid-be-gone. This is going to be a more technical post, so if you're not interested in some of the nitty-gritty of Ren'Py development, feel free to pass it over. I just wanted to make it clear that lots of stuff is still happening on the game :)

So with 0.5 wrapped, my focus has shifted to making the technical improvements needed to implement the remainder of the game. This has focused on three major areas: game state improvements, dynamic content support, and UI enhancements.

Game State Improvements

The LOTM game state has been kept deliberately simple so far. I use `default`-driven named stores to scope both the player and NPC properties, using consistent properties across all NPCs to keep things clean. My initial research made it clear that this was the most reliable way to ensure savegame compatibility as time went on.

Having worked with the game longer, I now have a better idea of what information I want to track for NPCs. Named stores work well, but they're tiresome when you have as many characters as LOTM does, even if it'd mostly be during dev time. The risk of overlooking one character to change grows every time you make an alteration. Therefore, I'll be switching to an object-based approach whereby each NPC is an instance of a class that I can then modify just once to affect all characters. This will allow me to add some of the new character properties I've been planning very easily. It's not a perfect solution, because new properties need to be initialised correctly for existing instances, but that can be handled with the save events.

That's the next big state change coming: a proper save game migrator. A new variable will be added which tracks the internal version of a given save, and then steps through code to make whatever changes are needed to synchronise it to the current version. I already track every single change to the code with a Git process that autocommits every night, so I simply need to look at the entire changelog once a new build is done to see any variable changes made and then ensure the save migration process handles them. I'm confident this will allow me to keep saves functional from the current 0.5 version up until the final 1.0 release.

I upgraded to Ren'Py 8 back in 0.4 (or maybe 0.5, can't remember) which bumped the version of Python from 2.x to 3.x, which is great because now I can use native Python enums to store stuff instead of faking it with generic objects. All game state will be moved over to a whole new set of formal enums, which will greatly reduce the chance of an error on my side by mis-allocating a new variable's offset, as well as making the code much more readable.

Finally, I'll be implementing persistent (aka. cross-save) variables to make the new gallery work as expected. Currently the information about which CGs you should see is only expressed in terms of global game state, meaning if you do multiple playthroughs, each playthrough would only see whatever CGs you unlocked in it. When loading a savegame in 0.6 or up, all global state will be parsed and the necessary cross-save state created. If you have multiple saves, loading each one in turn will ensure all your decisions are accounted for, and the gallery will be fully populated. This will apply to both the art and story galleries.


Dynamic Content Support

Dynamic content refers to the upcoming system whereby the Porn Director code can choose between multiple options when certain routes play out. These options are categorised in various ways, such as which kinks they include and what time of day they play out. What I'm working on now is how to make it as easy as possible to add these pieces of dynamic content later by doing the up-front work now. I expect to end up defining a new named store with a bunch of hardcoded variables like `scene` which is a list of `Scene` objects. Those objects will self-register (or possibly use a global function call) during the `init python` phase of each RPY file, allowing the Porn Director to later iterate that list and find relevant stories to tell. The self-registration will include a list of label names inside the .rpy, along with the associated metadata, allowing the main game to jump around between content in a seamless and (if I do say so myself) very elegant manner. There will be more parameters than simply those; even if I don't end up using them, I want to try to think of all possible options now to make my life easier later. For example, a dynamic function that can decide on the fly if a given piece of content is valid based on the current enum state. This is the part of the code I'm most excited for and am spending the most time on. It shall be....perfect.


UI Enhancements

This is my fancy way of saying "gallery time". Now that CGs have started coming in, it's time to do this. What makes it tricky is that it's not simply a visual gallery, but also a text-based one, where you can jump into a previously unlocked sex scene and re-experience it. Sex scene text can differ based on the state of some variables (including some you may alter later on in the game), which means I need to capture a snapshot of the important state at the moment you unlock the scene and use that snapshotted state instead of the global state when rerunning the scene. I also need to add new labels to allow you to jump to those points in the game and jump back when done (instead of continuing on from that point). It's all very doable using my intermediate format, I just need to sit and do it. Ren'Py's UI language is...esoteric is a polite word for it. But I need to get more familiar with it anyway, so this is as good a chance as ever.

I'll also be adding a new section to the options menu named Kink Filter (or something better, comment below with suggestions) which will use the fetishes registered by the dynamic content system to let you toggle the kinks you want to see. This system will superceded the current system for unlocking the, ah, filial and paternal affection portions of the game. Those will be moved into a piece of dynamic content which is physically separate from the game, which you'll need to download from Discord and drop into your game folder to unlock. The same will apply to all other strong fetish content (watersports? in MY Zaggy Norse porn game? It's more likely than you think!). Check out the "Extra Content" subforum on the Discord for more information going forward.

----------

So there we are. Lots of exciting work happening in the background to supercharge the next release. It's going to be great :) Got questions? Ask below, or on Discord. See you soon.

Zaggy


More Creators