1. Logic World
  2. News

Logic World News

Logic World Wednesdays: Farewell to 2020

Performant Building - Jimmy


This week I've been optimizing Logic World's building mechanics. When you create or destroy a large amount of objects simultaneously, that should be as fast and fluid as possible, and I've made a lot of progress on that front.

[previewyoutube][/previewyoutube]


Finished server authentication - Felipe


A while ago I shared my plans for a system that would allow game servers to verify the authenticity of the players that connect to it. This week I've implemented the final features of that system. Now, when in online mode, the server will retrieve the player's name from their authentication payload. This prevents a client from logging in as a user and send another user's username, since now the server will ignore the username that the client sent.

So, Logic World servers can now officially require online verification! Players will be denied connection to online-mode servers unless they are logged in and verified with logicworld.net. This allows you to have banlists and whitelists that actually work, as players can now prove they are who they say they are.

This entire system is optional, you just need to enable offline mode in the server's settings and users will not be verified, which also means that no logicworld.net account and no internet connection would be necessary. It's important that you're in control of your game, and we'll never require that you connect to our servers to play Logic World.


Server discovery - Felipe


Before connecting to a server, you most likely want to know some information about it, like Message of the Day) or how many players there currently are in it. I've implemented a system for requesting and retrieving this information, in preparation for Jimmy's multiplayer menu. You can now request discovery information from a specific server (by its IP), or from all the servers in your local network. This last feature will make it really easy to connect to a server that someone else in your network is hosting, you won't even need to know their IP!


Multiplayer Menu Progress - Jimmy


As Felipe mentioned above, I've been working a little on the server list. There will be three tabs: your list of saved servers, discovered servers and open singleplayer games on your local network, and all games your friends are playing in, so you can easily join them.

The server list isn't done, but I have finished the Direct Connect popup. Finally, Logic World has a way to connect to a server using a menu!



