1. Logic World
  2. News

Logic World News

Logic World Wednesdays: The Even Clickier Edition

Chair-only Keys - Jimmy


I added a much-requested option to Keys that only allows them to be pressed while sitting in a Chair.

[previewyoutube][/previewyoutube]

Even More Configurable Action Wheel - Jimmy


I added a slider to the Action Wheel to change its size, as well as a button to reset the Action Wheel to its default configuration.

[previewyoutube][/previewyoutube]

I'm planning to add even more customization options to the Action Wheel later, like changing the inner radius of the segments and the opacity.

Even Clickier Switches - Jimmy


I added a nifty little feature that lets you quickly set a whole line of switches to a single state.

[previewyoutube][/previewyoutube]

Web Request Tracing - Felipe


As you know from previous LWWs, the logicworld.net website's backend is made up of many individual services, each responsible of a number of tasks. When you make a request to the website, the main web service calls all of the necessary services, which in turn can call other services. This can make it difficult to know what actually happens when a request is made, since there is no way to know how the service calls are related to one another.

To remedy this, there is a thing known as tracing. When implemented in a system such as ours, tracing adds metadata to each call that associates it with the top level call, allowing us to know why and when a service is called. This also makes it easy to identify performance bottlenecks, since we can know what took the longest time.

I've now implemented tracing for all of logicworld.net's services. This will make the web services easier to debug and to optimize.



0.91 previews coming very soon


We are almost done with 0.91, the first major update for Logic World. It is on track to be fully released later this month. Before that, though, we'll be releasing it "in preview". This means you'll be able to opt-in to downloading the update early, but it isn't guaranteed to be 100% stable. The primary purpose of the preview releases is to get more people and systems hunting for bugs, so that the full release can be as bug-free as possible.

If all continues to go well, public 0.91 previews will begin later this week :)


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

To make sure you don't miss the next blog post, you can sign up for our newsletter. Be sure also to wishlist Logic World on Steam and join the official Discord.

See you next Wednesday!

View this post on logicworld.net

More Logic World Wednesdays

Logic World Wednesdays: The Advancedly Queryable Edition

Super Sortable Issues - Felipe


I've been working on improvements to the Logic World issue tracker that make it easier to navigate the growing list of tracked issues. You can now input an advanced query that sorts issues based on their status, type, tags, title, and body contents.



The '|' and '&' characters can be used, respectively, as "or" and "and" operators. When querying issue title and body contents, regex is supported.

This new querying helps us immensely in finding specific issues, viewing issues in a specific category, and determining what issues to work on next. In the future I plan to add a UI for generating these advanced queries, similar to what Github has for issue sorting.

Status Shenanigans - Felipe


I created a new status page at https://status.logicworld.net/. This page monitors for outages in the Logic World services, and provides a place for us to announce any planned downtime.



There's also a feed in the Logic World discord server that automatically posts status updates using webhooks.

As Logic World grows, we will have more services, and more people will rely on them, making it important to have this status page.

Less Forgettable Image Attachments - Felipe


The logicworld.net system for including images in forum posts or tracker issues requires you to first upload an image, then insert that image into the body of the post. However, many users did not immediately understand this flow, and assumed that once they'd uploaded an image, it was already part of the post. The users were confused when they made the post and the image was not included with it.

To help users understand the flow better, I've added a little warning when an image has been uploaded but not included in the post.



Beating Up Bugs like they Owe me Money - Jimmy


In preparation for the release of update 0.91 -- which I think I'm going to christen "The Less Buggy Update" -- I've been hammering away on more bugs and stability fixes. This has been made much easier thanks to Felipe's work on improving the issue tracker, thank you Felipe!

Notably, this week I fixed some nasty simulation glitches that were plagueing Dynamic Components (components with a variable number of input/output pegs, such as AND gates). #104 and #250 are no more (#104 had a pretty interesting cause, click to read my comment about it). And I also 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, and others). I'm VERY sorry those issues were in the game for so long, I know they've caused a lot of frustration :(

We are on track for a 0.91 release in late September, and I expect we'll start public previews of the update next week.


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

To make sure you don't miss the next blog post, you can sign up for our newsletter. Be sure also to wishlist Logic World on Steam and join the official Discord.

See you next Wednesday!

View this post on logicworld.net

More Logic World Wednesdays

Logic World Wednesdays: The Uneventful Edition

Greetings Gamers,

I haven't been able to work on Logic World much this week, but in the time I've been able to carve out for it I've been plugging away at bugfixes and stability improvements. My current task is sorting out the various networking issues with the game. I hate networking. What a mess it all is. Can somebody remind me why I decided to make this game multiplayer?

