Welcome back to another Logic World Wednesday! We’re back from the holidays, and the push for release is underway.
The world you’ve been seeing in the LWW videos has been sort of a placeholder. The ground was completely static, with no customization whatsoever.
This week I’ve begun an overhaul of the world, starting with a lovely ground shader. The shader supports custom colors, as well as dual-color checkerboard patterns.
When you create a world with a grid ground, you’ll be able to choose the color or colors used and the grid size. It’s worth noting that Logic World will support several different world types, and mods will have the ability to add world types. But that’s a topic for a future LWW :)
Over the holidays I’ve been working on documenting the Logic World mod API, known as LogicAPI. This documentation is done with XML comments in C#. When coding mods, Visual Studio will show what each method and class does while you’re typing. We are also going to upload a generated static site containing all of the documentation over at docs.logicworld.net. This is a preview of how it will look:
This site is generated by DocFX, and it will contain all the aforementioned code documentation as well as some concrete concepts that may require explaining.
We are also going to have a wiki at wiki.logicworld.net, which will contain broader modding guides and tutorials, as well as some other non-modding related info.
I have also been doing a big revamp of our cloud architecture:
Initially these services were written in C# just like the web application is, however, when migrating to Traefik I realised that every single application we were using in the server was written in Go. Go is a language that’s widely used in reliable and widely used software like Traefik, Caddy and Docker. This sparked an interest in Go inside of me, so I spent a few hours learning this new language and rewriting the logger service. This service is the simplest, all it does is receive messages from all the services and log them to the database, so I thought it would be the perfect opportunity to dip my toes in Go. When I was done writing this I noticed that the service was using just a fraction of the memory that the C# service was while being a lot more CPU efficient. To sum up, 5 out of the 7 services we currently have are written in Go.
Don’t get me wrong, I still love C#, however it’s become clear to me that Go is much more tuned towards web server-side software development.
I’ve done a pass of our basic building mechanics to ensure they are consistent, intuitive, and easy to use. Most notably, I’ve removed the Rotation Lock mechanic; the lock is now always on. Rotation Lock was sort of an awkward and unintuitive mechanic. It was sort of a holdover from when I was trying to copy Minecraft’s building mechanics, back in 2017. But Logic World has grown up a lot since then.
To help communicate the new objective nature of rotation, I’ve added a little compass rose to the UI with a pointer for the object placement rotation direction.
Notice the pointer above the hotbar on the left. As the inverter being placed rotates, so does the pointer.
See you next Wednesday!