1. Logic World
  2. News

Logic World News

Logic World Wednesdays #130: The Game Starts Up Better Now

New loading bars - Ecconia
[p]Starting the game used to take a lot of time, especially with 30 mods installed. Think of a Windows installer with its loading bar stuck at 99%. It's probably working, but it feels broken. In Logic World, there were no loading bars during startup.[/p][p]The real issue wasn't speed. It was perception. If something moves or spins, you know progress is happening and you're more patient. If nothing happens, it feels like the program froze.[/p][p]Nothing was shown because LogicWorld completed most of its initialization before rendering the first frame. That meant staring at a blank screen for more than 15 seconds.[/p][p]There were other issues as well. If you tried to close the game during startup, it kept loading anyway and only exited after finishing initialization. On Windows, you might even get the beloved and pointless "LogicWorld is not responding" popup.[/p][p]The solution is to load the game over multiple frames, which I have now finished implementing.[/p][previewyoutube][/previewyoutube][p][/p]
Profiling - Ecconia
[p]I've also added a new profiler to measure what's taking up time while the game is starting. This has already allowed me to make some improvements in startup time, which you can see in the video above.[/p][p]Here's some example output from my new profiler. You can make the game save a log file with profiler output by launching the game with the new startup argument [c]--profile-startup[/c].[/p]
▶ Game start
▶ Wait for first frame to finish
⏹ Wait for first frame to finish in 735ms
▶ Set up tasks
⏹ Set up tasks in 0ms
▶ Load tasks
▶ Prepare TaskControl
⏹ Prepare TaskControl in 3ms
▶ Go to Update() routine
⏹ Go to Update() routine in 52ms
▶ Task 'Setting up logging'
⏹ Task 'Setting up logging' in 8ms
▶ Task 'Initializing Dispatcher'
⏹ Task 'Initializing Dispatcher' in 2ms
▶ Task 'Loading scene 'UI_ErrorScreen''
▶ Activate scene 'UI_ErrorScreen'
💧 1ms
▶ Go to next frame
⏹ Go to next frame in 41ms
▶ Go to next frame
⏹ Go to next frame in 118ms
⏹ Activate scene 'UI_ErrorScreen' in 1ms (total 160ms)
▶ Collect tasks from scene 'UI_ErrorScreen'
⏹ Collect tasks from scene 'UI_ErrorScreen' in 3ms
▶ Prepare tasks in scene 'UI_ErrorScreen'
⏹ Prepare tasks in scene 'UI_ErrorScreen' in 0ms
▶ Process 3 scene tasks
▶ Task 'Initializing component ErrorScreen'
⏹ Task 'Initializing component ErrorScreen' in 0ms
▶ Task 'Initializing component HoverTagManager'
⏹ Task 'Initializing component HoverTagManager' in 0ms
[p]As you can see, the profiler allows us to measure precisely how long it takes to get between two points in the code. This system is available for modders as well, using the [c]LogicProfiler[/c] API.[/p][p]I was motivated to add the profiler by my work on making [c].lwmod[/c] files fully functional so modders can easily distribute their work as single-file drop-into-the-mods-folder packages. I had most code done, but encountered a performance regression. The game loaded even slower than before. I started optimizing slow parts, but did not achieve good results. Now that I have the profiler, I can figure out why [c].lwmod[/c] files are loading slower than folder mods, and hopefully [c].lwmod[/c] files will be fully supported soon.[/p][p][/p]
Get the preview now!
[p]You can try the improved game startup in a new preview version we released today! Just opt into the "Public Previews" Steam beta.[/p][p][/p][p][/p]
Changelog: v0.92.3 Preview 57
[p]Here are all the changes in today's preview since v0.92.2 (the current stable version).[/p][p]Game startup[/p]
  • [p]Added loading screen with progress bars for game startup (applies once Unity has finished loading, which takes about 5 seconds).[/p]
  • [p]Fixed not being able to quit the game during startup quickly (via common window/process controls).[/p]
  • [p]Game start is much more robust and will show errors in settings files as well.[/p]
  • [p]Improved language loading performance by ~2.7x.[/p]
  • [p]Improved settings loading performance by ~3x.[/p]
  • [p]Improved debug command loading performance by ~6x.[/p]
