Serious Snapshots - Development Log #330

Michi talks snapshotting, and Nick reminds everyone that the Steam launch is next week on April 20!

Avatar Michi

Michi (molp)

With the Steam release coming up, it was about time to release one of the biggest technical changes we did in the last time: actor snapshotting. It is an entirely technical topic, and we have been working on it for the last couple of weeks. The goal was to make the servers stabler and faster. Unfortunately, there is no new gameplay mechanic being released with it or anything similar from which the players can profit directly, but we simply could not postpone the technical problems any longer.

In devlog #322 the mechanism behind the changes was described:

[..] we are slowly but surely running into performance problems. Restarting the servers or just a single node, after a failure, takes longer and longer since the game's entities (think companies, user, commodity exchanges, stations, planets, …) grow larger and larger. Right now, the average loading time for a company is around 22 seconds, a user 11 seconds. Given that there are many companies, these numbers add up fast. Anyway, there is an easy, albeit labor-intensive, fix for the problem: snapshotting the entities. Instead of keeping all the events of an entity, we can store (and load) a snapshot for every x events to reduce the loading times by a factor of 100 or even more. [..] We will get started on other types of entities as soon as possible.

On Thursday, we deployed snapshotting for a whole host of different entity types. Although we wrote many automatic tests for the snapshotting process, we experienced some bugs once the snapshots came in contact with live production data. Given how big of a change this update was, the bugs we experienced have been manageable. I admit it has been a really long workday, but in the end everything was up and running again. Most of the issues we encountered could be fixed immediately and in an automatic way. We only saw one bug that produced inconsistent data in the database. Luckily it only affected a couple of entities, which could be fixed quickly with some manual edits.

After everything, I am really happy that snapshotting is now in production :)

By the way, since I had to change the internal data format that the commodity exchange brokers use during the snapshotting implementation, I decided to adjust the way the candles are displayed in the CX graphs. Before the change, every candle's opening price was automatically set to the last candle's closing price. This leads to very nice looking charts, but in the end it is not correct. The open and close price of each candle should only depend on the trades within the candle's time interval. Since the typical broker of PrUn doesn't see as many trades as a real world stock or crypto asset, the graphs can look sparse or jagged:

sparse chart

jagged chart

Avatar Nick

Nick

Last week was dedicated to getting everything ready for the Steam launch on the marketing side. I was busy editing videos, which I think came out really great from some of the players. I also worked on newsletters, press content, and adjusting assets on Steam itself. The launch is next week, so make sure you have your calendars marked and help support us by leaving a review and/or wishlisting the game. We also should have a big influencer video coming out around the time of the launch to really help get the Steam verision off to a good start. If any of you would be interested in streaming the game on April 20 then please let me know!

As always: we'd love to hear what you think: join us on Discord or the forums!

Happy trading!