Our great sponsors
-
LearnOpenGL
Code repository of all OpenGL chapters from the book and its accompanying website https://learnopengl.com
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
I've spent several decades in-n-out trying to roll my own engines. Actually gave up ~16 years or so ago. Until the past few years, where my kid, started showing an interest in game development(not just design). We started off with Unity mostly, some UE work, but she preferred Unity cause it was simpler to her. Then she wanted to know more about the lower level stuff. We had some success utilizing learnopengl.com for the gfx and flecs(an ECS lib) as a basis for the engine logic. Her attention span is as short as mine, so that is as far as we've gotten. However; I did find learnopengl and flecs to be a nice pairing for a roll your own engine project.
I would recommend using a simple framework, so you don't get too deep in learning a graphics api, without doinn anything with your game. Something like raylib is an easy way to get something on the screen and mess around with it, without using a fully featured engine.
For the start I'd recommend to get SFML, do some basic tutorials and make a simple game. This framework takes away a heavy lifting of window creation, input handling, rending and audio and allow to make games by drawing shapes etc. In addition check the Game Programming Patterns to learn about basics of game programming, like game loop, singletons, state machines and more. This should give you a rather smooth entry into the game programming :)
My advice, if you REALLY want to get into writing engines in C++ - go look at Godot. It's fully open source and written in C++. It'll give you tons of stuff to look at and learn from - and when you're ready you can try implementing APIs for other things or create custom plugins.
This definitely helped me https://github.com/miloyip/game-programmer also learn-opengl.com
I loved how it had plenty of varied exercises, and they were always at an appropriate difficulty level. As for solutions to the exercises, I found this GitHub repo helpful.
I prefer https://vkguide.dev/ and of course having the spec open while programming is a good idea: https://www.khronos.org/registry/vulkan/
Understanding C also makes it FAR easier to reason about the run-time cost of code since you don't have potentially implicit information such as vtables, hidden this pointer dereferences, RTTI, dynamic casts, etc. C++ also performs like shit if you use the standard iostreams, hashing, etc. unless you use 3rd party replacements. Learning C first will lead to healthy skepticism instead of just blindly trust bloated, over-engineered libraries like Boost.