[p]Launch options[/p]
  • [p]Client startup arguments now start with two dashes [c]--[/c] instead of one dash [c]-[/c].[/p]
  • [p]Added client startup argument [c]--help[/c] which prints command help on startup.[/p]
  • [p]Added client command argument [c]--profile-startup[/c] which generates a profiler log file of the startup.[/p]
  • [p]Startup arguments for Unity and mods must now be appended after a [c]--[/c] separator argument. Example for Unity argument [c]--screen-fullscreen[/c]: [c]./Logic_World --open-save "demo_world_official" -- --screen-fullscreen[/c].[/p]
[p]Modding[/p]
  • [p]Added [c]ClientMod.GameStartupCompleted()[/c]. This is called after the game has finished loading, but before it starts background tasks (like game loop / networking).[/p]
  • [p]A new [c]LogicProfiler[/c] API is now available for measuring the execution time of your code. Currently, it only works while the game is starting up.[/p]
  • [p]Improved error message if a component type is missing placing rules.[/p]
[p]Miscellaneous[/p]
  • [p]Updated engine version to Unity 6000.0.65f1.[/p]
  • [p]Improved Unity physics settings to increase performance in very large worlds.[/p]
  • [p]Made some code more robust when the error-screen is opened during world load.[/p]
  • [p]Fixed demo world prompt causing an exception in main menu (once seen).[/p]
  • [p]Fixed some DOTween warnings in console.[/p]

Logic World Wednesdays #128: New Year, New Logic World

