1. Logic World
  2. News
  3. Logic World Wednesdays: The Triumphant Return

Logic World Wednesdays: The Triumphant Return

Multiplayer Menu and Networking Upgrades - Jimmy


The first big task I tackled when I returned from vacation was to make the Multiplayer Menu! I'm really pleased with how it turned out, under the hood it's one of the most complex menus I've ever made.

[previewyoutube][/previewyoutube]

The Multiplayer Menu requires a lot of networking functionality, and so while I was working on the menu I took the opportunity to beef up our network code. There were many lovely upgrades, but the two highlights are:

  1. IPv6 networking is now fully supported, so we're future-proofed in that regard until something crazy happens that requires undecillions of network addresses. The default network protocol is IPv6 Dual-Stack -- meaning connections to both IPv6 endpoints and IPv4 endpoints are allowed -- but you can also choose to run both clients and servers in exclusive IPv6 or in IPv4.
  2. You can now connect to servers by hostname instead of just by raw IPs. So if you own, for example, "EpicPeanutButter.com", you can host your server at that address, and others can type that into the game and connect to it. Previously you could only use raw IPs, which look much less interesting -- usually something like this: "217.160.0.132".

Making this menu was very difficult and time-consuming, far more so than I expected going in. I had a lot of fun learning about networking, but I'm really glad I never have to do it again.


Seeking your feedback on server authentication modes


As can be seen in the video above, there are presently two authentication modes for Logic World servers: Unverified and Verified. Unverified servers will allow any player to join, with any username, and this identity is not checked at all. Verified servers only allow players to join who are logged into their logicworld.​net account, and it is impossible to fake your identity to a verified server.

Verified mode is useful when you want to have a whitelist of players who are allowed to connect to your server; only the people who are really on your whitelist will be able to connect. But it's less useful if you want to have a public server and ban players from it. Because creating a logicworld.​net account is free, a banned player can simply create a new identity and rejoin your server.

With this in mind, we are considering the addition of a third authentication mode to servers, "Super-Verified". In Super-Verified mode, the server would only allow connections from players who are logged into their logicworld.​net account, and whose accounts are verified owners of Logic World. This means that to evade a ban, a player would have to buy another copy of the game, which they are a lot less likely to do than simply create a new account for free. However, Super-Verified mode would introduce hassle for players; unless you purchased directly from logicworld.​net, you would be required to link your logicworld.​net account with the account you purchased the game on (i.e. Steam) before connecting to a Super-Verified server.

We've been discussing this and we aren't sure how to proceed or how useful such a feature would be. And so, we ask you -- would you like Logic World to have a Super-Verified mode? If you're interested in hosting a server, would you turn it on? If you're interested in playing on servers, would you prefer to play on servers that have it on?

Let us know in the comments, on discord, or in an email :)


Mice are Nice - Felipe


When I returned from my vacation, the first thing I needed to do was to test the services that I had migrated from Nitro to mice. I could have just created a "test" service that was hard-coded to call certain methods on certain services, but that's a very inflexible way of doing it. With that in mind, I started the MiceUI project. This project consists of an Electron application that lets you load protobuf files containing the method definitions of a given service, and then lets you send requests to the service instance and inspect the response.



This tool will let me test each and every one of a service's endpoints, making sure that the service is working as it should. In the future I plan on upgrading MiceUI with some sort of test suites, automating the process of E2E testing and even integrating it into the site's CI pipeline.


In-Game Theme Editor - Jimmy


Many of our beta testers have been playing with the menu themes capability of LogicUI, and many more of you in the community have voiced interest in doing so. Until now, making new themes was very difficult, requiring tedious manual editing of individual RGB values in a config file, and you'd have to restart the game to view the results of your labor. I decided to make this process easier, and added some in-game UI for making a custom menu theme.

[previewyoutube][/previewyoutube]


Even Beta than Ever


We've added several new testers to our internal beta! These lovely folks are helping us track down bugs, giving great feedback about features, and making cool content to showcase the current state of the game. There is a bunch of said cool content in the #beta-content channel of our discord, so join us there if you haven't already and check it out!

And if you haven't seen it yet, shortly into the break we held a big multiplayer playsession with a bunch of the beta testers. Jimmy's perspective of that event is up on youtube:

[previewyoutube][/previewyoutube]

I mentioned that the testers have been helping us find bugs, and well, holy moly they've helped us find a lot of bugs. An absolute tidal wave of them. Here are just the ones we've fixed...


Bugs Fixed Since Last Time
  • Fixed the "Pick Component" feature not properly recognizing the components already on your hotbar in some specific circumstances
  • Fixed world rotations being bad and glitchy for components placed on the environment with a non-standard up direction (i.e. on the side of a hill)
  • Fixed awkward-axis rotation being incorrect for grabbed boards placed on the environment with a non-standard up direction
  • Fixed Edit Title textbox not being properly selected when you create a new sandbox or saved board
  • Fixed linux version not starting up properly due to a file system error
  • Fixed linux version not loading some important resources from GameData which was causing a myriad cascade of issues
  • Fixed scroll wheel input direction being inverted on linux
  • Fixed scroll wheel having 1/120th sensitivity on linux
  • Fixed Keys going crazy when you try to press them if another player is in their range
  • Fixed server giving a Load Board response to every player on the server instead of just the player who requested to load the board
  • Fixed decorations on grabbed, cloned and loaded components not being tested for collision
  • Fixed missing flag graphics in Choose Language menu
  • Fixed double newlines in the beta start screen
  • Fixed "Realtime GI is not supported in Universal Pipeline" console spam
  • Fixed failure to connect to a server if another player makes changes to the world while you're connecting
  • Fixed moving and then deleting a socket causing server errors and sometimes corrupted saves
  • Fixed sockets not connecting properly after they've been moved
  • Fixed error and disconnection if another player moves/rotates/deletes the chair you're sitting in
  • Fixed various cases where the server could crash if a client sent them bogus data
  • Fixed component position/rotation imprecision issues within deeply nested stacks of many child components
  • Markdown renderer: fixed weird visuals on the first and last line of a list if that line is very long
  • Fixed changelog saying "2020" for all the dates in 2021 lol
  • Fixed client going to error screen if it tried to connect to an unverified server when the Logic World servers are unreachable
  • Fixed servers having a hard cap of 32 maximum players connected even if a higher value was set in the config file
  • Fixed servers crashing if a client sends garbage data in the discovery request packet
  • Fixed clients connecting to the wrong server sometimes
  • Clients now ignore the data instead of going to an error screen if a server sends garbage data in the discovery response packet
  • Fixed the volume sliders on music components having the incorrect range (0-10 instead of 1-100)
  • Fixed fatal error if you tried to delete a component on the same frame you modified its data (i.e. pressing a button and deleting it on the same frame)



SOCKS


This Christmas might possibly have been the best Christmas ever. Jimmy's mom and brother Andrew teamed up to make two pairs of got dang Logic World socks, giving one pair to Jimmy and sending the other across the ocean to Felipe.



Just look at those things. Absolutely fabulous.

---------------------------------------------

Thanks for reading our blog :) lots of fun stuff is coming up, so watch this space. We absolutely cannot wait to get this game done and into your hands.

To get updates on Logic World beamed directly into your inbox, you can sign up for our newsletter. Be sure also to wishlist Logic World right here on Steam and join the official Discord.

See you next Wednesday!

View this post on logicworld.net

More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/