Name | Logic World | ||
Developer | Mouse Hat Games | ||
Publisher | Mouse Hat Games | ||
Tags | |||
Release | 2021-10-22 | ||
Steam | € £ $ / % | ||
News | |||
Controls | Keyboard Mouse | ||
Players online |  n/a  | ||
Steam Rating | Very Positive | ||
Steam store | |||
Public Linux depots | Logic World - Linux [1.75 G] |
Welcome back to Logic World Wednesday! Were hard at work on your game, and this week weve been focused on optimization.
Yet More Web Fun coming soon! Im having a great time working on the site, and I look forward to making it ever more awesome. Cubic Chunks - Jimmy All objects in Logic World are divided into chunks. A chunk is a single, solid, giant chunk of geometry in the shape of many smaller objects. You stupid, gullible players are tricked into thinking there are thousands of objects in a world, but in reality there are only a few dozen. Chunking is the major reason why were able to have thousands of components and wires in a world without lag; GPUs are much better at rendering a small number of complex objects than a large number of simple objects. Before this week, chunks were assigned along a 2D axis. Picture a checkerboard grid on a plane within the 3D world. Each chunk existed as a column: finite along two axes, but expanding infinitely into space along the Y axis. But this week Ive overhauled the system to work properly in 3D: a 3D system for a 3D world. This is an important step for optimization, and its already sped up performance somewhat by allowing for better frustrum culling in some situations. Its also absolutely necessary to properly support world types that have a non-standard floor shape -- such as a spherical planet, or the inside of a giant cylinder -- which is something I really want to do. Ive also added a debug mode that colors all objects in a chunk with a random color, so you can visualize where the cunk boundaries are. I think it looks quite pretty :) In the process of adding 3D chunks, I did a particularly satisfying refactor of our WorldRenderer class, which had grown very bloated and nasty in the ~1.5 years since it had been created. WorldRenderer used to be about 600 lines and do several different things; now its been split into four smaller, more focused classes, each 100-200 lines. Packet Compression - Jimmy This week Ive implemented LZ4 compression on many of the network packets sent between the Logic World server and the client. LZ4 is an extremely efficient compression library: it makes data way smaller in exchange for a very small performance impact. However, the performance impact is not zero: its around 10% slower to serialize or deserialize a packet when using compression. So compression should only be used in the specific situations where the increased serialization time is outweighed by the decreased packet size. I spent about a day trying to build a system that would automatically detect whether compression should be used for every single packet. However, this ended up being insanely convoluted and not worth the effort at all. Instead, were now using a simple system where some packet types are always compressed, and some packet types are never compressed. My original code for this was kinda trash ngl, but as he often does, Felipe swooped in and made my code way cleaner and better organized. In the process, he also allowed mods to specify that their packet types should be sent compressed. Thanks Felipe! Because of packet compression, it is now about 75% faster to download world updates from the server and to upload your world changes to the server. Hotbar Customization - Jimmy Ive started adding some customization options for your hotbar! The hotbar is some of the most used and most important user interface in Logic World, and its important that everyone is able to set it up exactly how they want it. This is all part of my endeavor to refactor the hotbar code. The hotbar code is some of the oldest and worst code in Logic World, written at a time when I knew a lot less about coding and a lot less about coding user interface. It desperately needs to be cleaned up if Im to add features to it. Bugs Fixed This Week
--------------------------------------------- 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. View this post on logicworld.net More Logic World Wednesdays https://store.steampowered.com/app/1054340/Logic_World/ |