TUXDB - LINUX GAMING AGGREGATE
 NEWS TOP_PLAYED GAMES ITCH.IO CALENDAR CHAT WINE SteamDeck
 STREAMERS CREATORS CROWDFUNDING DEALS WEBSITES ABOUT
 PODCASTS REDDIT 

 

SUPPORT TUXDB ON KO-FI

MENU

ON SALE

New Twitch streamer aggregation implemented (#FuckTwitch) due to Twitch's API issues (more info on my Discord )


Name

 Logic World 

 

Developer

 Mouse Hat Games 

 

Publisher

 Mouse Hat Games 

 

Tags

 

Simulation 

 

Singleplayer 

 

Multiplayer 

 

 Co-op 

Release

 2021-10-22 

 

Steam

 € £ $ / % 

 

News

 106 

 

Controls

 Keyboard 

 

 Mouse 

 

Players online

 n/a 

 

Steam Rating

 Very Positive 

Steam store

 https://store.steampowered.com/app/1054340 

 
Public Linux depots

 Logic World - Linux [1.75 G] 




LINUX STREAMERS (0)




Logic World Wednesdays: Bits and Bobbies

Weve had a productive week, working on various odds and ends throughout the game.

Multiplayer Menu - Jimmy

Ive been working on one of our last big pieces of user interface, the multiplayer menu!



(WIP!)

Ive also been working with Felipe on the code for learning information about a server before connecting to it, such as the MOTD and player count, for displaying in this UI. Unfortunately that stuff is really hard and we werent able to finish it for today. Once thats all done and integrated with the UI, Ill likely do a video showing off some neat features of this menu :)

Web Fun - Felipe

This week Ive been plugging away at our logicworld.net website, fixing bugs and adding features. I started by creating a temporary user page, like . Its still very much barebones though, I pretty much added it just to get rid of the 404 error youd get otherwise. I will be improving it over the coming days, allowing you to edit your bio as well as showing your post history. Last week I added comment deletion, however a bug prevented the delete icon from showing. I fixed this bug, and I then added post deletion and editing, with comment editing coming soon as well!



More Robust Save Loading - Jimmy

All components in Logic World have a standard set of data: the position in the world, the rotation in the world, et cetera. But many component types have additional custom data that they must save and load. For example, a Circuit Board must save its width, length, and color. A Switch must save its color and whether it is on or off.

For every component with custom data, that data is stored as raw binary, both in memory and in the save file. Every component has a CustomData byte array. This array is null for components without custom data, and full of binary for components that do have custom data.

For handling this on the API side, Logic World uses a very clever system: we define an interface type with the custom data that the component has, and at runtime, binary serializers and deserializers are generated for all the properties of that interface.

interface ICircuitBoardData
{
int Height { get; set; }
int Width { get; set; }
Color24 Color { get; set; }
}

class CircuitBoard : ComponentClientCode
{
public void SetDimensions(int width, int height)
{
// These calls to the Width and Height setters automatically
// invoke the binary serializer.
Data.Width = width;
Data.Height = height;
}

public void RageQuitIfBoardIsBlue()
{
// This call to the Color getter automatically invokes the
// binary deserializer.
if (Data.Color == Color24.Blue)
Application.Quit();
}
}

For a long time, theres been a major flaw with the custom data system: the automatic serializers and deserializers had no way to detect bad binary data. If a component tried to deserialize the binary data and ran into a problem, then best case scenario the data would be totally wrong, but most of the time there would just be an extremely unhelpful error and the save would fail to load. This would usually come up when loading an old save after we changed the custom data structure of a component -- for example, it happened to several of our beta testers recently when we added two new properties to the Flag custom data, the flag name and the option to include it in the teleport list.

This week I added some validation code when deserializing a components binary CustomData. Before and after deserialization, the save loader will validate that everything looks okay. If it doesnt, then that component is reset to its default data values.

With this change, game saves are even more robustly protected against corruption and against breaking changes from us and from mods. Its been on my todo list for a long time, and Im very happy to have finally implemented it.

Convertible Boards - Jimmy

A few weeks ago I spoke of a new system for force-loading worlds that have potential issues. Well, this week I ported that system to work with saved boards as well!



This ensures that your saved boards will always work; when our future game updates break them, there is already code and UI in place to convert them.

Persistent Hotbars - Jimmy

In Logic World, before you place an item in the world, you must add it to your hotbar.



Previously, the items on your hotbar would be reset every time you loaded into a game. But this week Ive made hotbars persistent! The data is stored in the save file in a nice human-readable format, alongside other player data such as a players position in the world and the direction theyre looking.

Ive also started work on the backend code for saving and loading hotbars, which is a feature I hope to add soon :)


Bugs Fixed This Week


  • Fixed "Cannot initialize Cloth: scale is zero!" issues
  • Fixed a rare memory leak related to the music player system
  • Fixed not being able to auto-delete old backups that were made with suffixes
  • Fixed your settings being reset every time you start the game
  • Fixed a save-conversion log message not being triggered when it should be
  • Fixed worlds being force-loaded always instead of just in appropriate situations
  • Fixed disconnecting while placing a loaded board creating permanent "phantom components" that cannot be interacted with but nonetheless lag up the world

---------------------------------------------

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/


[ 2020-10-15 02:10:19 CET ] [ Original post ]