This week I made a decision I'd like to share with you: we'll be reducing the scope of update 0.91 in order to get it out to you faster. I'm aiming to publish 0.91 around the end of September, with a public preview sometime before that. 0.91 will contain performance enhancements, a whole lot of bugfixes & stability improvements, and a few smallish features like the simulation controls. Meanwhile, the new building mechanics I've been planning -- included the much-coveted ability to save and load subassemblies -- will be coming in update 0.92 a few months later.

More development updates soon! Not too soon, though -- I'll be on holiday with my family next week, so I won't be around for a LWW. I expect the blog will return on the 31st.

Keep on Gamin'

Logic World Wednesdays: The Hot-Reloadable Edition

GREETINGS! It's been another fairly unexciting week for me, but I've continued to plug away at miscellaneous maintenance tasks. Although Hofstadter's Law continues to out-Hofstadter's Law me, lots of work is getting done on Logic World and I am super excited about how development is going.

Here are some highlights from my work week:

[h3]Hot-reloadable SUCC files[/h3]
If you've poked around in the Logic World game files, you've probably noticed that there's a lot of data stored with my custom SUCC file format. In order to assist with development & debugging, I've made most of these files hot-reloadable: you can edit them on disk, and when you save the file, the game will reload the appropriate data and even update the user interface to reflect it. This includes `settings_master.succ` and its 100+ secret settings -- you no longer need to restart the game to change them.

Note that this change applies to SUCC files outside the `GameData` folder. `GameData` files (i.e. mods) already have some SUCC hot-reloading support in 0.90.

[h3].NET 6[/h3]
I've upgraded the server runtime from .NET Core 3.1 to .NET 6.0. This is a more modern .NET and brings with it gratuitous performance improvements. I haven't really tested to see how it affects LW, but it seems kinda faster!

[h3]The Most Important Video Game Feature in the History of Video Game Features, Maybe Ever[/h3]
I made the inverter output render as "on" in the item thumbnail.



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

Thanks for reading! More soon. Love, Jimmy

Logic World Wednesdays: Thrilling Thumbnails

Hello Logicians! I've had a fairly pedestrian week of development, working on miscellaneous maintenance tasks. For example, I polished off last week's work on fixed point positions by updating the save format version: position data is now saved and loaded as fixed-point instead of floating-point, matching the new data structures that are used internally. I also added a save converter to the new format so that you can use all your 0.90 saves in 0.91, and I updated the sandbox list UI to notify the user of which saves are using the old format and need to be converted.



But my biggest task this week by far was to make some major updates to the world objects shader. This all started when I decided to address an issue with how thumbnails (the little isometric component graphics that appear in the Selection Menu and on the hotbar) are rendered. In 0.90, thumbnails look different depending on the scene in which they are generated. This is because the thumbnail renders use exactly the same materials as are used to render objects in the world. World objects are affected by environment lighting, so thumbnails are too.



This is kind of weird, but it's not a big deal in 0.90; I'm not sure if anybody but me has even noticed it. However, for some upcoming features I plan to add for 0.91, thumbnails really ought to be generated consistently and reliably, and look identical no matter where the generation happens.

So, I've upgraded the shader I wrote for GPU instancing. It now has two lighting modes: environment lighting and custom lighting. We use this new "custom" lighting mode for thumbnail renders, and so now it doesn't matter where they're created, they always have consistent lighting. I also added support to the shader for rendering in non-instanced mode, so we can use it for non-instanced decorations like the clicky part of buttons and switches, and these decorations will also have consistent, custom lighting applied to them in thumbnail renders.

Here's the result:



If you look closely, you'll notice a few more differences in the appearance of thumbnails between 0.90 and 0.91:
  • Thumbnail renders are now anti-aliased, so the lines are smooth instead of jaggy. I already did this a few months ago, but I remember it was REALLY HARD so please appreciate it anew!
  • I fixed some artifacts along the edges of thumbnail renders, most noticeably in components with pegs that go right to the edge like D-Latches and Sockets.
  • The lighting is softer, with less contrast between the sides and tops of blocks. For now, the lighting otherwise emulates the 0.90 Grasslands appearance, but I'm still tweaking this. There will be secret settings for all the variables of thumbnail lighting, in case you want to customize it :)

Also: while I was mucking around in the shader code, I found a way to make it run a little bit faster! So that's nice.

It's such a small, subtle change, but it took hours and hours of banging my head against the code to make it happen. I'm still very new to graphics programming; I'm learning quickly, but this stuff is still taking me 10x longer than it would for someone experienced. However, it's all done now. Thumbnail lighting is independent of environment lighting, my shader is faster and more capable, and the shader code is much more organized & reusable. I'm happy with the graphics work I've done this week.

I've got a few more small maintenance tasks on my list -- none of them nearly as daunting as shader work, thankfully. After those are taken care of, I'll spend most of the next two weeks on bugfixing. Thank you to everyone who's reported a bug in 0.90 (especially Ecconia
Thanks for reading. See you next Wednesday.

-Jimmy