Some fun things about the Direct Connect popup:
  • It remembers the most recent IP you typed in. (Passwords are currently not remembered, but most servers won't have a password anyways)
  • The password box has a button to toggle password visibility
  • As soon as you open the popup, the Server IP text box is fully selected, so you can start typing/pasting an IP immediately
  • The two text boxes can be switched between with the tab key
  • Hitting Enter in either text box will start a connection to the server

It's simple, but it does its job darn well, I think. I look forward to finishing the multiplayer menu -- I'll make a video about it when I do :D


Bugs Fixed This Week
  • Fixed some simulation bugs that could occur when deleting components with wires attached to them
  • Fixed not being able to connect to a server when signed in to your logicworld.net account
  • Fixed crazy lag that could sometimes happen when managing your hotbar
  • Fixed search box text being cut off if you typed too much in it
  • Fixed the "disconnected" screen not displaying the reason for disconnection
  • Fixed popups not being removed properly in some circumstances
  • Fixed not being able to connect to a server when logged in



Reflections


It's been a big year for everyone.

For Mouse Hat Games, 2020 was the year we came into our own as game creators. On January 1st, we sort of knew what we were doing. But today, in the dusk of this year, we quite solidly know what we are doing. For two self-taught kids, that's an amazing and empowering feeling. We could not be more excited to finish Logic World and get it into your hands.

Thank you for being on this journey with us. We're going to take a week or two off for the holidays, but we'll see you soon on a Wednesday in 2021 -- the year Logic World finally releases!

Xmas builds are from Brown Falcon TV, and were built today live on stream!

Take care, friends, and happy holidays ❤

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

View this post on logicworld.net

More Logic World Wednesdays

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

Logic World Wednesdays: The Aural Edition

Optimizations - Jimmy


I've been working on various optimizations to speed up Logic World, and this week I've significantly improved the circuit simulation performance. I made a little video to demonstrate gameplay in an insanely demanding world before and after the optimizations.

[previewyoutube][/previewyoutube]


Moddable Sound Effects - Jimmy


Historically, sound effects in Logic World have been closed, hardcoded things. Mods could play the built-in sound effects, but it was difficult if not impossible for them to add custom sound effects. It was also an annoying amount of work for us to add new hardcoded sounds.

Well, this week I redid our sound effect system, and sounds are now loaded from disk at runtime. Adding a new sound effect, for us or for modders, is as easy as dropping a .wav or .ogg into your mod folder and writing a small data file.




Ground Types - Jimmy


Taking advantage of the new easy sound effects, I've added a system for custom ground types. Every point on any object can declare its ground type, and each ground type can declare a specific sound effect for players that walk or jump or land on it. I've also been experimenting with ground types that affect the movement logic of players walking on them.

[previewyoutube][/previewyoutube]

Ground types are the latest in my series of tools to help me build epic environments for doing logic in. I'm super excited about these worlds, and I can't wait to show them to you in forthcoming Wednesdays :D


Bugs Fixed This Week
  • Fixed non-connected input pegs sharing a circuit state with some random piece of circuitry in worlds that have filled up all the starting circuit state indexes
  • Fixed a couple issues preventing you from loading a second save after already doing so once in a given session
  • Fixed exclusive pegs not having a deterministic update order relative to components
  • Fixed some potential issues with unconnected exclusive pegs
  • Fixed music not playing if the path to the music contained a '#' or a '%' or was a UNC path or various other edge cases


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

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 or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

View this post on logicworld.net

More Logic World Wednesdays

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

Logic World Wednesdays: The Stochastic Edition

Moar Awesome Character Movement - Jimmy


I've been working on character movement logic, to ensure it feels smooth and pleasant in all situations. You're going to be using the character controller pretty much every single second while you're playing Logic World, so it's important that the movement logic is really solid.

[previewyoutube][/previewyoutube]


Terrain Tech - Jimmy


As I spoke about last week, one of my main tasks for this month is to create awesome environments for you to build circuits in. It's time to put the 'world' in Logic World.

To that end, I've been working on environment tech and tooling this week. I've got a bunch of really cool stuff in the pipeline, but today I want to show you two particular shader features for rendering ground textures.

[h2]Stochastic Texturing[/h2]

Human brains are finely tuned for pattern recognition. So when a game uses a repeating texture, we can easily spot the repetition. We see the grid lines, and it looks "fake".



There are a number of ways to solve this problem, and I did research into many of them this week. The solution I've chosen is procedural stochastic texturing, a technique invented by Eric Heitz and Fabrice Neyret in 2018. Stochastic texturing is fast, it looks amazing, and it's incredibly easy to set up.



The algorithm works by taking random hexagonal samples of the tiled texture, rotating them randomly, then laying the samples out on a hexagonal grid and blending them together. This, in my opinion, is absolutely bloody genius. There's a great visualization of how it works on page 5 of the research paper.

Logic World will use a particular implementation of stochastic texturing developed by Jason Booth for his Microsplat tool. This implementation uses texture heightmaps to blend the samples, to ensure the blends are super high quality with no visible seams.

[h2]Triplanar Mapping[/h2]

A common issue with terrain in video games is that the textures are typically projected onto the terrain from above. This results in very ugly and gross stretching of the textures on steep slopes.



A common and effective solution to this problem is triplanar mapping. This technique uses three projections of the texture, one for each plane in 3D space. The projection used for a particular point on the terrain is determined by the normal to the surface there. At the borders between projections, they are blended together.



I want to build lots of lovely cliffs and mountains. With triplanar mapping, they are sure to look their best 😊


More mice - Felipe


This week I haven't had much time to dedicate to Logic World since I'm preparing for more final exams, but regardless I have made progress on mice, my new microservice library. More specifically, I've been working on migrating all our existing services to this library, which is just tedious work since I have to go one by one.


Bugs Fixed This Week
  • Fixed player vertical flying speed not changing proportionally with player scale
  • Fixed "Player Gravity Scale" slider being adjusted in increments of 1.0 instead of 0.1

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

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 or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

View this post on logicworld.net

More Logic World Wednesdays

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

Logic World Wednesdays: The Upside-Down Edition

Arbitrary World Gravity - Jimmy


For a long time, I've felt that one of the biggest flaws of Logic World is its uninteresting backgrounds. The circuits themselves are super cool, but we need cooler places to build those circuits.

One of my main tasks for December is to add more and beautiful world types to the game. This week I've implemented an awesome tool that will help me to create these worlds: arbitrary world gravity.

[previewyoutube][/previewyoutube]

I forgot to mention it in the video, but the gravity system is totally open to modders. When you mod in a world type, you can control exactly how the gravity works; you can use one of the built-in gravity rules, or program your own.


Bugs Fixed This Week
  • Fixed visual teleport errors if the teleport exit had a different rotation or scale from the teleport entrance
  • Fixed incorrect player capsule rotation in Chairs
  • Fixed missing lighting data on Grasslands
  • Fixed '\\' not being correctly detected and replaced when validating file names for sandboxes and saved boards

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

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 or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

View this post on logicworld.net

More Logic World Wednesdays

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

Logic World Wednesdays: The Safe Edition

Yet More Chat Upgrades - Jimmy


I've finally finished with the chat, after two previous videos on it! I've added some security features to prevent you from being tricked by a malicious link sent in chat, and the chat window is now used for telling players some game information.

[previewyoutube][/previewyoutube]

Shoutout to the many, many people who expressed concerns last week about link security. I was initially going to be lazy and not add the popup, trusting users to take care of their own safety. But that was a bad and irresponsible way of thinking, and y'all called me out on that and held me accountable. Cheers!


Mice: my new microservice framework - Felipe


The Logic World website backend is made up of many different and small services written in Go, each of which takes care of a single "feature", for example comments, ratings, posts, etc. We use Kubernetes in order to manage all of these applications, which takes care of starting them up and scaling them when needed.

Each of these services needs some way of communicating with each other, which was being achieved using the Go Micro framework. This framework in turn leveraged gRPC in order to provide inter-service communication, as well as some other features like events and configuration. This worked just fine, however the Micro library underwent some breaking changes, and it was overall a slight pain to work with, so I jumped the gun and started to write my own library, called Mice.

Mice is lighter and simpler, and it will help me develop Logic World's web architecture faster, while also removing unnecessary overhead from the services. Mice is still not quite at production level since there's still more testing left to do, as well as some features that our services need, like events. Once all that's done I will begin migrating all services to this new framework, which should hopefully not be too hard since Micro's and Mice's APIs are quite similar.


Text Box Settings - Jimmy


As you may know, I struggle with an addiction to adding settings to Logic World. This week I channeled that into some settings for customizing the caret in text boxes.

[previewyoutube][/previewyoutube]


Bugs Fixed This Week


  • Fixed various bugs with the markdown renderer
  • Fixed issues with caching links in text, leading to apparent clickable links on regular, non-link text
  • Fixed some situations where HoverTags could become stuck open

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

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 or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

View this post on logicworld.net

More Logic World Wednesdays

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