Приветствуем, геймер! Ты можешь или
16+
Storyteller_by_bitrix_studio

Геймер Havoc 21

19

Дневник разработчиков №9: скайбокс-шмайбокс

Дневник разработчиков №9: скайбокс-шмайбокс
Castle Story - Дневник разработчиков №9: скайбокс-шмайбоксДневник разработчиков №9: скайбокс-шмайбокс

"О Господи, как много нужно сделать, а времени недостаточно!" - восклицает Жермен в новом посте из блога студии. По части игры, на этой неделе они сделали много небольших вещей. Ничего огромного, но вместе все сделанное привносит большие изменения.

Кикстартер непреклонно приближается, все формальности почти улажены и Зауроподы в очередной раз обещают очень скоро начать сбор пожертвований.

А сейчас - список проделанной работы:

  • Окончательно закончена поведенческая модель бриктронов по динамическому обходу препятствий, или, скорее, Sauropod Studio сделали все, на что были способны в этом направлении. Теперь бриктроны могут перемещаться между шахтой, складом и замком без слишком частых застреваний.
  • Добавлены работающие лестницы. Бриктроны не только могут по ним забираться, но также могут выстроиться в линию чтобы карабкаться друг за другом вместо того, чтобы по одному блокировать всю лестницу на время своего подъема.
  • Сделана третья (и самая простая) система уровней детализации для общих объектов (не для ландшафтной сетки). Она настолько проста, что едва стоит упоминания, разве что используется в фичах, описанных ниже.
  • Создана система, которая обманом улучшаетдальний срез камеры. Чтобы иметь точный рендеринг (от render; визуализация, получение изображения по модели) и предотвратить коллизии в z-буфере (z-fighting), необходимо, чтобы у камеры были ограничения в форме ближнего и дальнего срезов. Вариант, когда игровая камера может видеть на бесконечном расстоянии, абсолютно невозможен, и чем меньше расстояние между срезающими плоскостями, тем лучше. Вы можете увидеть эффект дальней срезки на видео из четвертого дневника (0:40 сек.). К счастью, у Зауроподов есть решение! В целом, они прилепляют к главной камере вторую, у которой ближний срез находится на том же расстоянии, что и дальний у главной камеры, ну а дальний срез этой второй камеры - по-настоящему большой. Затем они подкручивают глубину (depth), список отбора слоев (culling mask) и флаги очищения (clear flags; опция отвечает за удаление объектов, отображаемых на экране в прежнем положении камеры после, соответственно, изменения камерой положения) так, чтобы изображения с этих двух камер комбинировались правильно. И вуаля! Если вы ничего не понимаете в этом вздоре, вот хорошее руководство (посмотрите на стр. 112; руководство на английском. Насколько я понял, это просто такое запутанное объяснение механизма, с помощью которого в игре можно будет менять дальность прорисовки. Или, вероятнее, механизм камеры для скайбокса).
  • Добавлены полигоны в нижней части островов. Вероятно, кажется, что сделать это просто, но это остаток старой версии Castle Story (примерно двухлетней давности), в которой камера всегда смотрела по направлению вниз. Разработчики в конечном счете избавились от такого закрепления камеры чтобы была возможность смотреть на скайбокс.
  • Говоря о скайбоксе, на этой неделе они снова над ним работали, после того, как почти год к нему не притрагивались. Зауроподы настроили облака так, чтобы на экране их было больше, и чтобы они изящно исчезали на расстоянии. Скайбокс будет темой сегодняшнего дневника (под спойлером, как и в прошлый раз; повествование от первого лица):

Скайбоксы, или как подделывать большие штуки, используя крошечные

Итак, что же такое скайбокс?

