This week I’ve finally finished the user interface for editing your controls!
As you can see from the video, the input system and the interface that supports it are incredibly complex. Programming it all was a very fun challenge.
As you probably have already noticed, we now have a brand new site! I’ve been remaking the website into a bunch of separate services (coded in Go), instead of the single big application that it was before. This has the advantage of being much easier to iterate on, as there is less code that has to be compiled for a single change, as well as being easier to test since each service can be tested independently from each other.
I’m still working out the kinks on the new site, re-adding missing features, and improving the visuals, so expect lots of updates to it in the near future. Now that the new site is live, I don’t have to worry about maintaining the old site, and I can focus completely on this new version.
This week I’ve also been working on the system that will allow you to join your friends’ games. We intend for this feature to be as easy as possible to use, requiring just a single click from the user’s point of view.
This is achieved through UDP hole punching, which bypasses the most common NATs and in turn removing the need for you to forward any ports at all. Hole punching consists of 3 parties: a client, a server and a master server. In our case, the client is the user that wants to connect to a game, the server is the user that’s already in-game, and the master server is our cloud server.
When the client wants to connect to the server, it first sends a request to the master server and asks for information about the server (that has previously been registered). When this happens, the master also sends information about the client to the server, and finally they both are able to connect through the tunnel that has been established.
That was a very simplified explanation, if you want more details you can check out this paper that really helped me fully understand it.
The proof of concept is done: I have successfully joined another instance of Logic World running on a remote PC – Bob, to be precise – without any port-forwarding. The next step is to integrate this logic with the game UI and Friends system.
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!