Общая концепция Game Engine

May 15, 2008 00:14

Случайно обнаружил что русские буквы в моём блоге популярнее английских (статьи против кода движка), решил добавить русских букв. В связи с этим поднял старые заметки, добавил ещё столько же - результат перед Вами: Общая концепция Game Engine (проект статьи). В случае если я нарушаю чьи-то авторские права, то прошу сообщить, внесу изменения ( Read more... )

Leave a comment

Comments 8

daemon19 May 15 2008, 10:44:30 UTC
Пока не по самой статье, а по опечаткам:
[15 страница]
IdgViewPortNotifier = interface //render
IdgRenderNotifier = interface //viewport

Перепутал немного :) В коде видимо так же

Reply

simsmen May 15 2008, 10:51:36 UTC
Не перепутал, другая логика:
IdgUpdateNotifier - "уведомитель" объектов IdgUpdater; IdgViewPortNotifier - "уведомитель" объектов IdgViewPort IdgRenderNotifier - "уведомитель" объектов IdgRenderObject

Reply

daemon19 May 15 2008, 10:54:01 UTC
я про комментарии

Reply

simsmen May 15 2008, 11:16:05 UTC
Посмотри код
dgMainRender.pas (TdgRenderSystem = class(TInterfacedObject, IdgUpdateable, IdgViewPortNotifier)),
dg3DViewPort.pas (TdgViewPortSystem = class(TInterfacedObject, IdgRenderNotifier, Idg3DViewPort))
и dgRenderObject.pas ( TdgObject = class(TInterfacedObject, IdgRenderObject, IdgRenderable, IdgRenderSet))

Reply


anonymous May 29 2008, 12:35:18 UTC
Интересная но спорная статья.
Какие движки были рассмотрены? Иль прям все 239?
Пример с пулей явно неудачный ибо пуля не может сама себя уничтожить.
Зачем разным подсистемам одного движка работать на разных машинах? В каких играх такое используется?

Как я понял все объекты предполагается хранить в одной огроменной хэш-мапе (std::hashmap?). Как будут происходить выборки из нее нужных данных? Например видимых в данный момент объектов для рендера?
Правильно я понял, что в методе Update() каждого объекта?

Мелкие dll тоже странный выбор. От крупных-то гемор один.

По поводу игрового объекта можно сказать что хорошо себя зарекомендовала гибридная схема. Наследование + композиция. Множественное наследование это вообще сурово. Стараются избегать и не зря.

Про рендер 25 раз в секунду я надеюсь вообще шутка.

Reply

simsmen May 30 2008, 05:08:36 UTC
Спасибо, первый независимый отклик на статью:)

Зачем разным подсистемам одного движка работать на разных машинах? В каких играх такое используется? Это где я умудрился написать?

Как будут происходить выборки из нее нужных данных? Например видимых в данный момент объектов для рендера? Нет таких выборок. Методами Attach-Detach говорим рендеру с какими объектами работать, дальше он разбирается с объектами сам, без обращений к Хэштаблице.

Множественное наследование это вообще сурово Наследование вообще отсутсвует

25 раз в секунду - шутка, 50 раз нет.

Reply


Leave a comment

Up