Скайбокс (skybox - букв. небесная коробка) это что-то, что мы используем для того, чтобы заполнить фон нашей игры. Обычно он статичен и не интерактивен. Другими словами, скайбокс - это то место, куда игрок ни в коем случае не должен ходить, в основном потому, что это место слишком далеко. Так как разработчики игр ограничены по времени и способностям (да, мы не боги, мы должны спать как и все), нам приходится "срезать углы" и устанавливать ограничения на размер нашего мира, чтобы предотвратить необходимость создавать бесконечно большие и детализированные миры.

Дневник разработчиков №9: скайбокс-шмайбокс
Castle Story - Дневник разработчиков №9: скайбокс-шмайбоксДневник разработчиков №9: скайбокс-шмайбокс

К счастью, мы давно решили, что все в игре будет происходить на летающих островах. Это значит, что игроки никогда не смогут идти в одном направлении до бесконечности. Это обычная напасть каждого шутера от первого лица, из-за чего им приходится создавать деспотичные мертвые зоны, чтобы игроки не забредали слишком далеко от зоны боя. Так что в случае Castle Story скайбокс определен достаточно четко: небо, солнце, океан и облака.

Дело в том, что все эти элементы имеют одну общую характеристику. Они БОЛЬШИЕ. Правда, очень-очень большие. Было бы действительно неудобно создавать настолько большие объекты в игровой вселенной (упомянутый выше дальний срез - одна из причин). Как правило, у игрового движка нет проблем в рендеринге статичного изображения на фоне, но в нашем случае скайбокс динамичный, с циклами дня и ночи и двигающимися 3-D облаками. Так что нашим решением было создать где-нибудь крошечный скайбокс и поместить его на фон.

Дневник разработчиков №9: скайбокс-шмайбокс
Castle Story - Дневник разработчиков №9: скайбокс-шмайбоксДневник разработчиков №9: скайбокс-шмайбокс

Мы создали другую камеру, которая подражает направлению главной камеры и помещает ее в 3d скайбокс. 3d скайбокс где-то очень далеко, вне видимости. Вторая камера также повторяет позицию главной камеры, но делит ее на значение, равное 100 (или на то, насколько меньше ваш скайбокс), потому она будет двигаться точно и создавать ощущение пространства в скайбоксе.

Теперь, так как 3d скайбокс ограничен в размере, это значит, что до тех пор, пока облака значительно меньше скайбокса, они будут обрезаться краями скайбокса. Сложно объяснить, потому я сделал рисунок:

Дневник разработчиков №9: скайбокс-шмайбокс
Castle Story - Дневник разработчиков №9: скайбокс-шмайбоксДневник разработчиков №9: скайбокс-шмайбокс

Дует ветер, поэтому исчезновение облака через края скайбокса неизбежно. В таком случае, ничего не сделано во избежание этого уродливого перехода: облака не только будут исчезать, оставаясь относительно большими (и достаточно близкими к камере), так еще и исчезать не у горизонта.

Дневник разработчиков №9: скайбокс-шмайбокс
Castle Story - Дневник разработчиков №9: скайбокс-шмайбоксДневник разработчиков №9: скайбокс-шмайбокс

Чтобы это исправить, мы сделали облака такими, что они изменяют свой размер пропорционально близости к игроку. Они будут становиться тем меньше, чем ближе подбираться к точке исчезновения. Дополнительно мы сделали так, что облака будут двигаться по кривой относительно линии горизонта, для создания иллюзии того, что они исчезают на расстоянии.

Так или иначе, вот как мы делаем скайбокс. Цвет неба довольно простой, градиентный шейдер, наложенный на сферу. Мы можем менять цвета градиента для симуляции голубого дневного неба или темно-серого для ночного небосвода.

*Вывод: с фоновым изображением все будет хорошо: небо, облака и их движение будут простыми и с низкими затратами ресурсов.*

На этом все.

Источник

Переводы прошлых дневников
Спасибо за прочтение!

19
Еще в блоге
Интересное на Gamer.ru

1 комментарий к «Дневник разработчиков №9: скайбокс-шмайбокс»

    Загружается
Чат