Logic World Wednesdays: The Controlled Edition

by @MouseHatGames 2020-07-16

Editable Controls - Jimmy

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.

New Website - Felipe

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.

Perhaps most importantly though, is the fact that the site now doesn’t require JavaScript at all. It does use JS for some stuff but only QoL improvements: the entire site is 100% usable even with all JS disabled.

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.

Hole-punching - Felipe

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.

Bugs Fixed This Week

  • Fixed various issues with game input when there is no keyboard or mouse plugged in
  • Fixed not being able to bind Keys to buttons on a gamepad or joystick
  • Fixed not being able to bind Keys to mouse buttons or to scroll wheel actions

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

@stefan 2020-07-18

I don’t quite know how but my Name now is Stefan on the forum…

@AIdude 2020-07-19

No you are just too stupid to manage your accounts Stefan