Greetings, gamers!
After many months of very hard work, Logic World’s first major update is almost ready. v0.91 has some major performance upgrades, countless bug fixes and stability improvements, a few juicy new features like the Simulation Controls, and many smaller tweaks focused on improving quality-of-life like Chair-only Keys.
We hope you enjoy the update! If you’re eager to try it out right away, follow the instructions below to check out the Preview versions. Once we’ve fixed all the nasty little bugs that the Preview People will surely find, the update will be fully released.
Help us localize the new features
If you speak a non-English language, we’d love your help translating Logic World to that language! All the new translation strings in 0.91 are ready for you to translate. Head over to https://logicworld.net/translate to get started.
Notification of upcoming price increase
Simultaneously with the full release of update 0.91, we’re going to raise the price of Logic World from USD$12 to USD$15 (and regional equivalents). It has always been the plan to increase the price throughout Early Access, and this new price point reflects that 0.91 is a more polished and more valuable product. There will be several more price increases before we get to 1.0.
We are currently planning to never have a discount on Logic World, so the current price point is the lowest it will ever be. If you haven’t bought Logic World yet, now would be a savvy time to do so :)
Get access to the 0.91 previews
Note: preview versions might be unstable and buggy. Consider waiting for the full release before trying the update.
To get access to the 0.91 previews:
- Back up your saves. We’re pretty sure there are no giant horrible save-destroying bugs in the previews, but hey we’re not omniscient, so be cautious and back up your saves! 0.91 saves are not backwards-compatible with 0.90; upgrading is a one-way process.
- In your Steam library, right click Logic World and click “Properties…”
- Select the “BETAS” tab, and choose the “public-previews” branch.

