Logic World Wednesdays: Delay

by @MouseHatGames 2019-09-26

Welcome back to another Logic World Wednesday!

If you haven’t already heard, we have made the difficult but necessary decision to delay the release of Logic World. The game will be released in February 2020. More information can be found here.

Adjustable Delay - Jimmy

Sometimes you need to introduce a delay into your circuits, and that’s exactly what Delayers are for. Previously, each Delayer type had a set delay length, but this week I’ve made it so their delay can be adjusted.

Resizable Mounts - Jimmy

Mounts are a component to help you fit your circuits into tight spaces. They’re shaped like little pillars, and you can place any component on top of them.

This week I’ve made Mounts resizable, so you can adjust their height to whatever you need. This reflects a new feature of the Resizable Components system I showed off last week: the ability to resize stuff on the vertical axis.

Rainbow Keys - Jimmy

You can now change the color of Keys and the label on top of them.

keyz.jpg

Labeled Buttons - Jimmy

All pressable Buttons can now have text written on them.

button labels.jpg

Client/Server integration - Felipe

Logic World is composed of a client (the game itself) and a server. In order to play on a world, a client must connect to a server. Previously, the client and server were totally separate applications, which means that you must run a separate server and then connect to it even if you want to play on single-player mode. This week I’ve been working on adding an integrated server to the client, which will automatically be spun up when the game starts without you even noticing.

“Singleplayer” in Logic World is actually just multiplayer with the server running on your machine. Because the game works like this, you’ll have the ability to hop right into your friends’ singleplayer games.


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!

Read previous Logic World Wednesdays


8 comments
@Nerd 2019-09-28

I have an idea for multi-bit buses, can make 2 blocks: a combiner, which has N-inputs and 1 output, it combines all the inputs into one output. The second block is a splitter, has 1 input and N-outputs; it splits a multi-bit signal into outputs.

@Jimmy 2019-09-30

Multi-bit busses would be cool and useful. I have a plan for how I’d like to do them, and it’s sort of like this.

@Frain_Breeze 2019-09-26

i don’t have a huge comment like @nik does, but i do want to say that i really like all the customization options. this will make organizing things so much nicer. and 1-tick delayers! my dream! pipeline cpu’s are just a few months away… i love the addition of the option to resize your stands, that is going to make compact circuits even more confusing (and fun!) to make. my initial sadness about the delay has been made up for within a single week, by a post about delay. how odd. as always, i love the additions and changes you guys do, keep up the good work!

@Jimmy 2019-09-26

I’m so glad you’re enjoying the LWWs! Reading positive feedback like this is incredibly gratifying.

@Nik 2019-09-26

I love this new Delay update, especially right after the news we got last week! jk, jk.

I have several questions again, if you have time to answer:
- Do the delayer hitboxes change as the stem gets shallower? i.e. a delayer with a shallow stem could fit in some spots that a delayer with a steep stem wouldn’t. - If the answer is yes, then what happens if you’re in a tight spot, and you adjust the delayer, to cause the stem to clip into something else? Does the value reset to the previous value, reset to the nearest value, or etc. - I noticed the number on the top of each delayer only changes in increments of 10 or 100 for each type of delayer. Does that mean you can type a non-integer number in the GUI text box? like setting a delayer to 2.3 or something. - I feel like it would be less confusing if the number in the delayer GUI matches the number printed on the delayer, so there isn’t confusion when you tell your friend to set the delayer to 10 - omg, thank you for making the super fast delayers small enough to squeeze in all next to each other. Because Blotters in TUNG are so bulky and annoying to work with, which gets way worse when you need multiple of them! This isn’t a question, it’s just something I noticed and love. - I also love the new implementation of mounts a lot. <3 - You showed the D Flip-Flop on top of 2 mounts, but what happens if you try to place it on only 1? And I assume the answer is the same for the larger delayers? - Do delayers in logic world behave the same as in TUNG, where an input pulse that’s shorter than the delayer’s delay will be ignored? - I just noticed the white outline on components when you hover over them! But sometimes the outline isn’t visible on the pure-white components (which is a shame, the simple colors are so… logical). Maybe the outline should slightly shift in luminosity where detects that it wouldn’t be visible? And are there any plans to support texture packs or themes or something similar? - I like that you can change the color of keys, that would be really handy when you have large amounts of keys that you want to categorize to make it easier to look at. Can you change the font as well? Or put icons or something? - Maybe the buttons and switches should have the same color options as the keys? It’s a little weird that only the keys can have special colors, only the buttons can have special text, and only the switch can have.. nothing :( - When minecraft transitioned to having Single player actually being a client connected to a locally hosted server, there were a lot of small connection lag issues (even though the server and client were on the same computer). So I guess I’m wondering what would happen if you stress the client or server so much, that one of them is running slower than the other? I’m not sure if this is really a realistically answerable question, since there are lots of different behaviors and actions in the game. But I was curious so I wanted to mention it.

Thanks as always for the work and crazy attention to detail that you guys put into this game and website and everything else. It’s really necessary for a game so focused on consistency, replicable behavior, sharing, community, etc. =)

@Jimmy 2019-09-26

Do the delayer hitboxes change as the stem gets shallower? i.e. a delayer with a shallow stem could fit in some spots that a delayer with a steep stem wouldn’t.

This is correct! I like adding game mechanics like this, they can lead to some very interesting emergent gameplay.

what happens if you’re in a tight spot, and you adjust the delayer, to cause the stem to clip into something else?

If you try to set the delayer to a value which clips into something, it won’t let you do that and there will be an error sound. It’s the same thing that happens when you try to rotate or resize a component into an invalid position.

