April 02

On Friday, 28 March 2025 at 22:44:56 UTC, Hipreme wrote:

>

On Thursday, 27 March 2025 at 06:27:19 UTC, Lewis wrote:

>

On Thursday, 6 March 2025 at 15:35:19 UTC, Element Green wrote:

>

On Saturday, 1 March 2025 at 09:04:47 UTC, Lewis wrote:

>

The game should run fairly well in Proton. That said, at the time of writing, some Proton players are seeing a bug where the wall paint flickers quite obnoxiously. I'm actively working on a fix, but if you start playing and encounter this bug too I'd probably advise holding off just until I can get a bugfix out for that issue. It looks pretty annoying to try and play with.

Thanks for the info. I'll take your advice and wait until then. Looking forward to it!

For anyone coming to this later, the Proton flickering bug should be fixed now :)

That's interesting! How did you fix it?

It turned out to be debug code in a shader that was accidentally getting compiled in. The debug code checked a constant buffer value indicating whether the level editor was active, and if so it disabled the paint-in effect (and just made everything fully painted in).

In release, we don't bother ever setting this isLevelEditorActive parameter, since the editor is compiled out of the release build and thus unusable. But this bad debug code was still using the parameter. And since nobody was setting the value, the value was unspecified. On most GPUs/drivers, it seemed to be defaulting to 0, aka no editor, so it worked out by accident. But when using Proton, for whatever reason, it didn't default to 0 and instead had random unspecified values, so it flickered between on and off.

A classic case of a bug that was occurring on all machines, but only actually showing observable symptoms on a select few. The good news is that I installed a Ubuntu dual boot in order to track this down, so I can now just test on Proton as a matter of course when pushing out updates.

April 02

On Wednesday, 2 April 2025 at 09:37:44 UTC, Lewis wrote:

>

On Friday, 28 March 2025 at 22:44:56 UTC, Hipreme wrote:

>

On Thursday, 27 March 2025 at 06:27:19 UTC, Lewis wrote:

>

On Thursday, 6 March 2025 at 15:35:19 UTC, Element Green wrote:

>

[...]

For anyone coming to this later, the Proton flickering bug should be fixed now :)

That's interesting! How did you fix it?

It turned out to be debug code in a shader that was accidentally getting compiled in. The debug code checked a constant buffer value indicating whether the level editor was active, and if so it disabled the paint-in effect (and just made everything fully painted in).

In release, we don't bother ever setting this isLevelEditorActive parameter, since the editor is compiled out of the release build and thus unusable. But this bad debug code was still using the parameter. And since nobody was setting the value, the value was unspecified. On most GPUs/drivers, it seemed to be defaulting to 0, aka no editor, so it worked out by accident. But when using Proton, for whatever reason, it didn't default to 0 and instead had random unspecified values, so it flickered between on and off.

A classic case of a bug that was occurring on all machines, but only actually showing observable symptoms on a select few. The good news is that I installed a Ubuntu dual boot in order to track this down, so I can now just test on Proton as a matter of course when pushing out updates.

Oh that makes a lot of sense! There exists a lot of issues in regard of unused shader variables, so, it is a must check every time. On OpenGL, for example, if a variable is unused, it might get removed from the shader and trying to set it somewhere will cause issues. Uninitialized is almost on the same ground of undefined behavior

April 28

On Monday, 24 February 2025 at 03:08:11 UTC, Lewis wrote:

>

Hello! I'm Lewis, a solo developer from Vancouver. I've been working on The Art of Reflection for ~4 years. It's basically Superliminal meets Viewfinder with mirrors, with a bit of Portal and The Witness thrown in for good measure.

I built the game and engine from scratch in D, using D3D11, PhysX, FMOD, and a few other libraries. Happy to answer any questions about the process, but in short I'm super happy with my decision to use D. I honestly can't really imagine going back to C++ at this point.

You can play the demo right now if you want to give it a spin. Feedback is always welcome and appreciated.

Thanks so much for your support!

-Lewis

Congrats on getting the demo out! I guess that means there's at least 2 pieces of DLang software on steam now, heh. It is a little disheartening to see the strict dependency on DX11 though. I do happen to have porting experience w/ Metal and Vulkan, so if you wish to natively port your code to macOS and Linux do feel free to poke me! (+ I offer contract porting services through my business if that has any interest)

May 07

On Monday, 24 February 2025 at 03:08:11 UTC, Lewis wrote:

>

Hello! I'm Lewis, a solo developer from Vancouver. I've been working on The Art of Reflection for ~4 years. It's basically Superliminal meets Viewfinder with mirrors, with a bit of Portal and The Witness thrown in for good measure.

I built the game and engine from scratch in D, using D3D11, PhysX, FMOD, and a few other libraries. Happy to answer any questions about the process, but in short I'm super happy with my decision to use D. I honestly can't really imagine going back to C++ at this point.

You can play the demo right now if you want to give it a spin. Feedback is always welcome and appreciated.

Thanks so much for your support!

-Lewis

I'm so glad you posted this! I've done many game projects (usually D and DAllegro) for many many years but nothing worth completing. I've written similar things with static pools for everything, and for strings I massively sped things up by writing a simple static string class that just allocates larger if it needs to be. Before when I started storing debug data inside my game objects, I was hitting like 1500 allocations a second, it was absurd. I've long wondered about using DLLs, as well as template compilation time. I remember when simply including std.regex quadrupled my compile time.

Have you considered doing a blog writeup on your experiences, hacks, and changes? I'd love to read it.

1 2 3
Next ›   Last »