Steam will now download the latest preview version. The same instructions work for the dedicated server.
If you find a bug in the previews, please report it on the Logic World Issue Tracker, and specifically mention which preview you discovered it on.
Please leave feedback on the new features and changes in The Big 0.91 Feedback Thread.
Changelog
Here is the full list of changes in the 0.91 previews! This post will be updated every time a new preview is published, and we’ll also post a notification in the #news channel of the Logic World Discord server.
v0.91 Release Candidate 1 (revision 645)
- Slightly improved future-proofing of the save loader & analyzer
- Fixed the simulation unpausing in singleplayer if you pause the simulation, then open and close the pause menu
- Edit pass on the 0.91 changelog
- Added WIP translations for Korean, Spanish (Spain), and Turkish
- Updated translations and translator credits for Chinese (Simplified), Croatian, Czech, Dutch, Estonian, Finnish, French, German, Hebrew, Hungarian, Japanese, Polish, Portuguese (Brazil), Romanian, Russian, Slovenian, Swedish, and Ukrainian 🇺🇦
- Removed “preview” designation 🚀
v0.91 Preview 632
- Music is loaded from disk more reliably; fixed music playback issues on some systems (#422)
- Added command:
input.ExportSystemKeyNames
- Fixed keybindings on MacOS sometimes displaying as empty strings, FOR REAL THIS TIME
v0.91 Preview 627
- Colliders are now always enabled when the object is visible. This fixes many bugs including #428 and #429.
- Added secret setting:
MHG.Secret.UnityFixedDeltaTime
. Increasing this value can massively increase the framerate in very large worlds (with a very large number of colliders), but will reduce the accuracy of game physics.
- Added secret setting:
MHG.Secret.UnityMaximumDeltaTime
- Removed secret setting
MHG.Secret.LimitColliderDistance
- Fixed occasional error screen when resizing (#453) which also hopefully fixed the errors when cloning (#451)
- Fixed the Board Drawing mechanic going goblin mode if you try to draw a board bigger than the maximum board size (#453)
- Setting the Music Frequency setting to “Never” now prevents music from playing on the main menu, as well as during gameplay (#435)
- Fixed setting descriptions being cut off in the Settings Menu sidebar if the description is sufficiently long (#342)
- Added a new setting: “Pause on Defocus”. Disabled by default. (#191)
- Linux: fixed the camera moving when the game window does not have focus and the cursor moves into the game window area (#148)
- (Hopefully) fixed keybindings on MacOS sometimes displaying as empty strings
- (Probably) fixed the game randomly crashing on startup sometimes (#458)
- Parsing errors for SUCC files in mods now provide the path to the file instead of a GUID (#443)
- Removed a profane debug statement that was accidentally left in (#456)
- Fixed console error spam if you have the Help menu open and you switch game states on two consecutive frames (#395)
v0.91 Preview 608
- Fixed the game not working if loopback is the only network interface available (#425)
- Fixed music not playing on first load of main menu
- Pretty much fixed the music sometimes stuttering during playback (#422)
- Fancy pause menu music effects are snappier by default
- Fixed the loading screen not showing up when connecting to a server with the UI
- Fixed instanced geometry sometimes being invisible when you’re more than 1000m away from the world origin. The limit has been expanded to 50000m, which is well outside the playable game area so it should be fine now ¯\_(ツ)_/¯
- Fixed shared mod
.cs
files being in shared/
instead of src/shared/
(#341)
- Fixed mod compilation failing when a mod assembly does not have a path, i.e. when using Harmony mods (#308)
- The Resolution setting is now disabled while the game is running in windowed mode, and in general windowed mode is handled much better
- The Resolution setting is now properly saved as a Vector2Int instead of a string with extraneous data
- Fixed UI popups not being properly fitted within the screen area
- Custom MessagePack formatters now use MessagePack best practices (#259)
- Miscellaneous minor optimizations
v0.91 Preview 586
- Fixed not being able to clone an object and place it on itself
- (Hopefully) fixed objects sometimes being invisible and then crashing the game
v0.91 Preview 582
- Multi-Clone now supports cloning wires that connect the different selected objects (#73)
- During Grab, Clone, and Resize operations, the placing ghost will now update its circuit states instead of being frozen
- Added secret setting:
MHG.Secret.Building.PlacingGhostsRecieveCircuitStateUpdates
- During a Multi-Select pass, components which are a child or parent of the initially-selected component will no longer be added to the selection. I would love to hear your feedback on this – is it a good change?
- Added secret setting:
MHG.Secret.Building.MultiSelector.AllowSelectingChildrenOfFirstComponentInPass
- Added secret setting:
MHG.Secret.Building.MultiSelector.AllowSelectingParentsOfFirstComponentInPass
- You are now always allowed to proceed with a deleting operation when multiple components are selected (the previous rule was that you had to select all the children of a component)
- If another player edits the properties of a Flag (i.e. name, color, aspect ratio) while you have the Teleport Menu open, the Teleport Menu will now update to reflect those changes
- By default, the Edit Flag menu will no longer close immediately when you select a new color
- Added secret setting:
MHG.Secret.UI.EditFlagMenu.CloseImmediatelyWhenBigColorClicked
- Fixed sometimes not being able to rotate Switches, Buttons and Keys without grabbing them first (#206)
- Fixed sometimes placing from the wrong point of a large object when you grab it
- Fixed rotations getting out of sync during Multi-Clone if you try to rotate before the first successful placement (#268)
- Fixed Clone operations not properly copying the circuit states of the original objects, which would often result in flickers and broken feedback loops (#116)
- Fixed Delayers getting out of sync after being cloned
- Fixed undoing build actions that deleted wires breaking the undo stack (#399)
- Fixed error screen if you tried to Redo while the undo history is empty
- Fixed placing ghosts sometimes being invisible for a few frames after you Grab something
- Fixed errors in the console when grabbing and resizing Flags
- Fixed warnings in the console when grabbing multiple Flags
- Improvements to physics performance
- Improved performance of Clone operations
v0.91 Preview 554
- Improved performance of walking the circuit network graph for large clusters. This gives us a significant additional speedup for save loading times and when moving a lot of Sockets.
- Multi-Grab and Multi-Clone handle a bunch of edge cases much better, particularly related to circuit boards
- Various improvements to Multi-Edit, especially with regards to colorable components
- Added secret setting:
MHG.Secret.UI.EditColorableComponentsMenu.CloseImmediatelyWhenBigColorClicked
- Fixed hovered colors in the Quick Color Chooser being persistently applied when the operation is canceled (#71)
- Fixed not being able to resize short Flags
- Fixed flip state not always being correctly detected for Grab/Clone operations (#351)
- Fixed world outlines becoming all fucked up after editing a Chair
- Fixed selected components not being outlined while in Edit Component menus
v0.91 Preview 536
- Improved performance and reduced allocations when grabbing or cloning stuff
- Reduced memory usage in large worlds
- Improved performance of checking Socket connections
- Significantly improved the performance of instantiating the circuit network graph when loading a save (#397). This might break things, please check if this breaks things.
- Upgraded server runtime to .NET 7.0
- The packet IDs for
DiscoveryRequestPacket
and DiscoveryResponsePacket
are now hardcoded to the IDs they had in 0.90, so server discovery is now properly backwards-compatible (#424)
- Fixed sometimes not being able to delete sandboxes using the UI (#101)
- Fixed the integrated server process not being killed in some cases where it should be (#401)
- Fixed new player positions not being applied until all overlay UI is closed
- Added command:
runtimeinfo
v0.91 Preview 510
- Linux: fixed crazy issues with SUCC files on that prevented the game from starting up properly (#423)
- Linux: fixed mouse button presses sometimes registering as phantom scroll wheel events (#146)
- Linux: fixed Action Wheel segments being invisible on OpenGL (#41)
- The default graphics API is once again Direct3D 11 on Windows and OpenGL on Linux. Vulkan will be made default on both platforms in a later update when we fix it crashing on some systems. Fixes #436
- SUCC file auto-reloads are more reliable
- There are far fewer disk writes related to game settings, especially on startup, which should improve startup performance
- The game will no longer enforce the Resolution setting when running in windowed mode. If you set a custom resolution for the game window that’s different from what the Resolution setting says, that custom resolution should now persist when you re-launch the game.
- Fixed some issues with UI usability when running the game at extremely wide aspect ratios
- Fixed the debug console window rendering in front of its hover tags
- Fixed hover tags sometimes not disappearing when they’re supposed to
- Added command:
UI.Debug.LogObjectsUnderCursor
v0.91 Preview 485
- Fixed the instancing shader not working on OpenGL
- Added OpenGL as a fallback graphics API on Windows and MacOS
v0.91 Preview 483
- Fixed Gridlands customizations not working
- Fixed in-game changelog menu being broken
- Fixed jankiness when using the scroll wheel in the debug console
- OpenGL can now be used again on Linux with the command line argument
-force-glcore
v0.91 Preview 477
- Dramatically improved the client-side performance of updating the color of a large number of objects (i.e. when a large circuit is running) using cool ass compute shaders
- On Linux, the graphics API has been upgraded to Vulkan, which hopefully fixes everything being broken in some Linux environments (#421)
- On Windows, the graphics API has been upgraded to Vulkan, but (for now) you can still use Direct3D 11 with the command line argument
-force-d3d11
- The
PrintUnityEnvironmentInfo
command now reports much more information, especially about the system hardware and the graphics API. The information is also now formatted much more nicely.
- Fixed the server always saving on close even if the server config value
SaveOnClose
is set to false
- Fixed error screen in some situations with multi-wire placing
- Multi-wire placements with only one peg in the first selection now work properly
v0.91 Preview 461
- Fixed chunks starting out invisible until you go away and come back
- Fixed server errors when you modify the number of pegs on a Display (#419)
- More kinds of errors in the game loop are now caught and trigger an error screen
- Improved client-side loading performance a bit more
- The screen now flashes grey instead of white when you take a screenshot
- Added secret setting:
MHG.Secret.ScreenshotFlashColor
- Updated the “Performance Impact” displayed in the settings menu for various graphics settings to be more accurate to the new rendering tech
v0.91 Preview 451
Building
- Multi-wire placement is now treated as a single action in the undo/redo history, instead of one action per wire placed (#318)
- Wires can be slightly shorter now
- You can now configure the size of the Action Wheel
- Added a button in the Action Wheel configuration screen to reset to the default Action Wheel configuration
- Fixed undo/redo stack breaking and causing errors sometimes (#396, #281)
- Fixed log spam with “Look viewing rotation vector is zero” during some edge cases with grabbing
- Fixed a few issues with multi-edit
- Fixed some issues with components moving around upon completing a multi-resize (among them #266)
- Fixed board drawing sometimes not properly snapping to a square size when holding shift (#203)
- Fixed canceling multi-wire placement not removing the outlines of the selected pegs (#233)
Components
- Added an option to Keys to only allow pressing them while in a Chair
- Added a “reset” button to the Edit Delayer menu, to reset it to the default delay of 10 ticks
- If you hold to Mod key while flipping a row of switches, they will all be set to the same state as the first switch flipped (#60)
- Added secret setting:
MHG.Secret.InvertMultiSwitchInteractionModKeyBehavior
- The input pegs on XOR Gates, AND Gates, D-Latches, Oracles, and Relays are now slightly longer
- Fixed some unintuitive Delayer behavior that could, among other anomalies, allow one-tick pulses to go through a two-tick Delayer (#183)
- Fixed Chairs sometimes erroneously complaining that they are occupied (#223)
- Chairs will no longer be outlined if you look at them while they are occupied
Simulation Speed
- Added Simulation Speed menu. It can be accessed through a new button in the pause menu or with a hotkey, bound by default to
F9
- Added a hotkey to pause or resume the simulation, bound by default to
F10
- Added a hotkey to step one tick forward through the simulation (when the simulation is paused), bound by default to
Shift+F10
- Added secret setting:
MHG.Secret.SimulationSpeedMenu.ShowRemoveFromListButtonsOnHover
- Added secret setting:
MHG.Secret.SimulationSpeedMenu.SavedSpeedWiggleData
- Added secret setting:
MHG.Secret.SimulationSpeedMenu.AutoResumeSimulationWhenChangingSpeed
- Added server config value:
DefaultSimulationTPS
- Added server config value:
MaximumSimulationTPS
- Removed the server config value
SimulationTPS
as this is now configured per-save in ExtraData
- Renamed the server command
step
to simulation.step
for consistency
- Fixed the simulation unpausing when a new player joins the server even if the players currently on the server have paused it (#347)
Circuitry
- Outputs that should start on (such as the outputs of newly placed Inverters) now start on in the simulation
- Fixed component outputs sometimes changing state when the number of inputs is changed
- Fixed weird simulation glitches (and occasionally server crashes) that would occur when changing the number of pegs on a component that has connected output pegs (#104, #250)
Optimization
- Significantly improved loading times, especially for large worlds
- Improved game framerates for most scenarios, particularly for large worlds, and particularly if post-processing or shadow cascades are disabled
- Component/wire geometry is now rendered with GPU instancing instead of in combined mesh chunks
- Colliders are instantiated more efficiently
- The game now logs how long it takes the client to load a save
- Removed the secret settings
MHG.Graphics.RenderDistance.Secret.IdealFramesBetweenRecalculations
and MHG.Graphics.RenderDistance.Secret.MaxTimeBetweenRecalculationsSeconds
. Render distance is now recalculated when the player has moved to a new chunk, not on a time interval.
- Added secret setting:
MHG.Secret.LimitColliderDistance
Fixy Pointy
- Component positions are now stored as fixed point rather than floating point
- Component world positions are now calculated in the reference frame of the stack root component
- Rounding of component rotations is smarter and more consistent
- Due to these changes, components now stay perfectly aligned up to an arbitrary nesting depth (#269, #273) and no longer cause tiny erroneous intersections (#123)
Save Files
- Upgraded to Blotter File Format v6, to store positions in the new way (fixed point rather than floating point)
- Blotter v6 also has support for multi-root subassemblies, in preparation for some 0.92 features
- Added save converter from v5 to v6
- The game no longer considers a save to be “corrupted” if the saved blotter format version doesn’t match the current blotter format version
- Fixed missing translation string for the file corruption state “unknown save type”
- Fixed sandbox list displaying an empty info box for saves with an outdated format version
UI
- The in-game changelog is much prettier, and the changelogs for each update can now be individually collapsed and expanded
- The in-game changelog now automatically generates and displays links for mentioned issues
- The About menu, Languages menu, and Teleport menu can now be accessed from the Pause menu
- The markdown renderer does a better job of rendering lists and headers
- The markdown renderer now supports superscript. This is disabled everywhere by default, but it can be enabled for chat via a new
Superscript
section in the secret setting MHG.Chat.Secret.ChatMarkdownSettings
- Enabled smooth scrolling for the Settings Menu sidebar
- Fixed some visual issues with the Settings Menu sidebar for settings with names long enough to span multiple lines
- Fixed some inconsistencies with UI text boxes
- Fixed the game being unpaused in singleplayer when accessing a sub-menu of the Pause menu
- Fixed some visual issues with the custom avatar preview (under settings -> multiplayer)
- Fixed some resizing arrows not being properly disabled on configurable menus that are not supposed to be resizable, such as the Edit Delayer Menu (#377)
- Fixed the binding prompts in the Action Wheel not updating to show the new bindings if you change them
Thumbnails
- Thumbnails are now be anti-aliased
- Thumbnail lighting is now independent of environment lighting, so thumbnails will now always look consistent
- Thumbnails for single components where the output is supposed to start on, such as Inverters, now properly appear on in the thumbnail
- Added command:
ExportThumbnailCache
- Added command:
RegenerateThumbnailCache
- Added secret setting:
MHG.Secret.Thumbnails.ThumbnailAmbientLighting
- Added secret setting:
MHG.Secret.Thumbnails.ThumbnailDirectLighting
- Added secret setting:
MHG.Secret.Thumbnails.ThumbnailRenderSizeFactor
- Added secret setting:
MHG.Secret.Thumbnails.ThumbnailAntiAliasing
- Renamed the secret setting
MHG.Secret.ComponentDisplayRotation
to MHG.Secret.Thumbnails.ThumbnailModelRotation
- Renamed the secret setting
MHG.Secret.ComponentDisplayRenderSize
to MHG.Secret.Thumbnails.ThumbnailRenderResolution
and changed the default value from 256 to 128
- Due to a limitation of the new rendering tech, new thumbnails will now be blank for a single frame after creation. To avoid this, thumbnails are pre-cached as much as possible.
- Fixed visual artifacts that appeared wherever geometry intersected the edge of the thumbnail render
Text rendering
- Added support for emojis (i.e. 🍆😆🐢🥗)
- Added support for music symbols (i.e. 𝄞𝄿𝅘𝅥𝄇)
- Added support for additional math symbols (i.e. 𝞉𝞩ϵϕ𝚤)
- Added Hong Kong style option for CJK characters. Currently only accessible by setting the secret setting
LogicUI.Secret.CjkDefaultFontStyle
to Hong_Kong
- All characters in the Adlam script are now displayed in the joined style (previously some were in an unjoined style)
- All characters in the Arabic script are now displayed in a neutral arabic style (previous some were in a Kufi style, and some were in a Naskh style)
- Added support for the following scripts: Bassa Vah, Bhaiksuki, Caucasian Albanian, Duployan, Elbasan, Elymaic, Grantha, Gunjala Gondi, Hatran, Indic Siyaq Numbers, Khojki, Khudawadi, Linear A, Mahajani, Manichaean, Marchen, Masaram Gondi, Mayan Numerals, Medefaidrin, Meroitic, Miao, Modi, Mro, Multani, Nabataean, Newa, Nüshu, Old Hungarian, Old North Arabian, Old Permic, Old Sogdian, Pahawh Hmong, Palmyrene, Pau Cin Hau, Psalter Pahlavi, Sharada, Siddham, Sogdian, Sora Sompeng, Soyombo, Syriac, Takri, Tirhuta, Wancho, Warang Citi, and Zanabazar Square. PHEW
- Updated Noto fonts
- Updated Font Awesome to 6.1.2, with over 7,000 new icons!
Movement
- Fixed the secret setting
MHG.Flying.Secret.AutoEnterNoclipOnStartFlying
not even working, and breaking the game in various ways when set to true
(#279)
- Fixed errors in the console when a player is standing on a component decoration (such as a Chair or the clicky part of a Button) and that component gets destroyed
- Fixed incorrect footstep sounds being played in some situations
Interactables
- Added support for outlining Interactables that are not part of components. This is used for the big clicky button in the test world, which is now outlined when you look at it
- Interaction-dragging behavior is now consistent between chairs and standing: when the cursor is moved to be looking at a non-interactable, the interaction ends
- Added secret setting:
MHG.Secret.Interactables.StopInteractionIfLookingAtNonInteractable
- You can now interact with the same Switch multiple times during one interaction
- When interacting with a Chair to sit in it, the interaction will now immediately end, instead of continuing while you sit in the chair. Fixes #103
Music
- Added a “Never” option to the Music Frequency setting
- Changing Music Frequency will no longer cause music to stop playing (except when setting it to “Never”)
- Fixed reloading the settings causing music to stop playing (i.e. by switching settings profiles)
- The fancy music effects in the pause menu are now a bit more subtle by default
Modding
- Fixed InputPeg.AddPhasicLinkWith throwing a NullReferenceException in many cases
Server
- Periodic server tasks can no longer cause a server death spiral if they take too long. This was often presenting when autosave was enabled on a very large world.
- If the server fails to broadcast its existence on the local network, it will now disable local network broadcasting instead of just crashing
- Reduced the minimum time between connections to a server from a single IP from 30 seconds to 3 seconds
- Messages in the server console announcing player leaves/joins are prettier
Technical
- Fixed the game not properly detecting supported network protocols, which was causing various nasty bugs that made the game unplayable in certain network setups or when no external network interfaces are available (#204, #333, #229)
- Updated Unity version to 2019.4.40f1
- Upgraded server runtime from .NET Core 3.1 to .NET 6.0
- Fixed there being an omega (Ω) in the name of a dll, which prevented the game from working properly in some environments
- All error messages and APIs are now PG-13
- The server now explicitly rejects wire requests between two outputs (previously, it would throw an error if sent one)
- The game now updates
___LastLoadedGameVersion
in settings_master.succ
with the most recently loaded game version every time the game starts
- Error messages about parsing SUCC files are much more helpful, and now contain the file path & line number
- Various SUCC files, such as
settings_master.succ
, will now be automatically reloaded and their changes applied when the file is changed on disk.
- Configurable menu data is now stored in the profiled settings files instead of in a separate file for every menu. This means menu configurations now properly work with the settings profile system.
- Removed
config_override
files. All server config values are now stored only in config.succ
- Added a system for updating CustomData in saves when the layout for a component’s CustomData changes between versions
Miscellaneous
- Removed startup screen in non-preview versions
- Added secret setting:
MHG.Secret.PreviewsOnly_SkipIntroScreen
- Changed default offline player names from “Citizen [random number]” to “Bobby #[random number]”, and reduced the max size of the random numbers
- The 4D option for barrier shader quality is not displayed anymore because it is too slow; however, it can still be used if you enable the secret setting
LogicSettings.Secret.ShowHiddenDropdownValues
- When taking a screenshot, the screen now flashes white
- The FPS counter no longer erroneously reports 60FPS for the first second it is enabled (#350)
Just released v0.91 Release Candidate 1