[p]Hello and welcome to the first Logic World Wednesdays of 2026! I hope this year brings you peace and joy. It will certainly be a big year for Logic World, so let's get into the blog![/p][p]Sometimes we have multiple writers on these blogs, but this one is written entirely by and from the perspective of me, Jimmy.[/p][p][/p]
New schedule!
[p]You may recall from this video that in September 2025 I switched to working on Logic World full-time. I gave myself the deadline of January 1st by which to grow Logic World revenue enough to cover my rent and food. In the months since, we shipped the Subassembly update, the Demo World, subassemblies on the Creation Hub and many other improvements to the game & website; I also learned a lot about marketing and distribution, and we successfully got Logic World in front of new audiences, driving up sales significantly.[/p][p]However, January 1st has come and gone, and I was not able to make enough money through LW for it to sustain my full-time work on it. I believe we'll get there eventually, but for the time being I'll be joining the rest of the team in working on LW part-time only. I remain dedicated to getting it done, and I'll continue to be the project lead until we hit 1.0 (+ probably also beyond 1.0).[/p][p]With my reduced hours on the project, Logic World Wednesdays is switching from a weekly blog to a monthly blog. For the foreseeable future, we'll publish a new LWW on the last Wednesday of each month, updating you on the progress we've made during that month.[/p][p]I'm already feeling way better about my work on this game now that I'm not staking my entire financial future on it. Although I'll be working fewer hours on Logic World, I'm more excited and energized for those hours, and I will make them count![/p][p][/p]
New music!
[p]Markku is working on new music for the game! The first single from Logic World: Volume 2 just came out. Listen to it while you read the rest of this blog:[/p][previewyoutube][/previewyoutube][p]You can get Now, We Fly on Spotify, Apple Music, Youtube Music, and several other music places.[/p][p]Volume 2 will be similar in length to volume 1, around 40 minutes in total. I think you'll love what he's cooking up for volume 2 -- Markku does phenomenal work, he's so good at driving the emotions immanent to the Logic World experience, and I couldn't be more excited to be working with him again.[/p][p]Markku's music from volume 1 plays at arbitrary intervals during gameplay, but with the music of volume 2 we're looking at playing the pieces more contextually and intentionally. For example, Now, We Fly has this sense of grandeur, epicness and triumph to it. We want to really maximize the emotional impact by waiting to play it until you've spent many hours building up a huge and complicated machine. Everything has come together, your big project finally works, you're marveling at the expansive yet intricate operation of the whole thing, and BAM we hit you with this music. I think it's gonna work really well!![/p][p]One more thing: the cover art for this single was made by Markku himself! He started learning Blender specifically to make it. (Ecconia joked that it's more like "now, we swim" but Markku explained that the inverter is nervous about flight, and the music will give it the courage to fly up out of the water :))[/p][p][/p]
New codebase!
[p]We've mentioned this before, but never outlined it in detail: we are rewriting Logic World from scratch.[/p][p]Among other reasons, we're doing this in order to dramatically increase performance & scalability. Logic World is about beholding and exploring the majesty of emergent computational complexity: many simple logic gates working in tandem come together to form astonishingly capable machines, and the core of LW is to apprehend such phenomena. With the rewrite, we're pushing this pillar to the next level.[/p][p]Currently, Logic World can handle around 10 million simulated components before performance issues make it impossible to continue building. Our initial goal for the rewrite is to increase that number by a factor of 100, achieving 1 billion simulated components at a stable 60fps. Hence, our name for the overall effort is Project One Billion, or POB for short. However, in the long term, we believe we can get that number significantly higher than just one billion.[/p][p]Here's a little preview where I'm testing the data structures we've designed for this purpose. A billion components, initialized in 30ms, using POB isn't just about enabling singular builds with a huge amount of RAM or CPU cores or a giant display or whatever. It's also about enabling vast shared worlds for multiplayer. Our ambition is to turn Logic World into an MMO-scale experience. Think of a big computer you've seen in LW -- this one, perhaps. Now imagine you and a hundred other people each have your own computer like it in one shared world, and you've connected them to an in-game internet where you can send code and data between the different computers. Visions like this inspired me as I began development on Logic World all those years ago, and this is the kind of paradigm shift that POB will make possible.[/p][p]Now that we've shipped subassemblies and the Demo World, we've done everything we wanted to do with the legacy codebase, and the majority of development effort is now focused on the rewrite. We started planning the architecture of POB in December of '23, and we started writing the code for it in February of '25. Now it's finally our full focus, and '26 will be the year that POB blossoms into glory![/p][p]I'm really, really excited about this. With POB, I think we're going to make a game that is truly magical and totally unprecedented. We've learned so many important lessons through building Logic World the first time, and our second take on this game is going to be so much better in every way. We'll share lots more on the blog this year as POB takes shape.[/p][p]I want to end this introduction to POB by giving due credit to my colleague Zoey. She was the first to realize that something on the scale of POB is actually possible, and she conceived many of the core concepts that the new codebase is being built around. When we're all playing with gigabytes of simulated RAM in LW, it will be thanks to Zoey's efforts and inventiveness. I'm extremely grateful that I get to collaborate with someone so brilliant on this ambitious next stage of Logic World's development.[/p][p][/p]
New runtime!
[p]One thing I love about being a .NET developer is that it's fast. It gives developers an extensive and well-designed suite of high-level tools that provide huge productivity boosts unavailable in lower-level languages, but even so, apps written for .NET can match or (in some very specific cases) even exceed the performance of bare-metal languages like C++ and Rust.[/p][p]Every year, a new version of .NET is released that makes it even faster. If your hyperfixations overlap with mine, you might enjoy Stephen Toub's blog posts about the performance improvements in each new version of .NET. When I started writing code for POB, it was on .NET 9, but .NET 10 has since released and so I took some time this week to upgrade the project for those sweet sweet performance gains.[/p][p]In the new codebase, we're investing in robust diagnostics, including a comprehensive benchmark suite to track performance changes over time. This is useful for ensuring that accidental performance regressions don't sneak in, and also for measuring the gain from performance improvements.[/p][p]I ran the benchmark suite on .NET 9 and .NET 10, and I was pleased to see a number of benchmarks with significant performance improvements! Here are the results for our most-improved benchmarks. Each of these functions may be run millions of times per second, so improvements of even a few % lead to serious gains.[/p]
[p]Benchmark[/p]
[p].NET 9[/p]
[p].NET 10[/p]
[p]Ratio[/p]
[p]SerializationBenchmarks - DeserializeStructureBaseHash[/p]
[p]1.03 ns[/p]
[p]0.16 ns[/p]
[p]0.16[/p]
[p]SerializationBenchmarks - DeserializeStructureHash[/p]
[p]1.02 ns[/p]
[p]0.18 ns[/p]
[p]0.18[/p]
[p]SerializationBenchmarks - SerializeStructureBase - data=Arbitrary 2[/p]
[p]47.59 ns[/p]
[p]36.14 ns[/p]
[p]0.76[/p]
[p]SerializationBenchmarks - SerializeStructureBase - data=Arbitrary 1[/p]
[p]47.51 ns[/p]
[p]37.17 ns[/p]
[p]0.78[/p]
[p]StructureModificationBenchmarks - WithChildrenRemoved - case=Remove ten children; all ten removed children had different hashes; all ten hashes still in structure after removal[/p]
[p]861.10 ns[/p]
[p]680.98 ns[/p]
[p]0.79[/p]
[p]StructureModificationBenchmarks - WithChildrenRemoved - case=Remove ten children; all ten removed children had different hashes; all ten hashes not in structure after removal[/p]
[p]647.13 ns[/p]
[p]530.61 ns[/p]
[p]0.82[/p]
[p]IsSemanticallyValidBenchmarks - TestIsSemanticallyValid - data=500 children, 5 different hashes[/p]
[p]1.37 µs[/p]
[p]1.13 µs[/p]
[p]0.82[/p]
[p]SerializationBenchmarks - DeserializeStructure - data=Small[/p]
[p]22.32 ns[/p]
[p]18.48 ns[/p]
[p]0.83[/p]
[p]IsSemanticallyValidBenchmarks - TestIsSemanticallyValid - data=10 children, 10 different hashes[/p]
[p]49.02 ns[/p]
[p]41.27 ns[/p]
[p]0.84[/p]
[p]SerializationBenchmarks - SerializeStructureHash[/p]
[p]3.20 ns[/p]
[p]2.71 ns[/p]
[p]0.85[/p]
[p]StructureModificationBenchmarks - WithChildrenRemoved - case=Remove ten children; structure has no children after removal[/p]
[p]281.06 ns[/p]
[p]238.65 ns[/p]
[p]0.85[/p]
[p]SerializationBenchmarks - SerializeStructureBaseHash[/p]
[p]3.19 ns[/p]
[p]2.74 ns[/p]
[p]0.86[/p]
[p]IsSemanticallyValidBenchmarks - TestIsSemanticallyValid - data=100 children, 100 different hashes[/p]
[p]473.34 ns[/p]
[p]407.90 ns[/p]
[p]0.86[/p]
[p]StructureModificationBenchmarks - WithChangedBaseHash - case=Change data[/p]
[p]7.21 ns[/p]
[p]6.28 ns[/p]
[p]0.87[/p]
[p]SerializationBenchmarks - SerializeStructure - data=Small[/p]
[p]29.96 ns[/p]
[p]26.30 ns[/p]
[p]0.88[/p]
[p]SerializationBenchmarks - DeserializeStructureBase - data=Arbitrary 1[/p]
[p]55.29 ns[/p]
[p]48.72 ns[/p]
[p]0.88[/p]
[p]SerializationBenchmarks - DeserializeStructureBase - data=Arbitrary 2[/p]
[p]55.15 ns[/p]
[p]49.09 ns[/p]
[p]0.89[/p]
[p]This table was generated with Benchmark Buddy, a tool I wrote specifically for POB development to compare performance differences.[/p][p][/p]
New freedom from twitter!
[p]We're officially quitting twitter. There will be no more tweets from Logic World or Mouse Hat Games![/p][p][/p][hr][/hr][p]Thanks for reading! We'll see you on January 28th for the first LWW of the new monthly schedule. If you want to make sure you don't miss it, you can sign up for our newsletter.[/p][p]Ciao![/p]

