Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #64, МАРТ 2006 г.

трехмерные моторы

TONY (PORCO@ARGENTINA.COM)

Спецвыпуск: Хакер, номер #064, стр. 064-080-6


Самой высокоуровневой абстракцией в любой игре являются игровые объекты со своими игровыми характеристиками, такими как здоровье, энергия. Игровыми объектами управляет пользователь и подсистема ИИ. Такой объект подчиняется действию туземной физической модели. Случается, что функциональности игровых объектов, имеющихся в движке, не хватает для реализации всех фишек геймплея, соответственно, разработчики игры реализуют собственные игровые объекты. Фактически они моделируют логику игры. Конечно же, нам хочется идеала: чтобы единственным кодом, который пришлось бы писать в процессе разработки, был код геймплея. Жаль, но ничто в этом мире не идеально. Очень часто модели поведения игровых объектов реализуются на языке, отличном от языка движка (обычно С++). Для этого используются сценарные языки, такие как Lua и Python, в основном чтобы было возможно изменять и отлаживать игровую логику без перекомпиляции исходного кода движка (она занимает до черта много времени!). Плюс, конечно — для того чтобы упростить и без того сложный игровой код. Правда, зачем нужна небезопасная возможность работать напрямую с памятью, если при разработке логики игры оперируют только абстракциями игровых объектов? Жизненный цикл игровых объектов обеспечивается специальным менеджером, который также связывает игровые объекты с подсистемой и алгоритмами ИИ плюс с пользователем. Аналогично игровым объектам, особняком в движке стоят так называемые оверлеи, или сущности для реализации пользовательского интерфейса. Часто используются готовые решения, такие как Crazy Eddie's GUI. Оверлеи также описываются сценариями, причем широко используются сценарии XML для представления иерархий элементов пользовательского интерфейса. Оверлеи, конечно, не имеют никакого отношения к рендерингу сцены, зато с их помощью пользователь управляет игровыми объектами.

сцена

Перейдем на один уровень абстракций ниже — где-то на этом уровне появляются абстракции, существующие в любом современном движке. Управление сценой возлагается на менеджер сцены, который хранит иерархию объектов сцены, производит проверку видимости объектов, управляет камерой, источниками света, небом, туманом и прочими объектами сцены. Рассмотрим пример «простейшей» сцены: автомобиль едет по дороге мимо фонаря (см. рис. «Иерархия простой сцены»). К корню (root) сцены присоединяется статичный (в процессе игры не передвигается) объект — дорога (плоскость), для этого объекта устанавливается материал — асфальт с текстурой двухполосной дороги. Дифференцирование всех объектов сцены на статичные и динамичные производится ради оптимизации. На обочине дороги устанавливается фонарный столб со своим материалом. На верхушке столба располагается фонарь — это нестатичный источник света, поэтому для него заранее можно рассчитать карту освещенности всех статичных элементов сцены: дороги и столба. Таким образом можно сэкономить при расчете освещения.

Назад на стр. 064-080-5  Содержание  Вперед на стр. 064-080-7