▶
Logic World Wednesdays: The Chatty Edition
Ive added text chat to Logic World! Finally, you can send messages to the folks youre playing with. [previewyoutube=KE2E_pE5XBM;full][/previewyoutube] I had two very excruciating hangups while working on this feature. I will tell them to you now, because sharing my pain with others helps me to process it in a healthy way. When I first made chat messages appear, there was a confusing and very annoying bug: each time a new chat message appeared, all of the chat messages would jump to a different position on the screen for a single frame. Obviously this is unacceptable; you cant have a distracting flicker appear every single time theres a new message. It seemed like the LayoutGroup responsible for setting the positions of the chat messages was taking an extra frame to fully update, so I manually updated it from code on the correct frame. But this did not work. I started digging into my LayoutGroup setup, looking for settings that might have caused the issue. I tried all manner of code-based solutions. Nothing worked -- that horrible jitter just watched me and laughed its evil laugh. I was particularly annoyed because there was no jitter in the development console, and Chat uses pretty much the same systems. In desperation, I dug into Unitys LayoutGroup source code, trying to figure out where the single frame of jitter was coming from. Unitys code here is... well, its not amazing. They do some questionable things which makes the code very hard to understand and follow. It took a lot of patience, but I eventually dug deep enough to find where errant behavior was originating from. A particular function that was returning the incorrect height value for a single frame. But this function is only called when m_ChildScaleHeight is true. Whats m_ChildScaleHeight?, I wondered. It turns out that I had accidentally checked a checkbox called Use Child Scale: Height. I unchecked this checkbox and the jitter went away. Six! And a half! Hours! For one checkbox! I do love programming, but sometimes it makes me want to throw my computer off of a bridge. The other major issue came about when I wanted to do some fancy formatting on the chat message text. Notice that in chat messages which span multiple lines, lines two through infinity are indented slightly compared to the first line. This helps the message to be distinguishable as a single cohesive object.
This is not a formatting function that is natively supported by TextMeshPro, Unitys text rendering library. Itll indent all lines, sure; itll indent just the first line, no problem; but indenting all lines except the first line? Theres no quick and easy way to do that. I love TextMeshPro a lot, but what I dont love is its documentation, or rather its utter lack of documentation for any slightly advanced feature. Figuring out how to achieve this effect involved a lot of digging through Unity forums, a lot of digging through TMP source code, and a lot of trial and error. But, obviously, I eventually got it. This one only ate up two hours of my life, but it nonetheless drove me ever so slightly slightly closer to total madness. These are the sacrifices I make for you people.
Logic Worlds modding system is extensive, but to really enable modders to take advantage of it, we need documentation for all that code. That documentation should be hosted online in an easily accessible format.. Because Logic World is written in C#, I thought that DocFX would be a great fit. It generates a website using plain HTML that describes all of the projects types and methods, and also allows you to write additional Markdown documents. However, while the resulting webpage did look and work great, I did not like how the tooling itself worked. The docfx command-line interface was clunky and cumbersome, and its also very slow for some reason. This is why I started writing SharpVue. It is very similar in concept to DocFX, however the generation is much faster and the command is very straightforward to use. Another big difference is that the resulting webpage is an SPA written in no other than Vue, which allows distributing the page as a single .html file. You can check a demo documentation page here, which can be downloaded and viewed offline as a single HTML file. Keep in mind that the project is still pretty young and there are some bugs and missing features, and dont look too closely at the contents since its all subject to change. I had lots of fun working on SharpVue, especially since I got to integrate a Vue project with a C# one which I both really like. It was also really rewarding to see the documentation slowly build up as I implemented more features.
[ 2020-11-12 02:52:39 CET ] [ Original post ]
Multiplayer Text Chat - Jimmy
Ive added text chat to Logic World! Finally, you can send messages to the folks youre playing with. [previewyoutube=KE2E_pE5XBM;full][/previewyoutube] I had two very excruciating hangups while working on this feature. I will tell them to you now, because sharing my pain with others helps me to process it in a healthy way. When I first made chat messages appear, there was a confusing and very annoying bug: each time a new chat message appeared, all of the chat messages would jump to a different position on the screen for a single frame. Obviously this is unacceptable; you cant have a distracting flicker appear every single time theres a new message. It seemed like the LayoutGroup responsible for setting the positions of the chat messages was taking an extra frame to fully update, so I manually updated it from code on the correct frame. But this did not work. I started digging into my LayoutGroup setup, looking for settings that might have caused the issue. I tried all manner of code-based solutions. Nothing worked -- that horrible jitter just watched me and laughed its evil laugh. I was particularly annoyed because there was no jitter in the development console, and Chat uses pretty much the same systems. In desperation, I dug into Unitys LayoutGroup source code, trying to figure out where the single frame of jitter was coming from. Unitys code here is... well, its not amazing. They do some questionable things which makes the code very hard to understand and follow. It took a lot of patience, but I eventually dug deep enough to find where errant behavior was originating from. A particular function that was returning the incorrect height value for a single frame. But this function is only called when m_ChildScaleHeight is true. Whats m_ChildScaleHeight?, I wondered. It turns out that I had accidentally checked a checkbox called Use Child Scale: Height. I unchecked this checkbox and the jitter went away. Six! And a half! Hours! For one checkbox! I do love programming, but sometimes it makes me want to throw my computer off of a bridge. The other major issue came about when I wanted to do some fancy formatting on the chat message text. Notice that in chat messages which span multiple lines, lines two through infinity are indented slightly compared to the first line. This helps the message to be distinguishable as a single cohesive object.
This is not a formatting function that is natively supported by TextMeshPro, Unitys text rendering library. Itll indent all lines, sure; itll indent just the first line, no problem; but indenting all lines except the first line? Theres no quick and easy way to do that. I love TextMeshPro a lot, but what I dont love is its documentation, or rather its utter lack of documentation for any slightly advanced feature. Figuring out how to achieve this effect involved a lot of digging through Unity forums, a lot of digging through TMP source code, and a lot of trial and error. But, obviously, I eventually got it. This one only ate up two hours of my life, but it nonetheless drove me ever so slightly slightly closer to total madness. These are the sacrifices I make for you people.
SharpVue Shenanigans - Felipe
Logic Worlds modding system is extensive, but to really enable modders to take advantage of it, we need documentation for all that code. That documentation should be hosted online in an easily accessible format.. Because Logic World is written in C#, I thought that DocFX would be a great fit. It generates a website using plain HTML that describes all of the projects types and methods, and also allows you to write additional Markdown documents. However, while the resulting webpage did look and work great, I did not like how the tooling itself worked. The docfx command-line interface was clunky and cumbersome, and its also very slow for some reason. This is why I started writing SharpVue. It is very similar in concept to DocFX, however the generation is much faster and the command is very straightforward to use. Another big difference is that the resulting webpage is an SPA written in no other than Vue, which allows distributing the page as a single .html file. You can check a demo documentation page here, which can be downloaded and viewed offline as a single HTML file. Keep in mind that the project is still pretty young and there are some bugs and missing features, and dont look too closely at the contents since its all subject to change. I had lots of fun working on SharpVue, especially since I got to integrate a Vue project with a C# one which I both really like. It was also really rewarding to see the documentation slowly build up as I implemented more features.
Bugs Fixed This Week
- Fixed being able to make your teleport shells cast shadows if you turned on the see your own shadow setting during a teleport sequence. Now, teleport shells intentionally cast shadows, which looks awesome, and they are properly handled by the see your own shadow setting.
- Fixed fancy pause menu music effects persisting to the main menu music
- New character controller: fixed player movement not being frozen during the first phase of the teleportation sequence
- New character controller: fixed weird collision with the ground while flying
- New character controller: fixed noclip mode not working
- New character controller: fixed inverse coyote time not working
- New character controller: fixed raycasts using the position of the player on the previous frame instead of this frame
[ 2020-11-12 02:52:39 CET ] [ Original post ]
Logic World
Mouse Hat Games
Developer
Mouse Hat Games
Publisher
2021-10-22
Release
Game News Posts:
106
🎹🖱️Keyboard + Mouse
Very Positive
(271 reviews)
Public Linux Depots:
- Logic World - Linux [1.75 G]
Build. Program. Simulate. Logic World teaches you how circuits do math.
Key Features
- Digital Logic - Build circuits that work the same way real world computer chips do.
- Challenges - Solve puzzles from simple logic gates to complex machines like calculators and data storage.
- Multiplayer - Logic World is built from the ground up for collaborative multiplayer. Take on Challenges with your friends or build together freely in Sandbox mode.
- Performance - Build massive circuits and simulate them at thousands of updates per second - all without lag.
- Modding - Logic World features powerful modding tools - the same tools the developers are using to make the game.
- Online Hub - Players can upload their builds, mods, and custom challenges and share them with other players.
MINIMAL SETUP
- OS: Ubuntu 14.04
- Processor: 2.4GHz Quad CoreMemory: 8 GB RAM
- Memory: 8 GB RAM
- Graphics: Intel HD Graphics 4000 or AMD Radeon R5 series
- Storage: 2 GB available spaceAdditional Notes: system requirements might be adjusted before release
GAMEBILLET
[ 6138 ]
GAMERSGATE
[ 3395 ]
FANATICAL BUNDLES
HUMBLE BUNDLES
by buying games/dlcs from affiliate links you are supporting tuxDB