Практический каждый движок состоит из нескольких основных компонентов:
- основной код игры с логикой
- механизм рендеринга
- звуковой движок
- физический движок
- ИИ
Понятное дело, что от реализации к реализации этот список может меняться. Обычно поверх всего это дела накатывается какая-то абстракция, чтобы это все можно было нормально использовать не залезая в исходники, так появились Unity/Unreal/Cry Engine и т.д. В итоге мы получаем набор инструментов и библиотек для обработки низкоуровневых функций, например таких как рисование объектов, и поэтому вместо написания кода для рисования разработчик просто создает объект класса спрайт. Как у разработчика у вас, обычно, есть полотно(сцена), где вы расставляете объекты и потом привязываете к объектам скрипты, при сборке это все является аргументами какой-то функции или конструкторами какого-то класса, который и начинает выполнять и связывать всю эту логику. Если мы говорим за популярные движки, указанные выше, то в них есть Entity Manager, который отслеживает все сущности и их поведение на сцене, а вашу сцену уже можно представить как граф, где узлы - сущности, а действия между ними - ребра.
Важно понимать, что реализация и внутренние механизмы меняются от случая к случаю. Вот
здесь и
здесь и здесь можно прочитать про движки в целом, а
здесь и
здесь посмотреть, как умные дяди на ваших глазах пишут эти самые движки.