SSH #10 — The Lineman Cometh

Happy Saturday! And not even like the last time I said that, it's actually Saturday still!
It's time for some news about MEANWHILE IN SECTOR 80!
Last week, we worked up to a big playtest and had a bunch of fun playing the game.
This week, we're unveiling our new art style. In one word: lines!
Line Art!
Laura has been experimenting with line art as a way to give the game a more unique look and also improve readability of a lot of the parts. She painted a bunch of concepts within the last couple weeks on top of screenshots of the game.

We had a chat this week about what the lines mean, which made them suddenly sound easy and fun to implement, so I did!

You can click on these images to view them at full resolution. I've left them huge and uncrunched so you can see the full detail!

We really like how much the lines make enemies pop out from the environment.

I'm proud to say it: I think we're zeroing in on a proper — capital A, capital S — Art Style. We've come a long way from the vision of the game I had in mind circa gamescom and MEANWHILE IN SECTOR 80 is better for it.
Here's a little video where you can see the lines in motion:
Regulated Battery Voltage— Rasmus
Our batteries have gotten smarter and now regulate the voltage with Pulse Width Modulation (PWM) instead of internal resistance. This makes it easier to tune stuff as they will draw just as much power as you say they will as long as the batteries are rated for it. When the batteries are insufficient, stuff will draw exactly what the batteries can provide.
It was a bit tricky to get this working well together with capacitors and batteries with different voltages but it was well worth it!
Globally Illuminating
There are some weeks where I am very thankful that we have a custom engine. We can build so many specialized, powerful tools, and it's easy to reason about the entire system whenever we run into bugs.
Other weeks, I'm reminded that we've signed up to complete an absolutely herculean task. Shipping a game is already hard enough, but building everything underneath it is insane.
Nonetheless, we've been plugging away at a few cool rendering improvements!
First up, our real time GI solution is starting to look like GI! It's still not merged into the main branch of the game but it's very satisfying to see colored light bounce off of surfaces in a couple very specific scenarios.
Random Performance Improvements
Besides the GI implementation, I made our SSAO implementation over 10 times faster this week. There's an old adage that if you make something 2 times faster, you probably started doing something clever, but if you make something 100 times faster, you probably stopped doing something stupid.
Unfortunately, it was the latter. C'est la vie d'un idiot.
A Brand New Renderer
Our graphics stack is based on wgpu. It's a Rust library that provides a nice cross-platform graphics API that's safe, modern, and fast, but higher level than the APIs it runs on like Vulkan or D3D12.
wgpu has gotten us really far and I'm glad we started the engine using it. I'm not much of a graphics programmer and so it was a really awesome way to get things off the ground. If you're looking to get into graphics, I highly recommend it!
That said, we're starting to outgrow it. wgpu's main focus is on safety, and as we've accumulated a number of native extensions, we've started falling more and more outside of the target audience for the library. That's fine, but it means that sooner or later, we'll likely need to start taking on our own graphics abstraction.
So, this weekend, I started on a dedicated Vulkan renderer! It turns out it's not that hard. Here's where I got after around a day of work:

All of the geometry streaming and plumbing is done! All that's left is a little bit less rainbow, fixing some distortion, some textures, and plugging the rest of the shaders in. It's been surprisingly smooth!
When I was at Roblox, I worked with someone named Arseny Kapoulkine. He's well-known in the graphics programming space and is the kind of person who can write a whole new renderer for a new graphics backend for an existing game in a single weekend. Arseny's always been someone I look up to and that kind of talent was a big inspiration to finally take this project on in earnest.
Looking Ahead
Overall, it was a bit of a slow week. Most of the team has been enjoying some time with family or otherwise working on life stuff.
Next week, it'll be time to focus on our next set of production goals and build up to another team playtest.
See you all next week!