Каков наилучший способ отделить код рендеринга от собственно игрового движка/логического кода? И разве это даже хорошая идея отделить их?
Предположим, что у нас есть игровой объект Knight. Рыцарь должен отображаться на экране для просмотра пользователем. Теперь у нас есть два варианта. Либо мы даем метод Knight a Render/Draw
, который мы можем назвать, либо создаем класс рендеринга, который заботится о рендеринге всех рыцарей.
В сценарии, где эти два разделены, Рыцарь должен, чтобы Рыцарь все еще содержал всю информацию, необходимую для его рендеринга, или же это должно быть разделено?
В последнем проекте, который мы создали, мы решили, чтобы вся информация, необходимая для визуализации объекта, хранилась внутри самого объекта, но у нас был отдельный компонент, который действительно читал эту информацию и отображал объекты. Объект будет содержать информацию, такую как размер, поворот, масштаб и какая анимация в данный момент воспроизводится, и на основе этого объект визуализации будет составлять экран.
Структуры, такие как XNA, похоже, считают, что присоединение к объекту и рендеринг - хорошая идея, но мы боимся привязаться к конкретной среде рендеринга, тогда как создание отдельного компонента рендеринга дает нам больше свободы для изменения структуры на любом данное время.