site banner

Tinker Tuesday for October 15, 2024

This thread is for anyone working on personal projects to share their progress, and hold themselves somewhat accountable to a group of peers.

Post your project, your progress from last week, and what you hope to accomplish this week.

If you want to be pinged with a reminder asking about your project, let me know, and I'll harass you each week until you cancel the service.

Jump in the discussion.

No email address required.

Migrated most of my backend code from Godot to Stride. It's still WIP; I ended up leaving out a lot of elements that could not be ported cleanly with big old "// TODO: Redo for Stride." comments; a lot of work that would need to be done to get it all back up and running.

Qustion is - do I want to reactivate all that, or reinvent it from the ground up again? Or should I maybe do something simpler for once, rather than try to build yet another overcomplicated, undervisualized and non-interactive simulation?

Other than that, a recurring theme was which data types (Vectors, Quaternions, Matrices etc.) to use for coordinate systems and geometry. Dotnet types, Stride types, or homebrew types? Each has advantages - the dotnet ones migrate cleanly, the Stride types should have the best performance since no casting is necessary, and the homebrew types migrate cleanly and would be best-adapted to my backend use-cases, but of course probably contain more errors than the dotnet types.

Right now I think using the Stride types is the best option; it will hurt migratability (is that even a word?) for future engine switches, but the performance benefits and reduced need to cast will be valuable. OTOH they won't cover all use cases, since much of my physics backend runs on double-precision, and indeed should continue to do so. I am not confident in my decision.

At this point I have almost completed the migration of my Godot backend to Stride. Over 900 compiler errors fixed. There are holes though. anything that did rely on builtin engine classes got a makeshift makeover that didn't always take prisoners. I have a lot of NotImplementedExceptions on my hands now. I did get some refactoring done on the way, but overall the damages exceed the benefits for now. None of this is going to work without many days of additional effort.

I'm thinking of just fixing the last few compiler errors and then putting together a simplified demo that doesn't require the more borked parts of my backend for now, so I have something visual to tinker with while working on the simulation aspects in parallel.