v0.3.7 - v0.3.9 Released

So, I've been a busy coder this week.

Nearly every day this week I've pushed a client, server, or both a client and server update in order to incrementally improve the game's turn-processing performance.

Performance is now noticeably better, with round-trip turn processing logic taking about half a second or less (my goal is 300 milliseconds).

What I've found is that some of my design decisions early on are having profound implications on the scope of the performance issue. Most notably, I'm not using a server-side data store for game state, so the entire game state needs to go to the server with every move and a modified state goes back to the game client. This is also necessary due to the highly destructible nature of the game world (one of my favorite features thus far).

So, I've had to work on making performance faster by:

  • Reducing the time it takes the server to respond to a message
  • Compressing messages in flight, making the message smaller and faster to serialize
  • Finding more efficient ways of serializing the game world
  • Using WebSockets to reduce the overhead of sending messages by keeping connections open

Overall, I'm really happy with how things have come along. I've upgraded to .NET Core 2.1 using SignalR for WebSocket communication, the JSON to represent the game world is roughly 1/10 of the size it used to be (I'm omitting properties with default values and finding more streamlined ways of representing common objects, particularly coordinate positions).

While I'd like things to be a little zippier (and have some ideas around that involving memory caching on the server-side), I think this is as fast as we're going to be for awhile, and it's high time I got back to feature work.

So tomorrow I begin work on some new improvements around representing damage in the game world and building a framework for future improvements.

Beyond that, next week's sprint will focus on pickups, text inside of the game world, and finally adding that virus faction.

I plan on continuing to release frequently and iteratively as features complete. That's good news, because fun times are definitely ahead.

Leave a comment

Log in with itch.io to leave a comment.