С ++,игровой движок, редактор уровней, знание графических пакетиков, фантазия и много свободного времени для чтения документации и прочего (графика, программирование, текстурирование, анимация, спец. форматы для графического движка - чтобы понимать, как переносить данные из программ типа фотошоп в движок). Главное судя по всему - начинать с минимально малого, но работающего.