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: The Grabby Edition

Grabbing Rotations - Jimmy
You can now easily move objects around, and their rotations are all handled properly.

[previewyoutube=fxMjvSb0QtA;full][/previewyoutube]

This is part 1 of 2 in my Grand Plan to Make Rotating Boards Less Awful and Difficult. You should be seeing part two next week.

Generalized Packet System - Felipe
To send data between the client and server, we use packets. These are small bits of data that the game uses for communicating things like when a player has placed a component. Previously, these packets were hard-coded, meaning that whenever we wanted to add a new packet type we needed to manually register it.

A big issue with this approach is that mods were not able to add their own packet types. For this reason, Ive made this system more expandable: instead of packets having their own hard-coded ID they will be assigned an ID when the game starts. This will be very helpful for mods, as they will be able to send and receive their own data, independent from the rest of the game.

Fancy Circuit Optimizations - Felipe
This week Ive also been working on optimizing the code that does all the circuit simulation, namely the clusters system and the circuit states system. The most interesting one is probably the clusters one, since it involved more thinking rather than coding.

Clusters are an internal structure we have within the simulation. A single cluster represents a group of pegs and wires all connected together. Since everything in the group will turn on and off at the same time, they can be treated as one object rather than several.



Previously the clusters that needed to be updated were stored on a simple list, which stored references to all of those clusters. This worked just fine, however it wasnt the most efficient approach.

Since we only ever iterate through the clusters one after the other, we do not need the ability to get, for example, the fifth cluster in the list. Instead, we only really need to know which cluster is updating first, and which one is updating after it. This is very similar to the concept of a linked list, since each cluster just has to store a reference to the next cluster. This is much more efficient than using a list, since all the operations we need are O(1) (which basically means it always takes the same amount of time, no matter how many clusters there are) on a linked list.

Theres also a distinction between a doubly linked list and a singly linked list: an item in a singly linked list only stores the reference to the next item, while a doubly linked lists item also stores a reference to the previous item. In theory we would need a singly linked list since we only ever go forward when updating, however using one would mean that we wouldnt be able to remove an item thats not the first or the last one (for example when you remove a component and we need to remove it from the list, its very likely its in the middle). For this reason, we need to go with a doubly linked list.

We could use C#s generic LinkedList class, however it could introduce more overhead with unnecessary features and end up actually being slower than our old way of doing it. For this reason, clusters will instead build their own linked list of sorts, manually storing the previous and next clusters that are updating. When we want to update all of them we simply get the first one, update it, then check which cluster is next and repeat until weve reached the end.

I was going to make a cool graphic diagram to demonstrate the concept, but unfortunately Im far from a graphics designer so if youre interested Ive made a text document detailing what happens when you add or remove a cluster.

This should also drastically improve the performance of Relays, as those components work by creating and destroying clusters. However, we haven't been able to get numbers on that yet.

Bugs Fixed This Week


  • Fixed vertical flying controls getting "stuck" when Lock Flight Y Axis is off
  • Fixed Color Picker often opening by default to a white color
  • Fixed Gridlands worlds by default being created as pure white
  • Fixed boards flying away like a butterfly if you grabbed them at an angle that didn't immediately provide a reference location
  • Fixed crazy errors next time you load a save if you quit to main menu while placing a component
  • Fixed Edit Label Menu not doing "select all" when it's opened
  • Fixed fatal error when spamming the rotation key on buttons and keys


PLUSHIE BOBBY
The amazing -- whom some of you might know as NITRO -- has made a gosh darn plushie of Bobby, Logic Worlds beloved protagonist and mascot.



Click here for another photo!

This is pretty much the best thing ever and it has absolutely made our 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/


[ 2020-06-18 12:43:20 CET ] [ Original post ]