Gnollrunner said:
but that sounds a bit optimistic
Its not optimistic, its what i have experienced. When i initially wrote my old opengl engine in 2006 (only just a few weeks after beginning to learn C language), my first attempts took a week. Then i scrapped it, because i realized it was a garbage that i wrote. Then i rewrote it, that took maybe 2 or 3 weeks, at the end everything worked as i planned to. Loading models, putting them to cordinates, cloning them, automatic texture caching, animation, camera code, lights, anim, sprites, texts, ground rendering (textured + colored height map). And some character handling features as well, like, to tell a character to walk to a given point with a given speed. I even added a few effects such as optional bloom and motion blur and i added audio support which i initially forgot.
This was totally fine and working, and even if i dont do any technical updates to it, it could have been used as is (and it was used like that).
But i was not satisfied with it, like it was limited to load up to 300k polygons in total only. I was far from being a good programmer, i didnt even knew about malloc just yet, which was one of the part of the problem, but it still worked fine. (Of course there are more than one type of programming talents. Knowing cutting edge technical stuff scientifically well is one sort of talent, but being able to write what you want no matter what, is also a talent… i think i have the second one attached to my isekai skill card).
My computer had 128 mb ram and a voodoo3 back then, so this was totally fine for the specifications of the time, even if it was far from being cutting edge, it used like 40-50 MB ram. It would been totally enough to do ANY game i wanted and it looked relatively good.
But i wanted something that scales better, so after i learned malloc, i had to redesign it, and i bought a more modern radeon 9800 graphics card and added vertex buffer object support and shadow maps and such, meanwhile maintaining backwards compatibility. This took a lot of time and the complexity flew away eventually, the code base grew from a few 1000 lines to a few 10k. This is however NOT necessary to make a game or game engine, i just decided to employ more modern technologies, and keep up with the current trends of that era. Some of these could be just simply avoided nowadays, as the raw muscles of modern computers are far stronger. When i initially wrote the thing, it even had to run on 200mhz-ish computers, you obviously doesnt have to make such extreme optimizations if you are coding todays.
I think when you quoted an example of an overcomplicated an still somewhat experimental platformspecific api (dx12) which doesnt even have widespread support and doesnt used outside of the world of AAA games for ms platforms, you are just proving my point, as i have recommended not to use state of art technology, learn the basics and use simpler solutions instead of clowning around.