Welcome to another Logic World Wednesday! This week, logicworld.net passed 10,000 unique page views. Woohoo!!!
Digital logic is great, but it’s only useful when it can control devices. Before today, the only output we had in Logic World was displays, which change color when you power them. Introducing Singers!
I may have gotten a little carried away with the demo for these. That’s the main reason this post is so late. I hope you think it’s as cool as I do :)
Once Logic World is released you’ll be able to upload your boards to logicworld.net and browse everyone else’s, and this week I’ve been working on the system that will allow you to do this straight from in-game.
As you may remember from previous LWWs, the game utilises an RPC connection to logicworld.net in order to do stuff like logging in and interacting with friends, which means that I’ve already got a connection to the logicworld.net server through which I can send the board file. The game will split up the board file in 10kB chunks, export the board’s model as a
.obj file and calculate the hash of the entire file, all of which will get sent to the server as soon as you press “Upload” on a board. Once the server has received all the data and has checked that the hash matches, you’ll be directed to logicworld.net/Upload, where you’ll be able to adjust your board’s title and description and upload some good-looking pictures.
You may have noticed that when you press the Upload button on the client you’re not obligated to follow up and publish the board on the site, in which case the server will keep the board file indefinitely while not being public. This is less than ideal, as over time the disk would be full of forgotten board files that never ended up being published. To overcome this, each board you upload will be assigned an ID as soon as you press the button, which will be stored in the database along with the time at which you started the upload. Every hour we check for uploaded board files that are older than 4 hours, which will be deleted from disk and from the database.
My goal with this system was to make it easy and quick to share your boards from inside the game, while being flexible by completing the publication from the website so that I can expand it to allow for the uploading of worlds as well.
I spent a lot of time this week going over the code for the various menus in the game. I’ve been cleaning it up and abstracting the systems so they’re easy to use in future menus. I’ve also made significant performance improvements to a lot of our UI.
This stuff isn’t super fun to talk about, but it’s a necessary part of the process of making a game.