There's a lot of times in which I'll go back on my stuff and go, WTF was I thinking making these many functions and calling them a bunch of times. We have the tools to make really great fast and perfectly sized games, we also have the tools to make really slow bloated games. The motto should be "If at first you do succeed, try try again to make it more optimized!"Also, I'm not sure that switching to different apis will give noticeable performance boost. Like with every game engines, to be elastic enough for general use, it need to have pipeline which sometimes isn't most optimal, but allows lot of flexibility for programmers, and simplifies a lot, so lot of performance is lost in exchange of flexibility. For example - check @matharoo tutorial about fast grass ( youtube.com/watch?v=MTdAdVt4EIM ) - while it's still GMS, performance raises dramatically, so I would say that for most of games, if there are any slowdowns - there's for sure lot of room to optimize them with existing tools, and it should be game developers who tries to tear every FPS from games, not YYG. Those cases doesn't need new graphical API, but better knowledge of tool that we're using.
But drawing is just a part of engine - performing every step of game, events, computations. etc isn't done by graphics API, but by virtual machine, so for many games even changing graphical engine would give same result, as they might have unoptimized code outside of draw (like in many cases we're computing various things inside draw event, while it should be only to draw, but lot of us checks keyboard or mouse events there).
I've got a game in which shadows are generated by shearing sprites on surface and then surface is drawn with alpha channel. On Xbox UWP that causes poor performance about 10 FPS instead of 60, but when I used vertex buffers - it went up to 60 FPS, with same amount of graphics rendered. I think that even with vulcan, using
draw_sprite_poswould still cause same performance problems, and instead of changing graphical engines (Apple forces it sadly), they should just learn us how to squeeze current engine to get most satisfying results. Or maybe prepare some helper functions/features, to optimize drawing by having less texture switching etc.
I would love to see detailed articles about optimizing games, and benchmarks on how much they were optimized giving same display result. Teaching people with few articles and examples to download might give same boost performance in games that changing graphical engine - without any need to touch engine code, which would lead to thousands of new bugs.
tl;dr - instead of changing/optimizing graphical engine, YYG should teach us how to optimize our games better as current engine might be more powerful that it seems.