Logic World Wednesdays: The Triumphant Return

by @MouseHatGamesDeveloper8 months ago

After a refreshing and rejuvenating break, we are back and hard at work on Logic World! 2021 is going to be an excellent year for this game, and we couldn’t be more excited about making it for you. So, without further ado, let’s get into what we’ve been working on this week!

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.

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.

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:

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 on Steam and join the official Discord.

See you next Wednesday!

More Logic World Wednesdays


8 comments
@Admin8 months ago

Sell me this beta.

@JimmyDeveloper8 months ago

I really appreciate your enthusiasm, but the volume of feedback and bug reports we’re receiving with this small tester group is already overwhelming. We’re holding off on adding more testers until the game is more polished and bug-free.

The wait for the full release should not be too much longer now. Hang in there friendo

@Ecconia8 months ago (edited8 months ago)

Welcome back to development :)

Multiplayer GUI:
The Multiplayer-GUI looks decent! (An alternative to a deletion confirm button would be an “undo” option, but that are thoughts for post release).

Auth modes:
In the mode without verification, how/where does one set his/her username?
The two simple modes seem very good already. I see a few problems with the third option though.
Your argument of “making it more difficult to quickly create accounts” is a very good one, for the users.

  • On your end however you have problems that very quickly like many usernames will be lost. And even worse, players will start to park usernames, just by creating accounts. Which action will you do against this problem? Requiring an email on account creation? (Would be one way). I could easily bypass that, since I own like a whole domain though. (Not that I want, I have my perfect username)
  • Further, if there is a more secure way, you need/have to ensure linking (payment confirmations) possibilities. Easy for Steam and your own Website for sure, but what about the other vendors you are using, especially the DRM free ones, which confirmation is valid. You should try to keep it fair at all cost, imagine on of these Vendors doesn’t send a confirmation code along. That player would be forced to buy the game again to play with Steam players.
  • But if I had a server, I would definitely set it to “only players who bought the game”, for the reasons you mentioned (and to only let #true fans in :P).
    So if its possible to fairly allow every buyer for every vendor to at all time (without storing file or key) confirm their purchase on your website, GO FOR IT! Else… tricky, I would like it though. (And yep I would also prefer to play on servers who have it on).

Mice and Nice:
Test the hell out of it!

Theme Editor:
In fact I thought of it recently, so yeah its nice! Not that I gonna use it… But nice.

Nutshell:
If you keep it going you eventually will start to fix the actual game!!! (Jk you have many fixes there - all good).
PS: Nobody uses the comment section sad

@JimmyDeveloper8 months ago

Welcome back to development :)

The Multiplayer-GUI looks decent!

Thank you, and thank you! 😄

An alternative to a deletion confirm button would be an “undo” option

Undo delete is tricky here. We’d need to display to the user with the UI somehow that undo is an option, or they won’t know about it. And I’m not sure of a good way to display that option that wouldn’t be cluttery and awkward. But if you need faster deleting, then the confirmation dialog will be skipped if you hold “shift” while pressing delete. (This is true of every place in the game with a delete confirmation dialog.)

Regardless, removing a saved server from the list is a task that most folks won’t be doing very frequently, so making the workflow really smooth here isn’t a super high priority – as you mentioned :)

Auth modes:
In the mode without verification, how/where does one set his/her username?

As @Ry mentioned, this is done in a text box in the Settings menu under the Multiplayer tab. Default offline usernames are randomized so there won’t be conflicts.

Which action will you do against this problem? Requiring an email on account creation?

An email is already required on account creation. You’re right that this is not terribly difficult to bypass for somebody determined to cause trouble.

Further, if there is a more secure way, you need/have to ensure linking (payment confirmations) possibilities.

We definitely wouldn’t do a Super-Verified mode unless it would work with every retailer that officially sells the game.

Thank you for all your thoughts on authentication modes, I appreciate it!

Nutshell: If you keep it going you eventually will start to fix the actual game!!! (Jk you have many fixes there - all good).

Dab!!

PS: Nobody uses the comment section sad

I think this is mostly because the comment section interface is a bit janky right now. The comments section was used much more on the old site, but the remake a few months ago had several downgrades in terms of UI. Felipe and I have talked about this, and he’ll be improving things soon, but webdev has been a bit slow recently because he’s so busy with school.

Regardless, thank you for using them :)

@Ecconia8 months ago (edited8 months ago)

Awesome!

a good way to display that option that wouldn’t be cluttery and awkward

Definitely also my main concern, thus definitely (if ever) post-release.
But if you can skip the delete dialogs with shift, there is nothing to complain :)

comment section interface is a bit janky right now

It actually works quite fine… ignoring the facts: When editing a message, the text-field is “small” (for my style of messages), and the freshly reported issue, that email-links to comments result in a 404. And another point which might scare people is, that there is no shift-enter -> newline. So no reason to complain or? :P (Oh and no images - another big point - fine for me though)

But hey, I have a whole thread on this website full of reports, lets go at pipe01’s pace. School goes first.

@Ry8 months ago

There is a setting called “Offline Name” which is the name used when your offline or on a non-verified server. it is in the multiplayer tab

@Ecconia8 months ago

Thanks for telling me :)

@Vykori8 months ago

Ecconia just fyi I love your in-depth thoughts and ramblings.

p.s. I use the comment section <3