1. Logic World
  2. News

Logic World News

Logic World Wednesdays: Beam Me Up, Bobby

This week we have made the unfortunate decision to postpone the release of Logic World… again. The new, and with any luck final, launch day is June 12. Read more in the official announcement.

Player Positions - Jimmy

This week I finally added a big missing feature to Logic World: when you exit a world and then enter it again, you will now be in the same location you were when you left. This also extends to other player position values like the direction you’re looking in, whether you’re crouching, and whether you’re flying. Each player now has their own file within a world folder where their data is saved. This opens the door to persisting more player values, such as which items you have on your hotbar.

I also added save-dependent world spawn points, which is the location a player will be in the first time they join a world.

Finally, I added commands for teleporting players to different positions. I couldn’t resist the opportunity to do something fun with that...

[previewyoutube][/previewyoutube]

I’ve open sourced one of the tools I used to make the teleport effect.

Build pipeline - Felipe

This week I’ve been working on finally finishing the build pipeline, it can now successfully build the Unity game and publish it to Steam!



Fun Spinny Triangle - Jimmy
By popular request last week, I added a setting to choose the open state of the Quick Color Chooser. This new setting was all by itself in the “Color Choosing” settings heading, and I decided it needed a friend.

Enter Fun Spinny Triangle, the best setting ever added to Logic World.

[previewyoutube][/previewyoutube]


---------------------------------------------

We'll keep releasing these weekly updates right up until the game comes out. To make sure you don't miss them, you can sign up for our newsletter or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

See you next Wednesday!

View this post on logicworld​.net. More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/

Logic World Wednesdays: The Anniversary Edition

The Socket - Jimmy

This week I’ve added one of the coolest new components yet: The Socket. Sockets let you build modularly, with data interfaces and plugs.

[previewyoutube][/previewyoutube]

LogicScript components with hot reloading - Felipe

This week I’ve been working on LogicScript, our custom language for programming component behavior. I’ve created a wiki where you can find the syntax reference as well as some code snippets. One of the neatest things about LogicScript is that it can be hot-reloaded while the server is running, and I’ve made a video to demonstrate this.

[previewyoutube][/previewyoutube]

Popups - Jimmy

I’ve spent most of this week working on Logic World’s UI code, which has been badly in need of attention. There are many small fixes and improvements, but one of the niftiest new features is the Popups system.

Popups allow us to take an element of the user interface and “pop” it into the foreground. Other UI is darkened, to make the popped UI stand out, and clicking outside of the popped UI closes it.





Making the popups system was surprisingly difficult and intricate. Here are just a few of the things I had to worry about while programming it:
  • If a popup starts off-screen, it must be moved on-screen
  • If a popup is taller or wider than the screen, it must be compressed to a size where it can be viewed in its entirety, and a scrollbar must be added to it
  • If a menu closes while it has a popup open, that popup must close as well
  • If the screen resolution changes while a popup is open, the popup must resize itself appropriately

But after many many hours of programming, all of those worries and more are solved, and our popups system is robust and reliable.

Popups are a necessary prerequisite for some very important menus I have planned. You’ll be seeing those menus next week.

Quick Colors - Jimmy

This week I’ve had something of a shift in philosophy with regards to how players choose colors.

If you’ve been following Logic World for a while, you know that I’ve spent a lot of time and energy making the color picker a powerful tool. Indeed, I’ve succeeded in that; Logic World’s color picker is the most fleshed-out of any video game I know of. But my pride in my color picker has made me lose focus on how people will actually be using it.

When you go to change the color of something, you almost never want to bother with a huge complex interface for choosing from 16 million different colors. Usually you’ll just want to choose between the same 5-10 colors that you use everywhere else -- your builds aren't a hodgepodge rainbow of random colors, they use a specific and limited palette.

With this in mind, I’ve designed a massively streamlined color picker UI. It lets you choose colors in the way I described above, but it still gives you powerful control over the colors for the occasions when you need it.

For the first time since I started working on the color picker, ten months ago… I am 100% satisfied with how you change the color of things in Logic World.

[previewyoutube][/previewyoutube]

New Build Pipeline - Felipe


I’ve also been working on remaking our build pipeline. Previously we were using Semaphore for building and uploading the game, but we were running into issues with Unity license activation, since each build was performed on a different machine. This is the main reason we switched to hosting our own build server, since this way we could install and activate Unity with a GUI, making things much easier.

