I’ve worked on a number of things related to audio this week. Logic World sounds better than ever.
Sound effects are now divided into subcategories, and you can adjust the volume of these individually.
Music Component Spatial Audio
Singers and Drums are unlike other sound effects in the game in that the sounds are generated at runtime. Previously, their sounds would always play at full volume no matter where you were in the world relative to the component. But this week I’ve figured out how to hook these generated sound effects into Unity’s spatial audio system.
Music Components will now play at full volume in both speakers until you are 50 meters away from them. From 50 meters until 100 meters, their volume will gradually fade to zero. Within this range, the sound will also become progressively “spread”; it will play more in your left speaker if the sound is coming from the left, and more from the right speaker if the sound is coming from the right.
These changes really make music components feel like part of the world. The full volume range is still large enough that you can build big music contraptions that play at full volume, but they’re no longer able to teleport sound to your ears from hundreds of meters away.
I’ve been working on the code that plays the music from Markku’s beautiful soundtrack. The music is streamed from disk; not only does this give you easy access to the music files if you want to play them outside of the game, but it allows mods to easily add music to the soundtrack.
I’ve also added an option called “Music Components Stop Game Music”, which is on by default. With this option on, a Singer or a Drum playing a note will cause the game music to quickly fade out if it’s playing. This way, your music contraptions won’t be blocked out by the game music.
Back in August of last year I was working on the posts backend for logicworld.net I decided to implement an RSS feed endpoint, however I completely forgot about it until a couple days ago, so here it is! You can, for example, get the feed for the “Development Updates” forum at https://logicworld.net/Forum/1/rss.xml, and this is how it looks like:
You can import this feed into services like
Feeder to get something like this:
This week I’ve finished our continuous integration system, which now also builds the server and uploads the whole game to Steam on all 3 platforms! This is how the pipeline looks now:
As you can see, the build times for the Unity project have been significantly improved since last week, thanks to caching generated Unity files that are reused between builds.
And yes, the game is officially on Steam, including a separate package for the dedicated server!
I added some properties in settings.succ that let you load directly into a save file when the game starts, rather than having to go through the main menu.
This makes our lives easier when testing stuff, but hopefully it’s also a convenience to you :)
This week I added a whole bunch of features to the server, most of them related to security/permissions.
Servers can now have a whitelist of players who are allowed to connect.
Servers can now ban players and IP addresses from connecting.
Servers can now require a password to connect. Passwords are only sent over the network after being hashed with SHA-256.
Servers can now have a list of players who are admins. Admins can run commands on the server, and they will be sent the server’s console output, viewable in the client debug console.
When you run an integrated server for a singleplayer game, you automatically have admin permissions.
Max players per server
Servers can now have a maximum number of players connected to them. If someone tries to connect to a full server, that connection will be denied.
Pause empty servers
Servers now have an option (enabled by default) to pause the simulation when there are no players connected. Servers will also no longer save the game or make automatic backups when there are no players connected – nobody is changing the world, so saving or backing up would be redundant.
I’ve added some screens that tell the player important information about what happened to their game. First is the error screen, which lets the player know if there’s an error on startup or while loading a save. Next is the disconnection screen, which lets the player know if they’ve been unexpectedly disconnected from the server.
I’ve been fixing up the Mac OS version of Logic World! There’s still some work left to do, but here’s a picture of the game running on mac:
Shoutout to my friend Keaghan for lending me his macbook!
I made it work on linux lol
Next week, I intend to make a bunch of VMs with different Linux distros, so that we can test on as many configurations as possible.
See you next Wednesday!