Esoteric Update #265 - You Wouldn't Serialise A Whole Class


Okay, this week went well, but in a bit of a technical direction, so sorry, the update won't be very visual. I want to mention a few separate topics and then make a little announcement.

So, firstly, one of the APIs we use for randomised content went down. We'll be thus replacing the way we serve horoscopes in the game (yes, this is a silly little thing). Regardless of the severity of this issue, we've generated a few hundred horoscopes (that were then edited by a human). This should be a good enough replacement for the moment.

Secondly, we've made a significant improvement to the mind maps feature. I extended the mind map code so that they could remember their position. This means every interaction no longer snaps you back to the core node. We needed this due to how mind maps are used in the adventure (and will be used in other adventures) for UX reasons, but it improves the interactions with all mind maps overall, making the game more user-friendly.

Thirdly, I took another look at the coding that caused me so many issues last time, and I managed to get it to work. Specifically, we now have proper serialisation for JS data. If you are familiar with the topic, you might ask if that's just JSON. But no, JSON is inappropriate for our use case for multiple reasons. We now have serialisation for data, which respects references, functions, and even class prototypes. (The code is based on the Cereal library but extended to meet our needs.) This isn't usually done, and in a network setting, it might even be dangerous, but since we're running this boxed up, it's fine and allows us to store the data we need to store. See, I recently mentioned libraries having events that can trigger during save and load (and a few other moments in the game). These events now use this new serialisation to store JS data, meaning we now have a persistent JS state when we need more complex JS code operating in the background. Which, yes, is something we need for a few things we've long been working on. Anyway, I feel good about overcoming these issues; without this working, we'd need to find much, much worse workarounds for our data storage problems.

Finally, I managed to progress the issue of placing critical items in the adventure. This solution is based on a specialised application of the Constraint Satisfaction Problem approach I described some time ago. That approach made some additional assumptions about the map itself being randomly generated, but we decided to get away from that for now. I'll still need to test this, but it's likely sufficient to cover all our needs.

Now for the announcement. I need to take a break — one week. I'm not sick again or anything like that; my normal work is just giving me a squeeze right now. I need about a week to get everything under control and should get extra time off afterwards.

Anyway, the next update is going to be on the 29th.

Get Esoteric ♥ Esoterica

Comments

Log in with itch.io to leave a comment.

i hope you get to rest well! i found your game last week, and needless to say i was very impressed with the interface, and the world building of the story. thank you so much!! please take care.

I'm not resting. It's more like I'm working overtime, just not on the game. Crunch happens, I guess.

Oh looks like you got a nice amount of work done! Happy that you were able to figure out the code you were having trouble with. I hope you have a great break :3👍🏼

(+1)

The "break" is exhausting.

Oh that’s not good to hear. I hope you’ll at least manage to get some rest tho