Hah. I've been working on my own engine for over a decade, and I completely relate to this. I've torn it down and rebuilt it a few times, I've got multiple branches of it that are built for specific things... but when I want to do something I know it can't do, that could be easily done in some other engine, it just puts a bug up my butt to try and make my own code do that thing. Then I dive into code I haven't looked at for a few years and I realize that so many things could be improved. And I lose a week of sleep yak-shaving this thing that will almost definitely never be seen or used by anybody else. But I see it as a kind of craftsmanship and sharpening my own tools. I don't know another, better way to do that.
> But I see it as a kind of craftsmanship and sharpening my own tools. I don't know another, better way to do that.
Toooootalllly. This project started out for me as a learning exercise, and for a long time an explicit non-goal of the project was to ship a game. It's just my own little land that I know every nook and cranny of for experimenting and, sharpening my tools, as it were. It's also the best way I've ever found.
To be clear, your work is next level awesome and technically more sophisticated than anything I've done. Mine is Javascript based and essentially a sprite screen graph rendering engine mixed with pixel-level effects on top of canvas, with an isometric endless world platform for runners and RPGs built on top of that renderer. I did ship one game with it, back in 2016. Since then, I've relegated my commercial work in that vein to threejs and pixijs. It sounds counterintuitive, but using your own codebase like this to develop a finished commercial product inevitably forces you to pollute the purity of the code. You start to develop sets of features that are specific to the game's needs and which force compromises that shear it away from being a general-purpose green field engine. Do I still dream of the day when I finish a new game built on my own codebase....? Totally. But maintaining a game in production and not having its needs override the intent of keeping a general purpose engone is like 4x times the work.