Logic World v0.91 is now available!

by @MouseHatGamesDeveloper11 months ago

Greetings, gamers!

We are finally ready to release our biggest update yet! Introducing Logic World v0.91: The Less Buggy Update. This update is now available, for free, to owners owners of the game on Steam and Itch.io.

screenshot 2 smol.jpg

0.91 is a massive update that touches every area of the game, drastically improving performance, majorly improving stability, adding dozens upon dozens of little quality-of-life improvements and tweaks, and introducing a few radical new features. For this update, we’ve changed or added over 69,000 lines of code since 0.90.3 across over 1,000 files. It’s been a big effort, but it’s just the start of what’s to come.

We’re very happy with Logic World v0.91. It’s the best version of Logic World yet, and it’s an excellent foundation for the really ambitious updates we’ll be doing next.

Thank you for playing our video game. Enjoy the update. From everyone at Mouse Hat Games, please have a happy holidays, and a wonderful new year!

screenshot 3 smol.jpg

0.91 Changelog

This update will reset your settings!

Building

  • Multi-Clone now supports cloning wires that connect the different selected objects (#73)
  • Multi-Grab and Multi-Clone handle a bunch of placement edge cases much better, particularly related to circuit boards
  • 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
  • Multi-Wire Placement is now treated as a single action in the undo/redo history, instead of one action per wire placed (#318)
  • Multi-Wire Placements with only one peg in the first selection now work properly
  • Wires can be slightly shorter now
  • 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
  • Various improvements to Multi-Edit, especially with regards to colorable components
  • 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
  • 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)
  • Fixed sometimes not being able to rotate Switches, Buttons and Keys without grabbing them first (#206)
  • Fixed undo/redo stack breaking and causing errors sometimes (#396, #281)
  • Fixed undoing build actions that deleted wires breaking the undo stack (#399)
  • Fixed some issues with components moving around upon completing a multi-resize (among them #266)
  • Fixed canceling multi-wire placement not removing the outlines of the selected pegs (#233)
  • Fixed board drawing sometimes not properly snapping to a square size when holding shift (#203)
  • Fixed flip state not always being correctly detected for Grab/Clone operations (#351)
  • Fixed rotations getting out of sync during Multi-Clone if you try to rotate before the first successful placement (#268)
  • Fixed not being able to resize short Flags
  • Fixed warnings and errors in the console when grabbing and resizing Flags
  • Fixed log spam with “Look viewing rotation vector is zero” during some edge cases with grabbing
  • Fixed hovered colors in the Quick Color Chooser being persistently applied when the operation is canceled (#71)

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 the 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 Delayers getting out of sync after being cloned
  • 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

  • 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 in multiplayer when a new player joins the server even if the players currently on the server have paused it (#347)
  • Fixed the simulation unpausing in singleplayer when accessing a sub-menu of the Pause menu

Circuitry

  • Outputs that should start on (such as the outputs of newly placed Inverters) now start on in the simulation
  • 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 component outputs sometimes erroneously 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
  • Improved performance and reduced allocations when grabbing or cloning stuff
  • Improved performance of checking Socket connections
  • 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.
  • Improvements to physics performance
  • 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

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 it uses a previous blotter format version; instead, a helpful save converter UI is offered
  • 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 About menu, Languages menu, and Teleport menu can now be accessed from the Pause menu
  • 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
  • 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
  • Added secret setting: MHG.Secret.UI.EditColorableComponentsMenu.CloseImmediatelyWhenBigColorClicked
  • 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
  • Added command: UI.Debug.LogObjectsUnderCursor
  • Enabled smooth scrolling for the Settings Menu sidebar
  • Fixed setting descriptions being cut off in the Settings Menu sidebar if the description is sufficiently long (#342)
  • 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 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
  • Fixed jankiness when using the scroll wheel in the debug console
  • 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
  • Fixed console error spam if you have the Help menu open and you switch game states on two consecutive frames (#395)

Thumbnails

  • Thumbnails are now anti-aliased
  • Thumbnail lighting is now independent of environment lighting, so thumbnails will now always look consistent
  • When a single component has an output that is supposed to start on, such as the output of an Inverter, the output is now properly rendered as 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 when geometry intersects 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!

Localization

  • 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 🇺🇦 Thank you from the bottom of our hearts to all the volunteer translators! Because of your hard work, people from around the world can enjoy Logic World in their native language 💖

Movement

  • Fixed flying speed being non-configurable (and way too slow) when the setting “Lock Flight Y Axis” is disabled (#370)
  • 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
  • Fixed new player positions not being applied until all overlay UI is closed

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”)
  • Reloading the settings (i.e. by switching settings profiles) no longer causes the music to stop playing
  • Tweaked the default parameters for the fancy pause menu music effects
  • Music is loaded from disk more reliably; fixed music playback issues on some systems (#422)

Modding

  • 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)
  • Fixed exception when increasing the number of outputs on a component (#457)
  • Fixed InputPeg.AddPhasicLinkWith throwing a NullReferenceException in many cases

Server

  • Dedicated server binaries are now placed in a sub-folder, to keep the root directory clean
  • Periodic server tasks 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
  • Fixed the server always saving on close even if the server config value SaveOnClose is set to false

SUCC and settings files

  • 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.
  • The game now updates ___LastLoadedGameVersion in settings_master.succ with the most recently loaded game version every time the game starts
  • Removed config_override files. All server config values are now stored only in config.succ
  • There are far fewer disk writes related to game settings, especially on startup, which should improve startup performance

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 from 2019.4.17f1 to 2019.4.40f1
  • Upgraded server runtime from .NET Core 3.1 to .NET 7.0. For now, .NET 6.0 binaries are also included with the dedicated server.
  • Fixed there being an omega (Ω) in the name of a dll, which prevented the game from working properly in some environments. This also accidentally prevented the game from working if you got it from a particular game pirating service, so uh, you’re welcome, pirates. YAARRRRRR
  • All error messages and APIs are now PG-13
  • Added a system for updating CustomData in saves when the layout for a component’s CustomData changes between versions
  • More kinds of errors in the game loop are now caught and trigger an error screen
  • 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.
  • Added command: runtimeinfo
  • Added command: input.ExportSystemKeyNames
  • The Resolution setting is now properly saved as a Vector2Int instead of a string with extraneous data
  • Custom MessagePack formatters now use MessagePack best practices (#259)
  • Fixed the integrated server process not being killed in some cases where it should be (#401)
  • The server now explicitly rejects wire requests between two outputs (previously, it would throw an error if sent one)

Graphics APIs

  • Added OpenGL as an optional graphics API on Windows and MacOS (used with the command-line argument -force-glcore)
  • Added Vulkan as an optional graphics API on Windows and Linux (used with the command-line argument -force-vulkan). Vulkan still has issues on some systems, but once we work those out it will become the default graphics API on Windows & Linux.

Platforms

  • Linux: fixed mouse button presses sometimes registering as phantom scroll wheel events (#146)
  • Linux: fixed the camera moving when the game window does not have focus and the cursor moves into the game window area (#148)
  • Linux: fixed Action Wheel segments being invisible on Linux OpenGL (#41)
  • MacOS: fixed keybindings in the UI sometimes displaying as empty/blank

Miscellaneous

  • Changed default offline player names from “Citizen [random number]” to “Bobby #[random number]”, and reduced the max size of the random numbers
  • When taking a screenshot, the screen now flashes grey for one frame (this is a necessary temporary limitation and will be removed in a future release)
  • Added secret setting: MHG.Secret.ScreenshotFlashColor
  • The FPS counter no longer erroneously reports 60FPS for the first second it is enabled (#350)
  • The Resolution setting is now disabled while the game is running in windowed mode, and in general windowed mode is handled much better
  • 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
  • Updated the “Performance Impact” displayed in the settings menu for various graphics settings to be more accurate to the new rendering tech
  • Fixed sometimes not being able to delete sandboxes using the UI (#101)
  • Added a new setting: “Pause on Defocus”. Disabled by default. (#191)
  • Removed intro screen in non-preview versions
  • Added secret setting: MHG.Secret.PreviewsOnly_SkipIntroScreen
  • Added Herobrine

screenshot 1 smol.jpg


RSS icon
3 comments
@DanielMo0946 months ago

No one: Jimmy: Added Herobrine joke joinked :)

@JimmyDeveloper11 months ago

The screenshots in this post are from a world that was sent to me by @GHXX. Thank you GHXX!