9/20/2021 in devlog
We are hiring! We are looking for a Community Manager for AirlineSim, simulogics' other expert game. Help us spread the word among your friends and family that might be interested.
I continued where I stopped last week - helping out with the mobile version of Prosperous Universe. Since a lot of programming so far has been done by Martin and a freelancer, it is easier to see and use the mobile version from a player's perspective. I created many new companies, setup production lines, moved inventory, traded and so on, to get a feeling how the mobile version works and where it lacks usability. Obviously I also tried to fix these things as I encountered them ;) It doesn't really make sense to go into the details, but I want to share at least one thing, every player can relate to and that is the paginated tables. You might know them from commands like
FXOS, but also from the list of pending contracts in the sidebar. It looks like this:
The table shows a fixed amount of entries, and at the bottom there is a control element that allows for switching between pages. This component does not take into account the amount of space available, leading to situations where you have to scroll down to access the controls, and back up to see the start of the line.
This is not ideal, so I replaced these paginated tables with ones that use endless scrolling. In case you are not familiar with the term, this basically means that the table shows a certain number of elements, and once you scroll down it automatically loads the next batch of elements. This process is repeated until the end of the list is reached. This pattern is quite ubiquitous these days, especially on social media sites. Here is how it looks in PrUn:
I'm back from my vacation in Iceland, which was lots of fun doing outdoor things. Unfortunatley I got really sick on the way back and had to take several days to recover. Thankfully it was not COVID and I am feeling much better. Because of all that, I don't have much to report this week but you might have noticed our super cool post in the MMORPG subreddit. You should definitely go take a look and encourage anyone that may have questions about PrUn. Looking forward to bringing in even more players soon!
Just like Michi, I continued my work on the mobile UI. I also started looking into a topic that we already knew we had to tackle years ago, but which we continously postponed to "when we actually have the problem" - entity snapshotting. We frequently reboot the game server to apply patches. Whenever we do so, the game is usually unresponsive for several minutes. The reason for this is that each entity in the game (like companies, but also things like the factions star systems) has to recreate its current state and - as some of the regular readers of this devlog might know - this currently happens by replaying the whole history of that entity. In case of old and/or very active entities, this can amount to tens of thousands of events and consequently recovery times in the range of minutes - per entity! When you see the dreaded "hydration timeout" after a reboot, in 99.99% of cases it's the respective entity still loading its state and not being ready to respond to queries yet. Long story short: The obvious fix to this problem is to have frequent snapshots of entities so they only have to load and apply the events that happened after the latest snapshot, drastically speeding up recovery. The reason we haven't tackled this yet is that serialization of an entity's state comes with its own problems and complexities, and we didn't want to invest the time required to solve these problems before actually running into performance issues. Now, with a lot more players coming into the game and alpha tests generally lasting longer than originally anticipated, snapshotting will become really important really soon.
In other news, I am somewhat hopeful that I have finally killed the "stuck queue bug" that kept account updates from being applied in the game. This was really annoying because a.) players had to wait after paying for PRO to actually be able to use it and b.) the only workaround was to reboot the server (which is annoying for the reasons outlined in detail above). Fingers crossed it's actually gone for good!