I made a game and engine in D that's a cross between Superliminal and Viewfinder, and you can play the demo now
Lewis
musicaljelly at gmail.com
Mon Feb 24 10:51:09 UTC 2025
On Monday, 24 February 2025 at 10:27:00 UTC, Vladimir Marchevsky
wrote:
> 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](https://store.steampowered.com/app/2290770/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
>
> Congratulations on such a great achievement! Do you use D
> restricted to betterC subset, avoiding GC and everything
> related?
I don't strictly use betterC, but I do avoid GC usage in all
frame-to-frame gameplay code. I allow myself GC usage for debug
code, editor tools, and major state changes where a hitch is okay
(eg. startup, loading a save game).
The bulk of my frame-to-frame allocations are handled by an
object pooling system that reuses elements and grows if needed. I
also have a per-thread linear allocator that resets after each
frame, useful for scratch allocations that don't need to outlive
a frame. I made some minor changes to druntime so that in any
given scope I can switch into "scrapheap mode" as I call it, at
which point all GC allocations get redirected to my linear
allocator until the scope exits. This lets me use phobos,
druntime, and other libraries even if they would allocate to the
GC in a problematic way. As long as the allocation doesn't need
to outlive the frame, I can use the library unmodified by just
switching into scrapheap mode.
More information about the Digitalmars-d-announce
mailing list