С ++,игровой движок, редактор уровней, знание графических пакетиков, фантазия и много свободного времени для чтения документации и прочего (графика, программирование, текстурирование, анимация, спец. форматы для графического движка - чтобы понимать, как переносить данные из программ типа фотошоп в движок). Главное судя по всему - начинать с минимально малого, но работающего.
Почему далеко? Сейчас 2к21.
Есть unreal engine и unity. Где можно сделать отличную игру даже без знаний классического программирования.
Плюс есть всякие мегасканы, которые позволяют создавать топовые и фотореалистичные локации просто перетаскивая готовые модельки и текстуры. Те же самые, которые используют во многих фильмах и ААА играх.
и миллионы готовых моделей персонажей, окружения, объектов, оружий и т. д. как бесплатных так и очень дешевых.