Very cool - nice tutorial!
I've released a few games with my home made engine (most recently https://poki.com/en/g/blaze-drifter)
My best advice is only write enough engine to support the game you want to make. Also don't try and write an editor, but add debug/editor tools directly in the game. With each game you make, you can add one or two new features to the engine, and slowly build up the feature set to be able to make larger games.
I started with a simple on screen 'watch variable', so I can visually inspect values over time. I added simple click drag edit support so I can then edit a value too. Over time I've added a (very simple) console, a simple immediate mode debug UI, graphing for the watch variables, and a little track editor (with the debug UI). Again the key is to build only what you need and only when you need it. It sounds quite a lot when I write it down, but it's all super simple and only supports the barest features that I actually need.
I recently joined a local game jam with the intent of showing off my 2D engine. Halfway through, I realized I didn't have a way to properly destroy game objects. I realized it after messing up my cooldown timer and accidentally spawning a few thousand projectiles. It's something I knew I had to do that but I kept pushing it back to work on more interesting (but less critical) stuff. Now I am building a very simple hack-and-slash game and adding engine features as needed. Documenting the process here[1] for anyone interested.
Translating the OpenGL code to Metal/Vulkan will likely be a lot of work. Have a look at [1] which is something like tutorial 1 in the series. Its super verbose!
OpenGL 4.1 was silently supported up to some version of OSX. Not sure if that is still the case. You could try changing:
import github.com/go-gl/gl/v4.6-core/gl
to
import github.com/go-gl/gl/v4.1-core/gl
and see if it works.
Is it a surprise that an education system targeting the mean produces results close to the mean? It's like training for the marathon by only doing 2 mile runs and then saying people's ability to run long distances shows little variation.
I think this is one of those issues that are presented as a hard/nuanced problem but really isn't. Single use plastic can be banned the same way lead paint is banned. That's only hard to do because of lobbying by Coke&friends. There is some inconvenience for the consumer, like having to return our glass bottles or bringing reusable containers to the supermarket but that's all doable (proof: that's how it was done before). The hard part is forcing corporate to take a profit hit.
It will put very strong pressure during the transition with a few young people supporting a larger aging population (see Japan). It's also opposed by capitalists as it goes against the infinite growth mantra (see for example Musk's comments on the subject). More importantly, it won't do anything in the short term where we need it urgently.
I think your comment is pretty reasonable, but I really can't resist making this observation.
> It will put very strong pressure during the transition...
As opposed to exponential growth? With the number of people we've got wandering around, we're one slightly-worse-than-COVID disaster away from 100s of millions to billions of people starving to death. An outcome like Japan's is significantly better than what is likely to happen in Africa.
https://www.imdb.com/title/tt8785038/