Logic World Wednesdays: The Thursday Edition V

by @MouseHatGames 2020-03-20

The world flounders, but a beacon of stability shines brightly through the fog of panic and pandemic. That beacon is Logic World Wednesdays: ever on time, ever organized, ever punctilious. We are here for you when you need something dependable in your life.

Settings Menu Polish - Jimmy

This week I’ve made a number of improvements to the settings menu.

The machine in that video was built by the lovely @woox2k :)

Tracker Improvements - Felipe

This week I’ve been working on improving the tracker website that the beta testers are currently using for reporting bugs and other feedback.

Firstly, this week I’ve beautified the main page. You can now see each ticket’s creation date, type, status and ID.

tracker front page better.jpg

I’ve also added another property to tickets: it’s priority. It ranges from 1 to 4, from most to least important.

tracker priority.PNG

Thanks to these changes, it’s much easier for us to manage a large number of tickets. We can easily see what needs addressing.

More SECCS - Felipe

Last week I told you I was working on a rewrite of SECCS, our library for converterting arbitrary C# data into binary and back. This week I’ve continued this work and integrated the new SECCS into Logic World. It’s now correctly reading and writing all the packets, while also being much cleaner and easier to maintain! The next step is making it fast, since up to this point I’ve been focusing on readability over speed.

Robust Initialization - Jimmy

When Logic World connects to a server, there is a process of initialization wherein the connection is verified and established. Previously this process was very haphazard and error-prone; there were a number of cases where the initialization process would not complete properly and you’d get stuck on an infinite loading screen when you tried to connect.

This week I worked out and implemented a robust and reliable protocol for initialization. It’s a careful back-and-forth with verification at every step. It looks like this:

  1. Client requests connection with server. It sends approval information like the game version and the mods installed.
  2. Server approves connection
  3. Client verifies that the connection has been established
  4. Server sends the information needed to load into the game, such as the contents of the world and the other players currently on the server
  5. Client pauses processing of all incoming network messages (such as updates to the world) until it has fully loaded into the game
  6. Client informs the server that all is well and it has loaded into the game

This is on top of the UDP message reliability features built into Lidgren, our networking library.

Thanks to this new protocol, all the bugs with connection are fixed. You can connect to a server with other players in it, you can connect to a server with a huge world loaded, you can connect while someone else is disconnecting – it all works as it should, and I am a very satisfied developer.


We’ll keep releasing these weekly updates right up until the game comes out. To make sure you don’t miss them, you can sign up for our newsletter. Be sure also to wishlist Logic World on Steam and join the official Discord.

See you next Wednesday!

More Logic World Wednesdays


2 comments
@Stenodyon 2020-03-20

Nik reporting 99% of the bugs lol

The bug tracker looks awesome!

@Nik 2020-03-20

god damn I love how modular this game’s internal systems are. It’s so unexpected and so damn satisfying