Logic World is 42% off for the Steam Winter Sale!

[p]For the first time ever, Logic World is on sale! Until January 5, you can save a massive 42% on the best 3D logic simulator around. [/p][p]If you don't own Logic World yet, you can get it now for an incredible bargain![/p][p]You can also get Logic World for your friends! Studies show that Logic World makes the perfect holiday gift. Plus, when both you and your friends have Logic World, you can play it together in multiplayer![/p][p][/p][p][dynamiclink][/dynamiclink][/p]

Logic World update 0.92.2 is out now!

[p]Hey gamers! There's a new Logic World update out, and you can download and play it now.[/p][p]The highlight of update 0.92.2 is the Demo World. This is a world we've put together to introduce new players to the game. It's got information about how to play Logic World, a guide to getting started with digital logic, and a bunch of cool things to check out as you wander around.[/p][p][/p][p]In addition to the Demo World, this update has a number of minor tweaks and fixes. As usual, you can read the full details below :)[/p][p]Let us know in the comments what you'd like to see in the next Logic World update![/p][p][/p][h2]Full 0.92.2 changelog[/h2][p]Demo World[/p]
  • [p]Added the Demo World, a pre-built save file with an introduction to the game and some cool stuff to look at.[/p]
  • [p]The first time you start the game, there's now a little bubble on the main menu that says "Check out the demo world!" which points to the 'Singleplayer' button.[/p]
  • [p]The Demo World can be reset by deleting the save, or renaming the file on disk, and restarting the game.[/p]
  • [p]Added secret setting: [c]MHG.Secret.RecreateDemoWorldWhenNotFound[/c][/p]
