Удивил меня рендер этой игры.
В 1994-м году он умел рисовать полы и потолки под наклоном и даже 3D модели. Меня заинтересовал этот рендер и я хочу выяснить, как он работает.
Итак, в наличии имеется следующее:
На счёт топологии мира, наблюдения следующие: стены расположены по углам с шагом в 45 градусов и выровнены по сетке. Стен с углом отличным от 0/45/90/135/180/225/270/315 градусов я не заметил. Стен с нецелым началом/концом не на узлах сетки - тоже. При этом по пол и потолок столь не ограничены - высота может быть любая, а также возможен произвольный наклон. Весьма странный момент, замеченный в игре - дискретное движение лифтов.
На счёт топологии мира. Есть у меня подозрения, что она таковая, чтобы убыстрить определение видимых поверхностей/ячеек мира и объектов в них.
На счёт того, как рисуются поверхности: по всей видимости, применяется честная растеризация с каким-то способом перспективной коррекции и с интерполяцией освещения. Примерно так рисовались 3d модели в Quake. Применение честной растеризации ограничивает использование способов отсечения объектов вне структуры уровня (моделей, спрайтов) дешёвыми способами, как это было в Doom или в Build Engine. Остаётся два варианта - или буфер глубины, или рисование в строгом порядке всего - и полигонов уровня, и полигонов объектов.
Я склоняюсь к тому, что рисуется всё сразу, с сортировкой от дальних к ближним. Это позволяет по-простому рисовать спрайты и стены с альфа-тестом, а также нормально делать смешивание. Можно было бы предположить рисование от ближних объектов к дальним с использованием спан-буфера, но я не представляю, как это подружить со смешиванием.
Была у меня гипотиза портального движка (вроде 3d игры про Тараса Бульбу), но я её отвергаю, т. к. слишком уж примитивна топология уровней для такой технологии.
говорят, что сорцы доступны.
(но это хитрые сорцы, сделанные для powerpc mac)
Ждать ли нам Panzer Shock?
Panzerschrek[CN]
> На счёт топологии мира, наблюдения следующие: стены расположены по углам с
> шагом в 45 градусов и выровнены по сетке
> Есть у меня подозрения, что она таковая, чтобы убыстрить определение видимых поверхностей/ячеек мира и объектов в них.
кубическое строение уровней.
я бы даже сказал, что тоже самое использовалось в Tomb Raider-е (1996)
skalogryz
> я бы даже сказал, что тоже самое использовалось в Tomb Raider-е (1996)
У нас на форуме есть тема с OpenLara и там я тоже любопытствовал - почему в рейдере были явно кубические лабиринты? https://gamedev.ru/projects/forum/?id=220945&page=32&m=5229930#m476
Оказалось, что это были не ограничения или ускорения графического движка, а физического и редактора. Графический же в принципе был способен на произвольную полигональщину.
=A=L=X=
> а физического и редактора.
вполне актуальные вопросы для 94ого года.
Надо же, действительно у сабжа судя по беглому просмотру нескольких исходников карта как в Wolf3D - клеточный двумерный лабиринт 64x64.
А я думал там реально кубы, т.е. уровень имеет еще и высоту. А получается что высота зажата между полом и потолком.
Похоже на какой то промежуточный вариант между Wolf и Doom.
Вообще я сам долгое время пребывал в иллюзии, что Кармак с Wolf, Doom и Quake был провозвестником и пророком полноценного жанра шутеров от первого лица, но история оказалась намного интереснее.
Так вот сабж вышел в 1994, а в 1996 выйдет Quake 1, но уже в 1995 такая неизвестная мне в то время контора как Bethesda выпустит шутер от первого лица Terminator: Future Shock с инновационным управлением мышкой и полностью трёхмерным окружением где есть и indoor и outdoor:
И это было честное 3Д с освещением по Фонгу как минимум в некоторых местах.
Наверное на момент выхода тормозило безбожно, я наткнулся на этот джем много много позднее.
=A=L=X=
> Похоже на какой то промежуточный вариант между Wolf и Doom.
мосты там всё-таки есть, но они скорее являются "исключением".
кроме самих уровней там есть "киберпространство", и насколько я помню, там уровни типа "укороченный" Descent.
Правда в киберпространстве нет текстур (галимый wireframe, но тогда так было модно); зато были воксели.
=A=L=X=
> Bethesda выпустит шутер от первого лица Terminator: Future Shock
я её прошёл ещё на 486dx.
она была довольно тормозной, и на динамику ни Дума, ни Дюка не тянула. Игра хорошая, но относительно не экшен.
System Shock гонял побыстрее, хотя экшена в нём было столько же. (но это скорее уже из-за управления)
Кстати, замечу, что 3д модельки выглядели не ахти как. (CPU же не тянул)
и тулить неискушённым геймерам, дескать "смотрите как круто выглядит фонг" или "вот эта 3д курица - это круть", в сравнении со спрайтовыми играми - не прокатывало.
Да, технически решение могло быть крутым, но люди играют в игры, а не графоний.
до появления графических аккселераторов, спрайтовые игры, вполне себе успешно тягались с 3d поделиями.
=A=L=X=
> Похоже на какой то промежуточный вариант между Wolf и Doom.
в тот отрезок времени полно таких игры повыходило. (большинство - откровенная гадость, которая от wolf-а отличалось только унылой графикой).
те же Dark Forces, по-сути были reverse engineer-ом Doom-а. (поговаривают, реверсили не ассемблером, а просто смотря в карту doom-а)
Качество игры зависило от качества работы программистов. Если вспомнить творчество Bull Frog, в игры которой были тоже 2.5d, но картинка и динамика завораживали (magic carpet, hi octane, dungeon keeper)
skalogryz
> те же Dark Forces, по-сути были reverse engineer-ом Doom-а.
Сомневаюсь - у Dark Forces судя по всему был портальный движок.
Вообще из известных мне аналогов дума своего времени (Duke, Dark Forces, Marathon) BSP было только у Дума собственно.
Т.е. смотреть то в карту они могли, но придумывали судя по всему на ходу что-то своё.
Глянул исходники.
Код в худших традициях тех лет - голый Си с ручными оптимизациями, передача параметров и получение результата через глобальные переменные, непонятные имена функций, мало комментариев.
К тому же кодировка какая-то древняя, grep ломается при поиске в этих исходниках.
Panzerschrek[CN]
> Код в худших традициях тех лет - голый Си с ручными оптимизациями, передача
> параметров и получение результата через глобальные переменные, непонятные имена
> функций, мало комментариев.
"современный" код мало чем отличается... ну разве что большей вырвиглазностью в крестах.
Ведь когда дело касается оптимизации, читабельность и понятность это первое что идёт в расход. И не важно сколько десятилетий назад был написан код
skalogryz
> Ведь когда дело касается оптимизации, читабельность и понятность это первое что
> идёт в расход.
Ну не скажи.
30 лет назад считай почти что не было оптимизирующих компиляторов, поэтому код писали так, чтобы он 1 в 1 ложился на инструкции процессора. Сейчас же можно написать достаточно красиво, а компилятор все красивости выкинет и оставит максимально эффективный машинный код.
Panzerschrek[CN]
> 30 лет назад считай почти что не было оптимизирующих компиляторов, поэтому код
> писали так, чтобы он 1 в 1 ложился на инструкции процессора.
по-моему писали так, что он ложился на 4 на 1 инструкции процессора
оптимизации делалась, чтобы обойти недостатки железок.
в пример можно привести быстрый квадратный корень
=A=L=X= полно тем исписал, о том, на какие "ухищрения" шли раньше, чтобы выжимать из железки то, на что она изначально не была расчитана.
Panzerschrek[CN]
> Сейчас же можно написать достаточно красиво, а компилятор все красивости выкинет и оставит максимально эффективный машинный код.
я просто сужу по состоянию софта в целом.
Если вспомнить свежее обсуждение, про какой-нить модный движок типа Godot 3, который течёт!
И дело не в том, что течёт, а в том, что автор сказал - исправить невозможно, ждите Godot 4.
Но если исправить невозможно без полной перепеси, то там действительно красиво написано?
или там, как раз: "голый NNN с ручными оптимизациями, передача параметров и получение результата через глобальные переменные, непонятные имена функций, мало комментариев".
инертность человеческого мышления?! мы пытаемся оптимизировать, там где этого делать не нужно и мудрые компиляторы и операционки за нас сделают быстро?! (если раньше оптимизация была оправдана, тем что железо было тормозным "на глаз", то сейчас уже вроде бы и нет)
будет Panzer Shock? чтобы встать в одну галлерию с Panzer Quake и Panzer Chasm.
Прошёл System Shock 2.
Игра оказалась ещё тупее и унылее оригинала. Опять все те же задания, где хрен поймёшь, что делать, опять эти скучные и возраждающиеся враги. Но удалось переплюнуть оригинал, добавив прокачку - чтобы игрок обязательно прокачался не так, как надо, и всегда страдал, добавив ломающееся оружие, и ещё всяких ухудшений по мелочи.
Видимо именно по этому продолжений у игры больше нету - такое нафиг более ни кому не нужно.
Заметно, также, что SS2 во многом есть переделка Thief II. Некоторые враги по анимациям и повадкам - слегка переделанные враги оттуда. Система карты тоже заимствована с небольшим редизайном. В целом дух игры заимстовован - что там, что здесь приходится страдать.
Дизайн уровней весьма топорный. Хоть в наличии есть честных 3d движок, но уровни всё также плоские и квадратно-гнездовые, за редкими исключениями.
Panzerschrek[CN]
> Видимо именно по этому продолжений у игры больше нету - такое нафиг более ни кому не нужно
Bioshock-же! и да Atomic Heart.
и даже немножко Doom 3. Засчёт того, что так же бегаешь по базе, собираешь флешки и слушаешь всякие ужастики из прошлого!
Panzerschrek[CN]
> Заметно, также, что SS2 во многом есть переделка Thief II.
графоний у SS2 действительно был отвратный, даже по тем временам!
ну потому что это движок Thief.
Panzerschrek[CN]
> Игра оказалась ещё тупее и унылее оригинала.
это не оригинал, а продолжение.
Panzerschrek[CN]
> Опять все те же задания, где хрен поймёшь, что делать
если читать описания (англ яз) то всё, как раз, понятно.
Panzerschrek[CN]
> игрок обязательно прокачался не так, как надо
ну в серии System Shock, очевидно, что нужно качать хакерство!
а вообще мне понравились их "предыстории" (ну где задаёшь начальную расскачку), атмосферно так.
В Морровинде, да и некоторых других РПГ, используют тот же приём.
Вместо excel таблицы, задают "наводящие вопросы про прошлое антагониста", и исходя из ответов назначают статы.
>Заметно, также, что SS2 во многом есть переделка Thief II.
SS2 который вышел в 99м, есть переделка второго вора, который вышел в нулевом? Видимо речь всё таки о первом воре?
Тема в архиве.