Logic World Wednesdays #125: The Softly Outlined Edition
[p]Is it Wednesday again already? Yes it is. Wow. Nice. Cool. Good.[/p][p][/p]
[/p][p]Later, TUNG/LW was moved to Unity's Universal Render Pipeline, which broke all graphics effects made for earlier Unity versions, so we had to find a new outline solution. We ended up going with a modified version of PRO Outline by Knife Entertainment.[/p][p]
[/p][p]However, PRO Outline was made before 2020. In 2020, Unity broke all graphics effects made for earlier Unity versions (again). We put off updating Unity for a long time because of annoying crap like this, but in Logic World 0.92 we finally updated Unity and so PRO Outline didn't work anymore and we had to find a new solution.[/p][p]We ended up going with the Wide Outline from Ameye's Linework, which uses a really cool jump flood algorithm to give us exceptionally high-quality outlines.[/p][p]
[/p][p]While these outlines look great, they unfortunately have some performance issues. Lag from these outlines is especially noticeable by folks on integrated GPUs and especially when there are a lot of outlines visible simultaneously (such as when using the Resizing building mechanic).[/p][h2]Fixing the lag[/h2][p]To improve performance on the devices that aren't suited to the new and expensive outlines, I decided to add a new setting to choose the outline algorithm the game uses. We'll keep the existing outlines around as the high-end option while adding an option to use a faster outline method instead.[/p][p]Initially I wanted to code up a brand new outline system for this, with a balance of visual quality and performance perfectly tailored to Logic World's use case. I started working on this, but it was taking way too long, and I sort of lost motivation on it because A) Unity's APIs are super annoying to work with and B) this system, being closely tied to Unity APIs, would have to be completely thrown out when we switch to Godot in 0.100.[/p][p]So I instead looked into premade options for outlines, and I determined that the best option was to add the other two outline options from Linework. The old jump-flood outlines are now called "Beautiful", and there are two new options: "Balanced" which looks fine and is much faster, and "Fast" which looks like crap but has only a very small performance impact.[/p][p]In this table you can see what the new outline options look like and their relative performance. I've elected to do this comparison with the Resizing UI since that's where you see some of the most technically complex outlines in the game.[/p][p]Seeing these numbers, I decided to make Balanced outlines the new default. If you want to retain the same outline visuals (and performance impact) from 0.92, you'll have to manually change the Outline Style setting to "Beautiful" after updating to 0.92.1.[/p][p]This should solve all those performance issues for people! Now, hopefully I don't have to touch outlines ever again. Until we move to Godot and it has to all be redone from scratch.[/p][p][/p]
[/p][p]Pictured: @CrispyPin's Game of Life: 36 components[/p][p]It's worth noting that this is different from the concept of creation versioning (which will be coming soon 🤞): a remix implies that the new creation is based on another but doesn't unconditionally improve on it (maybe different tradeoffs were made, e.g. it's faster but also bigger), whereas a new version means that the older versions should generally not be used and that the new one is plain better (e.g. it fixes the output not being correct).[/p][p][/p]
[/p][p]Outlines[/p]
Update next week!
[p]We're basically done Logic World update 0.92.1, which fixes many minor issues with update 0.92. We intend to release 0.92.1 next week.[/p][p]You can test the almost-finished update right now in the [c]public-previews[/c] branch. Instructions for that along with a changelog for today's preview update are at the end of this post.[/p][p]Are there any last minute changes or fixes you really want to see in this update? Let us know![/p][p][/p]New outline styles - Jimmy
[p]Logic World uses an "outline" effect to highlight certain objects in the world. The outlines have been problematic recently and so this week I staged an intervention.[/p][h2]A brief history of outlines in Logic World[/h2][p]In the earliest prototypes for Logic World, then called The Ultimate Nerd Game, I used a library called Outline Effect by Cakeslice. When I had performance problems, I ended up forking Outline Effect into a library called Outline Effect But It's Faster. This was my very first time doing open source work![/p][p][p]Outline Style[/p]
[p]Fast[/p]
[p]Balanced[/p]
[p]Beautiful[/p]
[p]Method[/p]
[p]Extruded mesh via Linework's Fast Outline[/p]
[p]Dilated silhouette via Linework's Soft Outline[/p]
[p]Distance field and JFA via Linework's Wide Outline[/p]
[p]Screenshot (click to view)[/p]
[p]
[/p]
[p]
[/p]
[p]
[/p]
[p]FPS while resizing (3840x2160, Linux, RX Vega 64)[/p]
[p]160[/p]
[p]140[/p]
[p]97[/p]
Creation Remixes - Felipe
[p]A few days ago I was browsing the Logic World Discord server and noticed a few people iterating on the design of a circuit, sharing each attempt as a subassembly on the Hub. When I opened each one to see the implementation, I realized that it would be great if you could properly link two creations and say "this one is based on that one" without having to manually write this in the description and add a link.[/p][p]Thus, when uploading a creation you may now specify which existing creation it is based on (or "remixing"), which will show a link to the original creation on the sidebar of the new one:[/p][p]0.92.1 Preview 41 changelog
[p]Here's everything new in 0.92.1 Preview 41, since Preview 21 last week. You can play it right now by opting into the 'Public Previews' Steam branch. opting into the 'Public Previews' Steam branch.[/p][p]- [p]Added setting: "Outline Style"[/p]
- [p]Added two new outline styles, "Fast" and "Balanced". These are alternative outlining techniques that look worse in exchange for more performance. The old outline style is now called "Beautiful".[/p]
- [p]The default outline style is now "Balanced".[/p]
- [p]Changed the default outline thickness from 5 to 4.[/p]
- [p]Changed the minimum outline thickness from 1 to 2.[/p]
- [p]Changed the maximum outline thickness from 50 to 20.[/p]
- [p]Fixed a visual issue where the color of outlines would be affected by the Resize Component UI.[/p]
- [p]When you place a subassembly with multiple roots, the game now properly saves the placement info (i.e. rotation, flip state, etc) for all the roots. When you place a multi-root subassembly multiple times, all roots will be placed the same way you set it on the preceding placement.[/p]
- [p]Fixed the Back Mouse Button and Forward Mouse Button being swapped on Linux.[/p]
- [p]Fixed not being able to bind some keys (i.e. Escape, Back Mouse Button) because they close the keybind edit UI.[/p]
- [p]Fixed StackOverflowException when a very large number of pegs are connected.[/p]
- [p]Slightly improved the performance of calculating the circuit graph (disclaimer: you won't notice).[/p]
0.92.1 Preview 54 changelog
[p]Editing to add this section 2025-11-15: we just released Preview 54 as a followup to Preview 41. Here's what's new.[/p][p]Graphics[/p]- [p]Fixed some shadows not disappearing if you disable shadows after they were previously enabled.[/p]
- [p]Fixed the hole at the top of the mountain in the Test World not rendering correctly.[/p]
- [p]Fixed the multiplayer avatar preview looking like crap if accessed in the main menu with SHINY BOBBY enabled and real-time reflections disabled.[/p]
- [p]Realtime reflections are now disabled by default.[/p]
- [p]Balanced outlines no longer have configurable width. Their width is locked to a low value to ensure good performance. (Other outline styles don't get significantly slower with high widths, but it absolutely tanks performance on Balanced.)[/p]
- [p]Reverted the changes to min/max outline thickness from the last preview.[/p]
- [p]Flip is now shown while placing/grabbing/cloning a flippable object.[/p]
- [p]Board Rotation Up/Down is no longer shown when placing/grabbing/cloning a flat board.[/p]
- [p]Added settings preview image for Outline Style.[/p]
- [p]Added settings preview image for Realtime Reflections Enabled.[/p]
- [p]Fixed the text box for sliders sometimes showing the wrong value after manual modification.[/p]


