Hacker News new | ask | show | jobs
by eek2121 1068 days ago
I partially blame modern game APIs such as DirectX12/Vulkan. Note that I am not saying these APIs are bad, just that the “programmable” part has no default, leaving it up to the developer to figure things out.

There was a time when you didn’t need to know what a shader was to build a game engine/game. The fixed function pipeline was super simple. Limited, but simple.

Vulkan and DirectX 12 made things even more complicated because they wanted to have better multithreaded support.

Engines try to bridge the gap between the APIs and games, but they end up creating an entire set of new things (like “scenes” and “nodes”) or entire new languages (like gdscript) that you have to learn. (yes I am aware that Godot supports multiple languages)

These days I probably use monogame the most. It seems to provide just enough to make things “easy” for me without introducing a ton of new stuff as a learning curve. Outside of that, OpenGL still exists, and you can probably find some basic shaders should have have no desire to learn all about pixel/vertex/whatever shaders.

…or maybe I am just old and cranky and miss the good ole days.

3 comments

If you want the 'good old days' you can just take an old computer, emulator or 'simple' game engine which just exposes a few drawing primitives.

Vulkan or DirectX are made for current high-performance applications. Not stuff you put together on a sunday afternoon. They reflect the capabilities of today's hardware and therefore are complicated.

Engines like Godot expose some new concepts, but those are really not very complicated. You'll probably invent them on your own before finishing your first game. And then discover Godot developers did a better job after years of iterating.

I'm curious what games you made without the concept of a scene or node.. at least from an code organisation standpoint.

I used to try and write GLES games back in C++98 out of highschool. I find modern engines much quicker and easier to understand and use

Nothing you can find these days. I seldom released my work.

I made a partial clone of the Warcraft 2 game that could load assets from the original game. It used the Windows GDI and native win32 APIs for everything. It was written in C. No classes, much less 'nodes' and 'scenes' and such. It used no code from other projects. I used available documentation and a hex editor to understand the different file formats. The first time you ran the game, it would extract the assets and convert them into something easier to read/write. The only limitation is that it did not have AI and none of the scenarios worked. You could absolutely load up any PUD, however, and move units around. If I would have added networking support, you could have battled it out, since the mechanics were in place.

I also had an MMORPG I was working on, but never finished. Client and Server cores were working great. The server was written in C++ (due to some COM components and other libs) and the client was C/OpenGL. I never finished it due to joining a startup and having no time to invest into it.

I also built a voxel engine in OpenGL. It was still in a very primitive state, however.

There were some other projects, some of which were sent to friends.

If I can find where these old projects are stored, I may open source them at some point. I also have non gaming projects I'd like to release, including a shareware project I made.

The classic “the gorilla and the entire jungle” problem