Надо понимать, какая игра и для чего используется. Если серьезная работа с графикой, то это чаще всего С++ с разными библиотеками, от физики, до звука и подгрузки скриптов. Из графических API используют DirectX, сейчас Vulkan подоспел. Вообще, большие фирмы допиливают свой движок, который у них уже давно есть, а маленькие покупают чужой. У каждого движка свою плюсы и минусы, где-то дописывают сетевую часть.
Если игра браузерная, тот тут совсем другой расклад. На мобильных платформах свои варинаты и фреймворки.
У каждого вопроса свои алгоритмы, техники и возможности. Часто разработчики сильно ограничены движком, а часто изобретают свои интересные алгоритмы.
Общие компоненты примерно такие:
1) Ядро, обеспечивающие game loop и обработку событий, подготовку сцены, сохранение прогресса игры, первичную загрузку
2) SDK для разработки мира и скриптов, хранение ресурсов, система патчей
3) Рендер. Все, что касается отрисовки и подготовки мира к отрисовке.
4) Звук
5) Физика
6) Графический интерфейс, конфигурационные файлы
7) Защита от пиратства
8) Система модификаций (у разработчиков свое SDK чаще всего)
9) AI
10) Система скриптов и "проигрывания" сюжета
11) Сетевая часть
И еще всякие разные интересные мелочи.
Для некоторых платформ эти пункты не актуальны, но чаще всего игровой движок уже умеет большую часть этого всего делать и его просто допиливают под свои нужды (если лицензия подразумевает передачу исходников), либо выкручиваются из того, что есть (если нет исходников)