Комментарии 4
Экстраполяция мастхэв при сетевой с тонким клиентом. Делал попробовать такую архитектуру - по сути весь клиентский код это rendering и input, с полным update на сервере. Тогда лаг может быть ≈200мс, разница очень существенная. Кроме этого случая никогда рендер не приходилось экстраполировать, даже сложно представить - зачем это? Если проц и так нагружен вычислением координат, еще парралельно ту же операцию запускать на видюхе что ли?
Хотя, куда лучше делать лишь передачу ввода, с дублирующим кодом обработки на клиенте, а не тонкий клиент (это я эксперементировал). Но механизм отката нужен, ибо клиент может рассчитать, допустим, что пуля улетела вперед, но на самом деле - другой игрок ее блокировал своим телом, просто синхронизации не было.
Про сетевую архитектуру с real time было бы интереснее прочитать. А так - да, while(true) это столп рилтайм игрового лупа. И это именно рилтайм паттерн, в пошаговых все иначе. Хотя для отрисовки интерфейса и анимаций gui все равно его юзают. Так то под капотом он все равно есть, цикл просто прячут, вытаскивая всякие event. Это на тему:
а вне мира геймдева его используют относительно малое количество программных продуктов
До css3 с анимациями, наверное 90% всего веба на setinterval анимациях жило.
а смысл в отрывке из книги, если можно взять её целиком тут https://igorcomputer.ru/books/patterns/gamedev_patterns.pdf
Спасибо, статья хорошая
Хо, хотя конечно аналогичные уже были, тема все же довольно старая.
Я думаю можно поправить термины немного.
Вы описали разницу между движком и библиотекой, но обычно так описывается разница между фреймворком и библиотекой.
Вы вызываете код библиотеки.
Фреймворк вызывает ваш код.
С этой точки зрения "игровой движок" - очень широкий термин. Это может быть и библиотека / набор библиотек, и фреймворк и целый тул инструментов, включающий редактор и дополнительные инструменты типа редакторов материалов, текстур и анимаций.
То есть в минимальном варианте это библиотека для графики, к примеру.
В максимальном варианте это Unity или Unreal, в которых вы работаете в редакторе и встраиваете ваши скрипты в готовую структуру.
Можно применить всю эту теорию для программирования микроконтроллеров.
Игровые паттерны программирования: Game Loop