1. Logic World
  2. News

Logic World News

Logic World Wednesdays: The Sexy Menus Edition

This blog was originally posted last week, but I forgot to post it here on Steam. This week's Logic World Wednesday will be coming tomorrow, on Thursday.

Traveler’s Peak - Markku

Hello everyone. This week's piece is called 'Traveler's Peak'. It is one of my favourites so far in this soundtrack. I look forward to chatting with you all on Discord, and I hope you enjoy my piece.
[previewyoutube][/previewyoutube]

Sexy sexy menus - Jimmy

I’ve spent most of this week working on Logic World’s UI. Since I started designing it over a year ago, I’ve learned a ton about UI programming and design, and I’m now going over all the existing UI to apply those lessons.

Logic World’s UI is now better-looking and easier to use. It’s also, in general, much smaller. One of my major mistakes early on was designing the UI in a non-fullscreen environment, which meant that once it was expanded to fullscreen, it was much too big.

One particularly delightful upgrade is the new Edit Component menus. They can now be moved and resized just like windows in your operating system.
[previewyoutube][/previewyoutube]

Web Services Overhaul - Felipe

I’ve started rewriting our cloud architecture, getting rid of the main and bulky web service and migrating to a completely microservice oriented architecture using Go, Micro and Kubernetes. We’re also using DigitalOcean’s managed Kubernetes service for this, which abstracts away the concept of individual machines for the most part. This means that our services will be able to automatically scale up and down depending on our needs.

I’ve decided to do this rewrite because right now we have a single monolithic service (the one that serves the logicworld.net page), which is hard to scale since it’s got a lot of functionality. The switch to Kubernetes from Docker Swarm also means using a newer technology that’s been built from the ground up to support the microservice architecture, and while it’s a lot harder to learn at first, it’s also a lot more powerful and flexible.

Modding Updates & Documentation - Felipe

This week I’ve been working on making the game files themselves a mod. This helps us ensure that the mechanisms we use for loading mods work properly and have all the required functionality. I’ve also been improving the modding documentation, I’m in the process of documenting all the SUCC files that mods can have. This includes files to add components, settings, instruments, game translations and more.

We’ll be releasing modding documentation as soon as it’s ready, but I’m not yet sure when that will be.

Beam Me In A Given Arbitrary Direction, Bobby - Jimmy
Last week I added teleports to Logic World. Once our beta testers got to try the feature, they told me they wanted a more fluid and simple way to teleport, one which doesn’t require someone to manually type in coordinates.

This week I’ve added just such a teleport, which takes you to whichever point you’re looking at.

[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: 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/