Logic World Wednesdays: The Advancedly Queryable Edition

by @MouseHatGamesDeveloper2 months ago

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.

tracker query.png

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.

new lw status page.png

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.

2.png

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!

More Logic World Wednesdays


2 comments
@Ecconia2 months ago

Note to self: NEVER OWE JIMMY MONEY (He might beat me up, as if I owe him money).

Yay website filters. Now we only need sorting by latest edit of content/status/comments on the issue tracker and everything else, to much faster find changes.
And the status was already helpful. Although the content message of the webhook could be refined. One has to click the link to really know the rough details.

Looking forward to learn how the network issues got fixed, due to several conceptual “mistakes” that had been made. (Prays it was not hot-glued)

Nice things are moving, wohooo!

@JimmyDeveloper2 months ago

Looking forward to learn how the network issues got fixed

It was embarrassingly simple, once I’d diagnosed the problem. The game needs to detect whether the system supports IPv4 or IPv6. In 0.90, it does this by iterating over all the local addresses on all the system network interfaces and checking the protocol of those local addresses. This is of course extremely dumb and fails in all sorts of scenarios. I have no idea what I was thinking when I wrote it, other than “[incoherent screaming]” as this code was written near the end of the most stressful period of my life, the two months prior to the launch of 0.90 when I was working 100-hour weeks. (Not healthy, do not recommend.)

In 0.91, we use the built-in functions Socket.OSSupportsIPv4 and Socket.OSSupportsIPv6 . Unlike my versions of these functions, they actually work properly and don’t break when the network setup is slightly unusual.