The server is currently hosted on DigitalOcean, and it’s running a Jenkins instance.



The new system should be finished and deploying builds within a day or two. Hopefully, this is the end of our build pipeline woes.

One Year of Logic World

As of last Saturday, it’s been one year since we announced Logic World.

It’s been a crazy and amazing year making this game for you. We both feel extremely lucky to be doing this, and to have a community as supportive and passionate as you. Thank you. Here’s to many more years of Logic World :)

Not coincidentally, it has also been one year since Bobby entered the world and our hearts. @Red_3D finished their amazing animation in celebration. Please enjoy this incredibly high-effort Logic World fan video!

[previewyoutube][/previewyoutube]


---------------------------------------------

We'll keep releasing these weekly updates right up until the game comes out. To make sure you don't miss them, you can sign up for our newsletter or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

See you next Wednesday!

View this post on logicworld​.net. More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/

Logic World Wednesdays: The Mystic Edition

A New Pursuit - Markku

Happy Wednesday everyone! This week I'm glad to share a sample of my piece called 'A New Pursuit'. It is somewhat of a departure from the musical style that I've adhered to over the past few weeks but it still maintains a few key musical elements that unify each piece. I hope you enjoy this piece as much as I did making it.

[previewyoutube][/previewyoutube]

Smooth Grids - Jimmy

Last week I made the world grid extend into the horizon. The astute reader will notice that I also changed the world grid from a checkerboard pattern to a solid color. I did this to hide some visual artifacts that were newly noticeable with the extended horizon.

The cause of these artifacts is somewhat complex, and has to do with how computer screens are made of a finite number of pixels. When the renderer looks at the grid, it has to decide what color each pixel is. With the colored grid, the color of a pixel can be one of the two grid colors. The problems arise when grid cells are very distant, and so appear small on the screen -- smaller than a pixel. When a pixel encompasses multiple cells of different colors, it only samples the color of one cell; thus, information about how the grid is supposed to look is lost and distorted.

The solution is to slowly bleed the colors of the cells into each other over distance. The smaller a cell appears on-screen, the less you render it as its appropriate color; gradually, you transition from two binary colors to a single color which is the average of the two.

This week I implemented this solution, and checkerboard worlds now look good from all angles!





Modding System Fun - Felipe

This week I’ve been working on an overhaul of Logic World’s modding system. Up until now, mods contained C# code that had previously been compiled into a DLL file. However, this means that our cloud system would have to compile mods when the user uploaded them, putting quite a bit of strain on our servers. In the new system I’m working on, mods will now instead contain the code in .csx files, which are C# script files.

When the client/server loads a mod, it will now automatically compile the mod’s raw source code in-memory and run it, removing the need for any DLL files. All Logic World mods are now distributed as source code; it’s impossible to hide malicious things in mod code, and it’s a built-in feature that you can easily modify and learn from the source code of mods you download.

Mods will now also be able to contain LogicScript files (.lsx) to use when defining logic components. I talked about this more in last week’s Wednesday.

The Oracle - Jimmy

This week I’ve added a highly requested component to Logic World: Oracles, which generate a random value when powered.

[previewyoutube][/previewyoutube]

I struggled for a while with whether to add these or not. It is possible, and very interesting, to build circuits which generate pseudorandom numbers. I worried that adding a component to generate random values would take away the need for that. I worried that fun and interesting gameplay would be eliminated.

Ultimately, however, I’ve decided that Oracles open more doors than they close. Besides, pseudorandom circuitry isn’t 100% obsolete; you still need it if you want your sequence of random values to be deterministic.

Bobby’s Birthday is this Friday!

Bobby, Logic World’s beloved protagonist and mascot, will turn one year old this Friday, April 10th. As we mentioned a few weeks ago, the lovely and talented @Red_3D is working on a celebratory short film to mark the occasion.



So, get excited for that, friends! Join us in the Logic World Discord this Friday to celebrate Bobby’s birthday and to watch the premier of the film.

---------------------------------------------

We'll keep releasing these weekly updates right up until the game comes out. To make sure you don't miss them, you can sign up for our newsletter or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

See you next Wednesday!

View this post on logicworld​.net. More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/


