Ой...сколько людей, столько и мнений
Как по мне, движок — это очень абстрактное понятие. Каких их только не бывает: графический, звуковой, сетевой, физический, игровой.
Сферу деятельности каждого устанавливает программист, который, как обычно, не зная меры, награждает всего и сразу.
Лазая по категориям абстракции можно конечно сделать логические выводы типа: графический движок — это то, что рисует, предварительно создав окно.
Но вот только так ли это на деле?
Вот для меня например, игровой движок — это то, что организует взаимодействие объектов, выстраивая их в иерархию, фильтруя их и так далее. Игровой движок - это так же связующее звено между всеми компонентами игры. В таком случае графический движок должен быть просто приемником данных, которые нужно показать. В случае с ОГРом же, видно что он берет на себя функционал по части менеджмента сцены, ресурсов, плагинов, работы с памятью и так далее, т.е. его понесло в игровые степи.
Хотя наличие этого функционала понятно: определение видимых объектов, облегчение управления объектами и так далее. Без них движок был бы уже менее эффективным, а программисту, бедолаге, пришлось бы все это реализовывать самому. И ведь не факт, что он бы оптимально использовал возможности ОГРа.
Мне кажется, что пытаться выявить четкие грани где заканчивается одно, а начинается другое - дело не благодарное. Лучше не движки писать, а игры. И со временем начинаешь видеть что ты используешь многократно, вот это и можно выносить в отдельные библиотеки.
Сама же игра, опять-таки, понятие растяжимое. В каждом конкретном случае структура будет разная, но есть блоки, которые присутствуют всегда: это, как уже было сказано ранее, обновление мира, сбор пользовательского ввода, отрисовка видимых объектов, ИИ, звук, физика, сеть, что там еще?
В общем пытаться все идеально обрисовать "из далека" — как по мне, очень сложно. Лучше все таки действовать методом проб - эффективнее будет