I noticed the number on the top of each delayer only changes in increments of 10 or 100 for each type of delayer. Does that mean you can type a non-integer number in the GUI text box? like setting a delayer to 2.3 or something.

No, the delayers are always in increments of their power of ten. I played around with a few different ways of doing the delay, including selecting arbitrary values, and I found this one to be the most fun and satisfying.

I feel like it would be less confusing if the number in the delayer GUI matches the number printed on the delayer, so there isn’t confusion when you tell your friend to set the delayer to 10

You are totally right about this, I will fix it. Thanks!

omg, thank you for making the super fast delayers small enough to squeeze in all next to each other. Because Blotters in TUNG are so bulky and annoying to work with, which gets way worse when you need multiple of them! This isn’t a question, it’s just something I noticed and love.

I also love the new implementation of mounts a lot. <3

Cheers! I’m glad you approve :)

You showed the D Flip-Flop on top of 2 mounts, but what happens if you try to place it on only 1? And I assume the answer is the same for the larger delayers?

All components only need one point of attachment, so you can place a D Flip-Flop (or another large component) on top of a single mount. I just thought it looked cool that way 😎

Do delayers in logic world behave the same as in TUNG, where an input pulse that’s shorter than the delayer’s delay will be ignored?

Yes.

I just noticed the white outline on components when you hover over them! But sometimes the outline isn’t visible on the pure-white components (which is a shame, the simple colors are so… logical). Maybe the outline should slightly shift in luminosity where detects that it wouldn’t be visible?

This is a good idea, I will look into this. However detect that it wouldn’t be visible is actually… a really hard problem. Maybe I could change the outline color from white to a pale blue.

And are there any plans to support texture packs or themes or something similar?

We already support custom color palettes for the UI (shown off in LWW #5). Mods will be able to add worlds that look however they want, and new components that look however they want. Mods will also be able to play with post-processing and visual effects. So there will definitely be a solid range of appearances that are possible.

As for changing the appearance of existing components, that’s something I haven’t thought about, but perhaps it’s worth looking into.

I like that you can change the color of keys, that would be really handy when you have large amounts of keys that you want to categorize to make it easier to look at. Can you change the font as well? Or put icons or something?

No you cannot. I didn’t intend changing key colors as something for practical organization, I added it as a pure aesthetic thing; I figured keyboards in real life come in all sorts of colors, keyboards in LW should too. I’m pleasantly surprised to see you bring up an actual practical use for it. I love it when stuff I add has interesting unintended consequences!

If you need additional organization for your sets of keys, you could use big labels, or you could build some kind of statue out of circuit boards I guess :)

Maybe the buttons and switches should have the same color options as the keys? It’s a little weird that only the keys can have special colors, only the buttons can have special text, and only the switch can have.. nothing :(

Actually buttons and switches can be colored! I agree though that switches seem a lot less fleshed out than the other input methods, particularly now that buttons are resizable. If you have any ideas for them let me know!

When minecraft transitioned to having Single player actually being a client connected to a locally hosted server, there were a lot of small connection lag issues (even though the server and client were on the same computer). So I guess I’m wondering what would happen if you stress the client or server so much, that one of them is running slower than the other? I’m not sure if this is really a realistically answerable question, since there are lots of different behaviors and actions in the game. But I was curious so I wanted to mention it.

Okay, a few things to clear up:

  • we are not transitioning to a new system. This has been the plan since we started on this iteration of the codebase almost a year ago. Until now, all footage you’ve seen of Logic World has been with the client connected to a standalone server application. Now Felipe’s just integrating that standalone server application with the client.

  • the client and server being separate is actually a good thing for performance. It means that the circuit simulation (which is handled by the server) can be run on its own thread, separate from any of the threads running stuff on the client (rendering, audio, physics ect).

If the server is under load the circuit simulation slows down to compensate, and the client maintains its framerate unaffected. If the client lags, the server continues simulating at the normal speed.

@pipe01 might have some more points to add here.

Thanks as always for the work and crazy attention to detail that you guys put into this game and website and everything else.

If I may speak for both of us here, it is our pleasure! Working on this game is so much fun, and I’m so happy you appreciate all the little details.

Thank you for all your questions, I look forwards each week to answering them :)

@Nik 2019-09-26

Ah, I totally forgot about some of the existing theming options and colored buttons/switches! You just got me re-excited about those additions! Too many LWW posts to remember everything (this is not a bad thing!)

we are not transitioning to a new system

Yes for sure, I didn’t intend to say you guys were doing a similar transition that minecraft did in the past. Actually I’m not even sure why I mentioned that minecraft update, since my question was only kinda related. Ah well.

But what you explained about how the slowdowns are handled makes total sense, thank you for explaining! I haven’t visualized the server/client communication system before, and I know some first person shooters apparently have pretty complex lag compensation stuff.

When you try to rotate or resize a component into an invalid position, it won’t let you do that and there will be an error sound.

Oh that’s nice! TUNG was lacking error sounds for some functions.

I agree though that switches seem a lot less fleshed out than the other input methods, particularly now that buttons are resizable. If you have any ideas for them let me know!

Maybe switches can have customizable sounds. Lol. No that’s a weird idea.

Thanks for answering, discussing, and everything else ❤

@Jimmy 2019-09-26

I know some first person shooters apparently have pretty complex lag compensation stuff.

Yeah, thankfully we don’t have to worry about any of that since LW is not a competitive game. In a similar vein, there is absolutely zero server-side protection against cheating, which allows cool mods that let you to move in unconventional ways or build in ways not normally allowed.

Thanks for answering, discussing, and everything else ❤

Cheers!