Halo компании Bungie или GoldenEye компании Rare часто упоминаются как игры, впервые по-настоящему перенёсшие на консольные платформы высокотехнологичные, качественные FPS, но с этой точки зрения можно заявить, что первой всё-таки была игра Turok: Dinosaur Hunter для N64 от компании Iguana Entertainment. Она была хорошо встречена в момент выпуска, но с течением времени её репутация постепенно утратила свой блеск, и многие даже начали считать, что Turok, возможно, никогда и не был впечатляющим и важным.
Сложно переоценить ажиотаж, вызванный в 1996 году выпуском Nintendo 64. Эта консоль, способная похвастаться 64-битной мощью и аппаратными возможностями, которых не было больше ни у кого на рынке, мгновенно обрела успех. Не в малой степени этот успех был вызван непревзойдённым качеством Super Mario 64, поднявшей планку требований к видеоиграм. Проблема заключалась в том, что за первый год для системы было выпущено очень мало игр, что приводило к сильному ажиотажу даже вокруг самых посредственных релизов.
Однако Turok был далёк от посредственности, ажиотаж вокруг него граничил с безумием, и можно легко понять, почему. Шутеры от первого лица испытали взрыв популярности на PC, но на консолях оставались в относительном дефиците. К тому же, там было насилие — уровень кровопролития и жестокости Turok противоречил заработанной годами репутации Nintendo как поставщика игр для всей семьи. Большой выбор оружия и разлетающиеся частицы крови без сомнения пошли игре на пользу. Но кроме того, в ней были и технологии: Turok оказался истинным образцом пиротехники и анимации жидкости, непохожим ни на что другое, даже на PC.
Вот один из примеров построения его дизайна: Turok имел целостный мир, позволявший возвращаться назад и посещать старые области, и даже на самом первом уровне было несколько маршрутов прохождения — разительное отличие от дизайна Quake, составленного из отдельных уровней. И в этом сыграло роль первое технологическое отличие. Iguana разрабатывала Turok полностью с нуля. Это был совершенно оригинальный проект с собственным подходом к визуальному дизайну.
Основной задачей разработчиков было создание шутера, работающего с достаточно стабильной частотой кадров и имеющего огромные карты с нелинейным прохождением. В шутерах наподобие Quake использовалось двоичное разбиение пространства (binary space partitioning, BSP), а Turok выбрал совершенно иной подход: в нём применялись только статичные меши. В каком-то смысле, это был взгляд в будущее!
Полный анализ Turok: Dinosaur Hunter с канала DF Retro: почему его выпуск был таким важным, чем отличаются разные версии игры, от оригинала для N64 до портов на другие консоли и великолепного ремастера 2015 года.
Так в чём же разница? В Quake основой мира становились кисти BSP — для создания карты дизайнер задавал формы и структуры в редакторе. Однако в Turok уровни полностью строились из статических мешей. Это означает, что полы, стены, потолки и другие объекты — это заранее подготовленные полигональные меши, дизайн которых создавался в других программах, таких как 3D Studio Max. Эти смоделированные объекты подобно кирпичикам Lego использовались для создания карт, но также это означало, что, в отличие от Quake, невозможно было задавать формы в реальном времени при помощи редактора — если вам нужна большая стена, то вы строите её, повторяя меш стены или сочетая несколько разных типов стен.
Такое решение хорошо подходит для создания огромных карт Turok. По сути, для построения карты нужно просто располагать меши — можно быстро копировать и вставлять группы мешей, в тоже время свободно меняя их позицию и масштаб. Художники создают части карты, которые дизайнеры затем испольлзуют для её сборки. Иногда такие части могут быть огромными — например, комната босса целиком может быть одним статическим мешем.
После этого дизайнер уровней создаёт навигационный меш (nav mesh) — набор выпуклых полигонов, определяющих места, в которых могут двигаться игроки и другие подвижные персонажи. Это игровая область. После этого дизайнер располагает декоративные объекты, подбираемые предметы, врагов, создавая поток уровня. Внутри самой N64 всё это загружается и выгружается во время выполнения игры. Когда игрок бегает по карте, игра постоянно загружает из памяти фрагменты уровня и выгружает их на основании дальности от игрока. Здесь вступает в дело проблема с расстоянием отрисовки, которая стала причиной создания знаменитого тумана Turok, но в целом уровни могут быть совершенно огромными, с плавными переходами между областями игры и без заметных загрузок. Какие же недостатки есть у такого подхода? Память консоли ограничена, поэтому в ОЗУ может храниться только определённое количество статических мешей, то есть составляющие уровень объекты часто повторяются.
Благодаря потоковой загрузке статической геометрии в Turok удалось реализовать непрерывный мир, который можно исследовать в произвольном порядке. Это сильно отличается от концепции «уровней», доминировавшей в FPS-играх той эпохи.
Turok использовал технологический прогресс и в других областях. Прекрасным примером этого является рендеринг воды. Разработчики объединили плавно анимированную текстуру поверхности с прозрачностью и, в некоторых случаях, с волнующимся мешем поверхности. Когда игрок плывёт, на поверхности воды видны небольшие волны — довольно большой шаг вперёд по сравнению с тем, что обеспечивали в то время Quake и его подобия. Ещё одной выдающейся функцией был рендеринг неба: облака использовали несколько прозрачных слоёв со скроллингом. А как насчёт бликов (lens flare)? В Turok они тоже были. Солнце отрисовывалось в Z-буфер, и эти данные брались из GPU, где система могла тестировать, насколько солнце закрыто от игрока. Затем эти данные использовались для определения значения прозрачности lens flare.
Кроме того, Turok — настоящий праздник частиц. Коллизии частиц отслеживались в двух измерениях для реализации естественного поведения, а целые кучи альфа-текстур комбинировались для создания красивых клубов дыма, взрывов и капель крови. Этим особо знамениты тяжёлые виды вооружения. Это ещё один пример преимущества по сравнению с системой частиц из Quake. «Железо» N64 само занималось решением других проблем, например, аффинным искажением текстур, заметным в играх для PS1. С точки зрения игрока всё выглядело верно, к тому же присутствовала фильтрация текстур.
Проще говоря, несмотря на скрывающие карту эффекты тумана, Turok стал чрезвычайно впечатляющим примером 3D-рендеринга на довольно слабой системе, но этим он не ограничился. Turok решил одну из важнейших проблем шутеров от первого лица — прицеливание. Современной схемы с двумя аналоговыми стиками тогда ещё не существовало, поэтому Iguana привязала свободное перемещение камеры к единственному аналоговому стику N64, а движением персонажа управляли кнопки C. В результате этого игрок может свободно перемещаться, одновременно вращая камерой и имея возможность стрейфиться по кругу. Благодаря этому очень прогрессивному подходу к управлению даже сегодня играть в игру на оригинальной консоли по-прежнему удобно.
Система слоёв облаков Turok, которую можно наблюдать и сверху, и снизу, в зависимости от уровня — ещё один пример красоты создаваемых игрой эффектов.
Тем не менее, когда люди вспоминают Turok, то обычно жалуются на механику прыжков, и эти жалобы обоснованы, и тогда, и сейчас. Перемещение по платформам в 3D для того времени было относительно новым жанром, и для игроков в 1997 году сочетание новой схемы управления с видом от первого лица оказалось сложной задачей.
Возврат к Turok сегодня демонстрирует ещё один аспект, благодаря которому игра оказалась в высшей лиге. Качественная система анимаций обеспечивает плавное движение, которое не встретишь в шутерах от первого лица на любой платформе даже спустя несколько лет после выхода игры. По сравнению с её современниками это был огромный шаг вперёд. Во-первых, сами данные анимаций получались из данных захвата движения для врагов-людей и созданной вручную покадровой анимации для всего остального. Отдельные персонажи создавались из иерархии частей модели, которая функционировала аналогично современной скелетной системе — это ещё один аспект, в котором игра обогнала своё время. Движок интерполировал результаты, создавая плавное смешение между кадрами. Повторюсь, даже в играх наподобие Quake не было интерполяции между кадрами анимации, а во многих играх той эпохи до сих пор применялись 2D-спрайты.
Во многом своей плавности Turok обязан превосходной работе с анимацией и труду художников. Вы видите, как при беге враги переносят свой вес и меняют расположение ног при повороте. В связи с этим можно вспомнить забавную бонусную функцию — режим Quack: чит-код, подшучивающий над Quake и отключающий интерполяцию анимаций, рендеринг частиц и фильтрацию текстур — ключевые функции, отличавшие Turok от игры id Software. Это небольшой смешной бонус, демонстрирующий инновации Turok, хотя очевидно, что и Quake сделал собственные уникальные шаги для развития технологий FPS.
Производительность Turok на N64 была намного лучше, чем у многих других игр того времени, однако использование тяжёлого оружия приводило к падению частоты кадров.
И в отличие от многих консольных шутеров в этот сложный переходный период от 2D к 3D, скорость игры была совсем неплохой. N64 не может похвастаться высокой частотой кадров, но Turok смотрится лучше, чем большинство его современников. Разработчики стремились достичь 30 кадров в секунду (это даже указано в руководстве к игре), и Turok вполне с этим справлялся. При обычном исследовании мира и небольших стычках ему это удаётся, но временами случаются провалы. Однако когда игрок получает более тяжёлое вооружение и по всему экрану начинают появляться взрывы, скорость падает до 10fps. Тем не менее, такие случаи редки и в целом производительность хороша. Жаль, что по сравнению с первой частью Turok 2 имел такую низкую скорость.
За успехом игры последовал выпуск на PC с поддержкой только что зарождающегося Direct 3D и Glide API компании 3DFX, но несмотря на повышенное разрешение и более чёткие текстуры, некоторые функции пропали или были реализованы плохо. Многие визуальные эффекты рендерились не совсем верно, особенно с участием альфа-прозрачности. Плоскость тумана отображалась иначе, исчезли lens flare от солнца, слои облаков рендерились неверно, а цвета казались немного блеклыми.
Поэтому интереснее будет рассмотреть ремастер игры 2015 года для PC, созданный Nightdive Studios. Эта улучшенная версия, написанная в основном Сэмюэлем «Кайзером» Вильяреалом, использует собственный движок KEX и обладает целой кучей новых визуальных функции, поддерживает высокие разрешения и различные соотношения сторон, а также современные графические карты и полные 60 кадров в секунду. Позже были выпущены консольные версии для Xbox One и Switch, обеспечивающие 60fps в нативном разрешении 1080p. В случае Switch оно доступно при подключении к монитору — портативный режим работает с разрешением 720p.
Версии для PC и Xbox поддерживают эффект сумеречных лучей, позволяющий солнечному свету красиво растекаться по сцене, а также обладают сильно улучшенными эффектами воды с отражениями и преломлением. Также в них есть настройка поля видимости и увеличена дистанция отрисовки. Полученные в результате плавность, видимость и качество были недостижимы в оригинале. А если учесть и усовершенствованное управление, то это лучший способ играть в Turok сегодня.
В порте на Switch пришлось пойти на определённые компромиссы. Во-первых, из-за высоких затрат GPU в версии для Switch отказались от сумеречных лучей. И даже после этого заметны замедления при использовании расширенной дистанции отрисовки, чего не бывает на других платформах. Проблема заключается в устаревшем движке и слабомощном «железе» Switch. По сути, корнем основной проблемы является дизайн карт Turok — меши уровней создавались с учётом малого расстояния отрисовки и увеличение этого расстояния значительно повышает количество вызовов отрисовки из-за их фрагментации. Движок попросту не был предназначен для обработки увеличенной дистанции отрисовки, а Switch недостаточно мощен, чтобы преодолеть это ограничение.
Как бы то ни было, я считаю, что Turok представляет собой любопытный самородок, сочетающий два элемента той эпохи — Quake и Nintendo. У него быстрый, требующий навыков геймплей и интересный дизайн уровней, как и у игры id Software, и в то же время он обеспечивает исследовательский, открытый способ прохождения в стиле Nintendo, часто встречающийся на Nintendo 64. Эта странная смесь имеет свои недостатки, и тем не менее, она интересна даже сегодня, а ремастеры — это отличный способ попробовать сыграть в игру, которую я искренне считаю одной из важных глав в истории FPS.
Комментарии (16)
ledocool
23.07.2019 09:42В шутерах наподобие Quake использовалось двоичное разбиение пространства (binary space partitioning, BSP), а Turok выбрал совершенно иной подход: в нём применялись только статичные меши.
Что, простите? BSP это технология, позволяющая попилить пространство и не отрисовывать то, что не видно на экране, с целью выдавить немного фпс из машинки. Статические меши-то тут при чем?JKot
23.07.2019 10:17Абсолютно причем. Выпиливая из BSP ненужные полигоны вы получаете динамический меш, который обновляется каждый кадр и передаёте его в GPU. Так работали движки на основе quake. В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.
ledocool
23.07.2019 13:11Ок, вроде смысл понял.
8street
23.07.2019 16:30Я проще скажу. Разработчики игрового уровня Quake должны были делать уровень подобно созданию деталей в современных 3D CAD системах: Autocad, Компас и др. Разработчики Турок (а еще сюда можно добавить TES3-5, GTA3-5, Stalker, Crysis и др.) — просто расставляли заранее сделанные текстурированные детали по уровню, как им удобно.
GCU
23.07.2019 17:02+2Но сами детали, из которых собирать уровень всё равно надо было делать подобно созданию деталей в современных 3D CAD системах :)
8street
23.07.2019 18:37В современном 3D MAX очень много инструментов, которыми CAD не обладают. Да и работа в них отличается. В CAD, в основном, я пользуюсь инструментами выдавить, вырезать и сплайнами (кстати, тоже самое в редакторе карт для Quake и Half-Life), а в MAX работаю на уровне вершин и полигонов.
Но мне самому не нравится такой подход, когда уровень собирают по кусочкам из деталек, что-то уникальное сделать там сложно. Полет фантазии приходится ограничивать.engine9
24.07.2019 01:04Занятно, в Half life 2 есть уровень, где гордон пробирается под мостом. Мост в этой локации сделали одним большим мешем-декорацией. Т.е. не используя примитивы «браши» редактора, которыми создают большую часть остальных уровней.
GCU
24.07.2019 10:32Half-Life 2 использует сходный с Quake механизм удаления невидимых поверхностей — BSP + PVS, но для практически целиком просматриваемых конструкций моста он не подходит.
Это известная проблема — ещё со времён Quake есть типы брашей, например func_wall, которые не участвуют в построении основного BSP дерева уровня* и не влияют на построение его PVS. Всякие мелкие детали, кнопки, тонкие металлоконструкции дают лишние разбиения, раздувают число листьев в BSP-дереве, при этом практически ничего не скрывают.
Но даже браши func_wall обходятся/рисуются дороже моделек — как обычные стены, с картой освещения, проекцией текстур и т.д.
Решение сделать целый мост мешем-декорацией вполне обосновано :)
Тем более для моделек там неплохо работают уровни детализации (LOD)
* уровень в Quake состоит из нескольких «моделей» и у каждой из них своё BSP дерево, там их лес :). Первая модель есть сам уровень, остальные это всякие двери, подъемники и т.п. Спец. браши выносятся из первой модели в отдельные.
GCU
23.07.2019 12:03Это немножко не так :)
BSP это технология, позволяющая попилить пространство
да, и отсортировать объекты
и не отрисовывать то, что не видно на экране
— так было в Doom, но в Quake для этого используется PVS, который основан на выпуклых областях и порталах между ними (утилита vis) — BSP лишь один из способов разбить уровень на выпуклые области чтобы рассчитать видимость, причём разбиение далеко не самое лучшее.
Для простоты — меш это набор треугольников с одной и той-же текстурой.
Модели врагов и оружия в Quake — цельные меши, но сам уровень использует множество текстур, поэтому состоит из нескольких мешей.
Выпиливая из BSP ненужные полигоны
BSP дерево в Quake статично, и видимость определяется для листьев дерева целиком.
У каждого листа есть перечень других листьев, которые оттуда видно (PVS).
Лист статичен и содержит несколько мешей по числу текстур, использованных в нём (выпуклой многогранной области)
вы получаете динамический меш, который обновляется каждый кадр
Это набор статических мешей, который меняется только когда камера переходит из одного листа BSP дерева в другое. В целях оптимизации несколько мешей с одной текстурой объединялись, но это не каждый кадр, а раз для листа (вот наверное единственное что «динамический меш»), но Quake и без этого работает.
В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.
GLQuake точно так-же работает. Модели врагов в Quake были статическими мешами, определёнными для кадра анимации, тогда как Turok ещё и скиннинг/интерполяцию делал.
engine9
23.07.2019 13:33+2>Однако когда игрок получает более тяжёлое вооружение и по всему экрану начинают появляться взрывы, скорость падает до 10fps.
Забавно, в детстве этот эффект просадки в динамичных играх серии Twisted Metal (на PS1) давал эффект, напоминающий стилизованное слоу-мо. И это доставляло.
Не играл в Turok, но судя по статье эта механика управления была удачной и была применена на в игре Syphon Filter в 1999, любителям стелс-шутеров рекомендую. Хорошая, художественно целостная графика и локации, сюжет, атмосфера.
Скриншоты
gban
24.07.2019 05:07Запомнил ее, потому что шла вторым диском (первый с драйверами) с первой видеокартой с 3d ускорителем, не в pci, а уже в agp слот. Вроде бы это была ati rage 128...
ExtenZ
Шикарно!
Надо найти старую демку и заново пройти (e3-1220/16gb ddr3/ssd-480/HD7750)