Pull to refresh

Comments 17

В шутерах наподобие Quake использовалось двоичное разбиение пространства (binary space partitioning, BSP), а Turok выбрал совершенно иной подход: в нём применялись только статичные меши.
Что, простите? BSP это технология, позволяющая попилить пространство и не отрисовывать то, что не видно на экране, с целью выдавить немного фпс из машинки. Статические меши-то тут при чем?
Абсолютно причем. Выпиливая из BSP ненужные полигоны вы получаете динамический меш, который обновляется каждый кадр и передаёте его в GPU. Так работали движки на основе quake. В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.
Я проще скажу. Разработчики игрового уровня Quake должны были делать уровень подобно созданию деталей в современных 3D CAD системах: Autocad, Компас и др. Разработчики Турок (а еще сюда можно добавить TES3-5, GTA3-5, Stalker, Crysis и др.) — просто расставляли заранее сделанные текстурированные детали по уровню, как им удобно.
Но сами детали, из которых собирать уровень всё равно надо было делать подобно созданию деталей в современных 3D CAD системах :)
В современном 3D MAX очень много инструментов, которыми CAD не обладают. Да и работа в них отличается. В CAD, в основном, я пользуюсь инструментами выдавить, вырезать и сплайнами (кстати, тоже самое в редакторе карт для Quake и Half-Life), а в MAX работаю на уровне вершин и полигонов.
Но мне самому не нравится такой подход, когда уровень собирают по кусочкам из деталек, что-то уникальное сделать там сложно. Полет фантазии приходится ограничивать.
Занятно, в Half life 2 есть уровень, где гордон пробирается под мостом. Мост в этой локации сделали одним большим мешем-декорацией. Т.е. не используя примитивы «браши» редактора, которыми создают большую часть остальных уровней.
Half-Life 2 использует сходный с Quake механизм удаления невидимых поверхностей — BSP + PVS, но для практически целиком просматриваемых конструкций моста он не подходит.
Это известная проблема — ещё со времён Quake есть типы брашей, например func_wall, которые не участвуют в построении основного BSP дерева уровня* и не влияют на построение его PVS. Всякие мелкие детали, кнопки, тонкие металлоконструкции дают лишние разбиения, раздувают число листьев в BSP-дереве, при этом практически ничего не скрывают.
Но даже браши func_wall обходятся/рисуются дороже моделек — как обычные стены, с картой освещения, проекцией текстур и т.д.
Решение сделать целый мост мешем-декорацией вполне обосновано :)
Тем более для моделек там неплохо работают уровни детализации (LOD)

* уровень в Quake состоит из нескольких «моделей» и у каждой из них своё BSP дерево, там их лес :). Первая модель есть сам уровень, остальные это всякие двери, подъемники и т.п. Спец. браши выносятся из первой модели в отдельные.
Это немножко не так :)
BSP это технология, позволяющая попилить пространство
да, и отсортировать объекты
и не отрисовывать то, что не видно на экране
— так было в Doom, но в Quake для этого используется PVS, который основан на выпуклых областях и порталах между ними (утилита vis) — BSP лишь один из способов разбить уровень на выпуклые области чтобы рассчитать видимость, причём разбиение далеко не самое лучшее.

Для простоты — меш это набор треугольников с одной и той-же текстурой.
Модели врагов и оружия в Quake — цельные меши, но сам уровень использует множество текстур, поэтому состоит из нескольких мешей.
Выпиливая из BSP ненужные полигоны

BSP дерево в Quake статично, и видимость определяется для листьев дерева целиком.
У каждого листа есть перечень других листьев, которые оттуда видно (PVS).
Лист статичен и содержит несколько мешей по числу текстур, использованных в нём (выпуклой многогранной области)
вы получаете динамический меш, который обновляется каждый кадр

Это набор статических мешей, который меняется только когда камера переходит из одного листа BSP дерева в другое. В целях оптимизации несколько мешей с одной текстурой объединялись, но это не каждый кадр, а раз для листа (вот наверное единственное что «динамический меш»), но Quake и без этого работает.
В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.

GLQuake точно так-же работает. Модели врагов в Quake были статическими мешами, определёнными для кадра анимации, тогда как Turok ещё и скиннинг/интерполяцию делал.
Плюснул бы, если бы мог, за разъяснение.
>Однако когда игрок получает более тяжёлое вооружение и по всему экрану начинают появляться взрывы, скорость падает до 10fps.

Забавно, в детстве этот эффект просадки в динамичных играх серии Twisted Metal (на PS1) давал эффект, напоминающий стилизованное слоу-мо. И это доставляло.

Не играл в Turok, но судя по статье эта механика управления была удачной и была применена на в игре Syphon Filter в 1999, любителям стелс-шутеров рекомендую. Хорошая, художественно целостная графика и локации, сюжет, атмосфера.

Скриншоты





По заверению разработчиков они лишь пару раз слышали про MGS, которая параллельно создавалась.
UFO landed and left these words here
UFO landed and left these words here
Sign up to leave a comment.

Articles