Going Native
So far its been a little of an uphill battle, and I don't expect it to have similar functionality to the website version for some time - I have yet to even look at how I'm going to do audio. I hope however that by the end of this year (2021) I will have a large chunk of the program together. Alongside, I will also be working on the website. Partly so that if the bug is ever fixed, I don't feel like I've left it to languish for all this time. Partly so I don't feel like I'm eternally in this loop of restarting.
I am using WGPU for the graphical back-end. Luckily I had most of a rendering engine already written in Rust as I had been rewriting most of the website version's rendering engine to use webASM, so I was able to copy over a lot of that code into this project and currently have a version of the engine working nicely. At the moment it can only render rectangles, but I have tested it on my desktop as being able to render around 2,000,000 rectangles in a second. Much faster than the top-speed I could get from the website version, which was about 720,000. Also thanks to the fact I could copy a lot of it over, the engine already has a moveable viewport, element render judgements, frame skipping, stencilling, a tree-based element data structure, extremity calculation, and more. Plus all the mouse/keyboard interaction code that I had been working on most recently. And one or two small editions along the way that I forgot to add in the website version, for example, multi-level stencilling. Much has had to change thanks to the switch from webGL to WGPU which has added a whole new host of issues, but I'm confident that it's shaping up to be a faster and more stable version of the engine. I hope in future to re-write certain parts to expand functionality, though currently I am trying only to match what the original can do.
I'm going to keep the code secret for now, but above you can find completed applications that I've put together as I develop the larger project.