Logic World Wednesdays: The Long Edition

by @MouseHatGames 2020-02-20

Audio Overhaul - Jimmy

I’ve worked on a number of things related to audio this week. Logic World sounds better than ever.

Output Groups

Sound effects are now divided into subcategories, and you can adjust the volume of these individually.

volume sliders.jpg

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.

Music Player

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.

RSS - Felipe

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:

rss 1.png

You can import this feed into services like Feeder to get something like this:

rss 2.jpg

Cloud Build & Deploy Completed - Felipe

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:

build pipeline.png

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!

logic world on steam.png

Load game directly into save - Jimmy

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 :)

Server Features - Jimmy

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.

Password Protection
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.

Information Screens - Jimmy

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.

Mac OS - Jimmy

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!

Linux - Felipe

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.

If you’d like to receive an email each time we post one of these blogs, 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

@Stenodyon 2020-02-20

Woohoo so much stuff!

I thought there was a pretty background on the main menu? Also, the Achievements button having a font size smaller than the rest bugs me lol

@Nerd 2020-02-20

log in button have a lower-case l

@Nik 2020-02-20

does the new “Music Components Stop Game Music” setting also reset the music cooldown when using music components?

@Jimmy 2020-02-20

Yes it does. Good question.

@Nik 2020-02-20

So cool! I love the insights into some of the things that only the devs see, like the cloud building pipeline.

I also really love the load-directly-into-save feature, I never realized how much I wanted that. Is it also possible to automatically load into a server?

I’m a little concerned about the servers automatically pausing by default… I’m imagining someone is doing some kind of large-scale operation or test and they disconnect from the server for several hours, only to reconnect to find that the server had paused and the time was wasted. Like maybe some kind of warning should be shown when there’s only 1 person left on the server, and/or when the first person joins the server after it has been paused, just to have more public awareness of this feature. A minor detail, but it’s one of those things that could really confuse someone unless they already knew.

@Jimmy 2020-02-20

Is it also possible to automatically load into a server?

Sure, why not. I’ll add this :)

I totally get what you’re saying about making it clear that the simulation will pause. I’ll add a startup message to the server console that says simulation will be paused when no players are connected if that option is enabled. It’s not as good as a notice in the game client, but it will help for public awareness of the feature.

For what it’s worth, there is already a message in the server console when the simulation pauses or unpauses.