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