[p]Graphics[/p]
  • [p]Tweaked Ambient Occlusion to look better.[/p]
  • [p]Ambient Occlusion is now enabled by default again.[/p]
[p]Building[/p]
  • [p]You can now confirm a Grab or Clone placement by pressing the return key.[/p]
  • [p]Fixed an issue where wire ghosts could display the incorrect state.[/p]
[p]UI[/p]
  • [p]Action Wheel: changed the default size of the Action Wheel from 1.0 to 0.85.[/p]
  • [p]Color picker: changed the default value for the setting "Quick Picker Open State" back to "Always Open to Quick Menu".[/p]
  • [p]Chat: fixed a crash to error screen if you receive a chat message while you have the UI hidden.[/p]

Logic World Wednesdays #127: Somehow, the Demo World returned

[p]The number of this week's LWW is a Mersenne prime. Savour the feeling, because this may be the last time it will ever happen.[/p][p][/p]
The Demo World
[p]Logic World is extremely cool once you sit down and spend several hours building stuff, but when you first start playing, it's pretty empty and unexciting. While there's a certain charm to watching everything grow from nothing, and bringing about that transformation entirely by your hand, the initial emptiness is a pretty bad and underwhelming experience for new players who are just getting started with the game. We can definitely do better.[/p][p]If you ever played TUNG, the old prototype for Logic World, you may have fond memories of the "Demo World" that we built for that game. When you start up TUNG for the first time, it prompts you to "Check out the demo world!", and in that demo world there are a series of simple circuits laid out for you to explore, analyze, and learn from.[/p][p][/p][p]We're brining this idea back in Logic World. We're making a new demo world for players to drop into when they first boot up the game. It has an overview of the different features of the game, an introduction to some beginner digital logic concepts, and a few big & complex circuits to show how cool the game can get. We hope it'll be a great introduction to Logic World.[/p][p]In the long term, we'll be adding interactive tutorials, challenges, and a campaign mode to give people a rich and polished first-time experience, but that will all take a while to design and develop. In the short term, adding a demo world is something we can do pretty quickly to dramatically improve the first-time player experience.[/p][p]Here's a quick teaser screenshot of the demo world we're working on:[/p][p][/p][p]We're trying to move fast with this. We aim to release a preview version of LW with this demo world in the next few days, then release it as a finished game update next week.[/p][p][/p]
New trailer & screenshots - Jimmy
[p]The Logic World trailer, and the screenshots shown on the store page, are some of our most important marketing assets, giving many people their first impression of the game. Both of these have not been updated since 2021, before the game first launched in Early Access. I'm working on a new trailer, and a new set of screenshots, to better showcase the game and reflect the changes to Logic World over the last four years.[/p][p]So I'm asking you now: have you built something cool in Logic World, or do you know of a cool build, that you'd like to see in official promotional material? I'd truly love to include your work in the new trailer, and make it a showcase of this community's best creations.[/p][p]Let me know in the comments, or DM me on Discord.[/p][p][/p][hr][/hr][p]That's all for today! See you next week for Logic World Wednesdays #2^7.[/p]