Если цель сделать коммерческую игру в разумные сроки то лучше не изобретать велосипед и все же использовать готовые движки - Unity(c#) или Unreal(C++). Если цель сделать игру, но при этом еще и "поиграться", то можно спустится на уровень ниже и собрать ее из компонентов типа (Ogre3D для графики, bullet/box2d/physx/havoc для физики, openal для звука и т.д.). Ну а если хочется совсем хардкора - вам сразу на уровень графических API: directX, openGL, vulkan. Последний самый перспективный, так как новый и кроссплатформенный.