Logic World Wednesdays: The Foolish Edition

New Horizons - Jimmy

I wrote some fancy code that lets us extend the world super far into the distance. The horizon looks much better now, and it no longer gets closer when you move closer to it.

[previewyoutube][/previewyoutube]

Logic Scripting - Felipe

Mods in Logic World are mainly made in C#, including the code behind custom components’ logic. However, it can be a bit overkill having to compile an entire C# library for making a single NAND component, not to mention insecure as C# code can do pretty much anything. This is the reason I came up with LogicScript, a domain-specific language built for programming pure logic components, like logic gates, memory cells, etc.

Here’s a snippet showing off the language’s current features:

when in = 1010
# Set individual output bits
out[0] = 1
out[2] = 0
out[1] = in[2]

# Set all the output bits
out = 1010
out = 14' #The ' denotes that it's a decimal number instead of a binary one
end

# Other example case statements:
# when in = (1, 0, in[1], 1)
# when in = 12'
# when (in[0], in[1]) = 10
# when (in[2], in[1]) = 3'

I also plan on adding binary operators and some kind of memory registers for storing numbers.

The library as-is can execute the above script in 0.0003 ms, thus it can run 3,333,333 times per second. This means that, while it probably won’t be as fast as hard-coded C#, it’s still pretty damn fast. Even then, I still have a lot to do to optimize it, so that number will probably go up.

LogicScript will make it easy and fast to add new logic components, and it will make for more trustworthy mods, as there’s no way for LogicScript code to install a virus on your computer. We’ll still support C# logic components if you need to do something really crazy -- LogicScript isn’t a replacement, it’s an additional option.

AND, AND, and AND- Jimmy

This week I added two new AND gates to Logic World.

[previewyoutube][/previewyoutube]

Thanks to our beta testers for noticing this gap in logic capabilities. Anti-thanks for the serpentine creatures for interrupting production on that video several times.

I also modified the logic code for AND gates to support any number of inputs. This makes it super easy to mod in AND gates with even more inputs.


---------------------------------------------

We'll keep releasing these weekly updates right up until the game comes out. To make sure you don't miss them, you can sign up for our newsletter or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

See you next Wednesday!

View this post on logicworld​.net. More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/

Logic World Wednesdays: The Instrumental Edition

Instrument Sounds - Jimmy

My main project this week has been an overhaul of the code and assets we use to generate music sounds in Logic World.
[previewyoutube][/previewyoutube]
This was exactly what I needed after a month of working almost exclusively on boring stuff. I've had a really fun week, learning about audio synthesis and trying out different instrument sounds. I feel more motivated than ever to work on Logic World and to get it out into your hands.

Audio synthesis is a very complex subject, and I had a lot of help working on it this week. A huge thank you to Drogomir Smolken and the awesome SFZ community for maintaining a fantastic open standard and for being super friendly and helpful to noobs like myself. Thank you also to Sam Gossner from Versilian Studios for recording high quality instrument samples and generously releasing them for free. Finally, thanks to my dad, who helped me with some of the more difficult math :)

Settings Profiles - Jimmy

We’ve had UI for ages for switching your settings profile. This week, I finally made that UI functional.



Each settings profile is an independent list of settings. When you edit your settings on profile 2, your settings on profile 1 are unaffected.

Unexciting Things - Felipe

This week I’ve kept working on some unexciting things, namely optimizing SECCS (it can now serialize and deserialize around 10-20 times faster) and dealing with the cloud builds situation. For the last week or so the cloud builds have been failing due to Unity not correctly activating its license. We’ve contacted Unity support and hopefully we’ll have a solution for it soon.

Bobby’s Birthday

Bobby, Logic World’s beloved protagonist and mascot, will turn one year old on April 10th. The lovely and talented @Red_3D is working on a celebratory short film to mark the occasion, and it is looking very very awesome.



Red is posting daily updates on the project to their blog, which you should definitely go read right now!!

---------------------------------------------

We'll keep releasing these weekly updates right up until the game comes out. To make sure you don't miss them, you can sign up for our newsletter or join the official Discord, and of course you can wishlist and follow the game right here on Steam.

See you next Wednesday!

View this post on logicworld​.net. More Logic World Wednesdays

https://store.steampowered.com/app/1054340/Logic_World/