Обновить

Создаём графику, как будто на дворе 1993 год

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели45K
Всего голосов 156: ↑156 и ↓0+211
Комментарии53

Комментарии 53

В целом соглашусь, с тем уточнением, что из рейкастинга тоже можно выжать побольше.

О, как раз планировал. В моей статье про рейкаст Брезом я вскользь говорил про то, что часть блоков может иметь геометрию «с вывертами» и продуманные выверты рейкаст в целом не замедляют сколь-либо значимо. Кошаков там не будет — только голый движок, но тему этих вывертов и их классификации хотел более подробно раскрыть.

Автор, я погляжу, заметил, что стены не обязательно из кубов складывать, можно б и увеличить горизонтальное разрешение карты (вытянуть столбы вертикально) :) Я зашёл в своих рассуждениях дальше и выбрал «золотое сечение», оно очень хорошо ложится на X-Mode 360x480x256, что есть топ для VGA (вероятно, оно вообще будет DOS4GW и запускаться через досбокс). Следите за руками: сырая текстура имеет разрешение 128х207. Пикселы квадратные, золотое сечение. При экспорте в движок её ресайзим в 64х184, там ровные пропорции 2:1 и 9:8 получаются, деление без остатков. А потом, на экране 360х480 вжух и вдруг оказывается, что более высокое вертикальное разрешение заставило 64х184 выглядеть, как 64х103.55, то есть половинка от изначального сырого 128х207 (ошибкой в 0.1 пренебрегаем), то есть пропорции вернулись. Но статья, конечно, будет не про это, а про круглые колонны, ниши и альковы, «заглублённые» гипертекстуры, простые порталы (телепорт, зеркало) и сложные (преломляющий свет горячий воздух, отражающий водопад с рябью), динамические порталы (настоящий пейзаж и физически по нему едущий настоящий поезд, но — каждый в своей системе координат с обоюдной портальной связью), и это всё — чисто постолбцово, на натуральном Wolf3D движке с кастом Брезом :)

Сначала, правда, надо закончить начатое…

Рейкастинг выбран именно ради стилистики того времени. Писать полноценный 3д-рендерер это уже совсем другой объем работы и багов

Какого времени? Wolf-3d это 1992 или около того. Doom это 1993. И в Doom нифига не трассировка лучей, а именно bsp-дерево, что и описано в моей статье. Duke Nukem 3d 1997 года.

BSP-дерево используется для разбиения стен на неперекрывающиеся полигоны. Но рендер текстурированного полигона всё равно нужно делать.
Если не использовать какие-нибудь библиотеки, хотя бы GDI+, а писать "низкоуровнево", то это достаточно сложная задача.
Рисовать пиксельные столбцы а-ля Worlfenshtain3D намного проще.

Боги! Кто сказал вам такую глупость? Вы думаете, в DooM рендер не рисует стены по столбцам? А вы в DooM оригинальный играли? :) Обратите внимание на то, что голову там наклонять нельзя. Обратите внимание, как меняется картинка в Blood или Duke Nukem 3D, когда вы наклоняете голову.
Вам дать движок?

Берите:

https://github.com/da-nie/3DEngine-Universal

https://github.com/da-nie/3dEngine-Editor

А вот пример игры для MS-DOS, которую я написал в 2002 году.

https://github.com/da-nie/Doom4
Код там вам не понравится (я только начал С++ изучать тогда), но рендер там рабочий.

А если хотите полной трёхмерности, то вот:

https://github.com/da-nie/SoftwareGraphicsLibrary

Справедливости ради, прибитые гвоздями к вертикали квадратные полигоны, рисуемые по столбцам, не перестают от этого быть полигонами. Они просто становятся очень… эээ… специфичными :) Это, правда, не отменяет всего вышеперечисленного…

В DooM нет полигонов. Там есть отрезки (сегменты и линии раздела). На плоскости. И высоты пола и потолка в секторах.

Как верно замечено - для стен в старом добром Doom-е не полигоны рендерились, а всё те же пиксельные столбцы по текстуре, почти(развивая прошлый успех) как в Вульфе. Только расширенно, с возможностью выше быть, и ниже, повторяться по высоте, и из комбинации трёх текстур состоять, а не одной. Всё равно строго ортогонально полу-потолку, что и позволяло столбцами обойтись.

Текстурированные полигоны, настоящие "как угодно располагайте" - это уже Quake.

Вот-вот. Поэтому меня прямо даже удивило, зачем народ в Neo Geo Doom начал со своего рейкастера. Low Detail в DOS’овском Doom прямо-таки почти то же самое делает — находит по BSP столбцы огрублённо и рисует их «кирпичами». Взять выхлоп BSP и перенаправить в спрайтовый ускоритель, чтобы рисовал столбцы спрайтами как можно менее коряво.

Интересно, а какой приоритет у нахлёстывающихся спрайтов? Может, они главный талант неогео в землю-то и зарыли? Может, там можно дистанции взять и спрайты черепицей нафигачить в нужном порядке?

Хотя, с другой стороны глядючи, для начала как раз бы генератор оптимальных спрайтов для набора столбцов-то и написать бы б. Возможно, на своём кастере это проще и удобнее (примерно тем же прямо сейчас и балуюсь, кстати).

Прочитал

  • никакого нейрослопа.

И захотел крепко пожать автору руку.

шикарно, есть еще умельцы! а то так человечество и кодить разучится) ну как разучилось при изобретении письменности учить наизусть тексты объемом в "Война и Мир")

Тогда сделай это все на Ассемблере! Что бы хоть было видно что много сил вложено.

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

Супер! Хочу найти тоже самое, только про воксели!

Voxlap by Ken Silverman, демка CAVE. Движок от Кена был использован в игре Blood.

А если воксели на максималках, это Atomontage Engine, но они "сели в лужу", не найдя своему движку нормального применения, кроме как в очередной роблокс-подобной шляпе для смартфонов. Очень жаль, это был воксельный движок с поддержкой физики: 4х колесному автомобилю можно было "покусать" колесо, и он начинал "прихрамывать" на одну сторону. В Atomontage не использовался GPU.

долго не мог вспомнить, но все-таки вспомнил:
Teardown - воксельная песочница, по-моему там тоже можно что угодно "покусать" и оно будет хромать :)

[занудным голосом] Ежели карта тайловая, то скорее не с Doom сравнивать надо, а с Wolfenstein и Rise of Triad (на последнюю больше похоже).

Судя по картинкам и видео - Wolf3D. В Rise of the Triad движок был более прокачан (прыжки, разная высота).

сделайте нормальный 3д порт roguelike adventurer fps(+ камера от третьего лица, когда видно персонажа - тоесть 3д мир, на механике нетхак) натянутый на nethack )

поидее получаем генерации этажа, строим генератором, делим на сектора, режем на квейк-подобные сегменты, рендерим, механику оставляем как есть, просто рисуем туман планомерно, мобы там по 1 или по 2/по N(сколько придёт от текстового), ну может с упрощенной механикой получится, но поидее всё там выйдет.

пошаговую можно наверно утрировать, но можно и оставить пошаговость прям в 3д с УИ под пошаговость и отображение статусов/еффектов/шаговпошаговости в режиме 3д от первого лица на сцене прям, было бы вроде интересно.

получится fantasy-quakestyle-adventure-roguelike c 3d камерой от первого и третьего лица, с тоглом отображения пошаговости(тогл визуализирует в режиме 3д шаги перса и статусы только тех кто рядом, по фрустуму обзора+туман), и вот возможность отображения пошаговости можно типо будет включать отключать наверно, наверно интересно получилось бы )

"хочу игру суть такова" какое-то вышло, смесь идеи с кусками технического подкапотинга, которые до внятного связанного прочтения ещё расшифровывать нужно.

Есть данжен кравлеры(dungeon crawler от Dungeon Crawl). Есть среди них, вроде, и пошаговые. Видел даже с визуализацией в 3D виде(скорее он Wolf3D, в силу квадратногнездовой организации уровней) текстур стен, объектов и мобов той же символьной графикой.(вот название вспомнить не могу)

Я думал над тем, чтобы написать dungeon crawler на рейкастинге, но отказался по той причине, что будет огромное количество ограничений из за особенности реализации графического движка. Обычный eob-подобный движок с готовыми спрайтами-стенами тут предпочтительней, куда проще дорисовать статику, чем мучать рейкаст. А для имитации плавных поворотов и движений есть разные хитрости, как в том же Lands of Lore.

Нашёл что вспоминал - ROGUE-FP(стим, гог, сайт разработчика), с тремя режимами отображения - классика рогулайков(ASCII), 3D с текстурами и 3D с вайбами ASCII рафики

Вот так смотрится.

"гибридный" режим графики, где
"гибридный" режим графики, где


Что-то такое в плане отображения имелось?

есть игра 87 года, Nethack посмотрите на неё в поисковике, ничего не имею против стилистики псевдо 3д, но квейк тоже имеет в своей базе интересные нюансы.

я знаю что такое Nethack, играл. Я не понял что Вы написали такое, совсем. Отдельные предложения есть - в общий смысл не складываются.

Чем 3Д мир ROGUE-FP не трёхмерный? Да, не нетхак, а всего лишь переделанный родоначальник жанра. Но вопрос - это вот примерно то, что Вы хотите, или нет? И чем конкретно оно отличается от желаемого?

Чем "вид от третьего лица" более трёхмерный чем "из глаз"? Квейк, напомню, не "от третьего лица", он как раз "вид из глаз", и данженкравлеры со свободной камерой тоже существуют.

Кошкотян на закрывающей картинке прекрасна и чуточку смешна :-)

Палитра, хммм… Грешен, думал о том, можно ли загнать все стены/спрайты в ту часть палитры, где декремент младшего ниббла автоматически даёт затемнение, и уйти от colormap вовсе. А «спецстрочку» (в которой градиент не соблюдается) использовать только для вещей, которые не затеняются — дульные вспышки, огонь, источники света, ну и нулевой прозрачный, декремент которого даёт тот же ноль…

А вот генератор кровавых ошмётков прекрасен :) Мне как-то приснилось, что в каком-то моде раздобыл раритетный бластер, распыляющий спрайт врага на попиксельное облачко, попиксельно рассеивающееся и угасающее :)

Тоже изредка попиливаю рейкастинг. Пытаюсь добить до уровня ShadowCaster'а, но пока туговато идёт.

Если это звучит для вас разумно, то именно потому, что так всё и есть.

Для меня не звучит. Если игра выйдет в стиме, логично предположить, что её будут запускать на современном железе, так? А теперь представьте, как на современных мониторах будет выглядеть игра с разрешением 320x240

Скрины в статье 780x585. Для масштаба

Можно ж отмасштабировать. Заодно сделать стилизацию под CRT, например.

У автора вообще 1280x960. Это одно и то же с разным масштабом пикселей, на иллюстрациях один пиксел - это 4*4. Спокойно ложится и в целевое авторское разрешение, и в современные дисплеи.

Глаз резать и укачивать может, но это касается и Doom-а с Hexen'ом всяким.

Тут дело не в размере картинки а скорее в уровне детализации. При разрешении 320x240 просто начинаешь путаться, то ли вон та кучка пикселей вдалеке это факел на стене, то ли монстр. 640x480 в этом плане уже приемлемо, хотя по нынешним меркам тоже очень маленькое разрешение.

Выглядит очень кайфово ) Максимально аутентично. Как это будет выглядеть на стиме - можно ли будет запустить на ретро железе и какие системные требования?

Наложил на себя ограничения 90-х, но пишет на современном плюсовом компиляторе и юзает мощную видюху для сборки ассетов. Страдать надо до конца, ставь досбокс и турбо паскаль!!

Ну так в 90-х такую игру целой командой делали, а тут автор-одиночка. Считайте современные инструменты заменой такой команды, в принципе, все честно.

Ну дум тоже делали на NeXT

Делать такую игру в 2026, для коммерции, на мой взгляд - неразумно, "можно, а зачем?".

"Boomer shooter" вид игр вполне не-мёртвый. Ретро-стилистичный, с заметными пикселЯми(чтоб прямо видно было что олдстайл) - так и популярный в последние несколько лет.

Идея интересная. ИМХО если планируете продавать, то лучше поднять разрешение чуть повыше, до 640x480. В плане аутентичности это особо не повредит, а в плане играбельности 320x200 это совсем вырвиглазно по нынешним временам.

Я такое 2.5Д на Корона СДК сделал (язык Луа) - но ваш метод создания анимаций - зачотный, браво!

Неясна зацепка за имбецильный Стим. Не оценят. Им анимированные фоны для странички аккаунта в 4к разрешении подавай, это другое поколение аудиотории совсем, со своими странненькими интересами (зумеры). Лучше сделайте скачивание отдельным архивом на отдельном сайте, Itch или Github Pages.

Странные заявления, там полно заслуженно оцененной индюшатины.
Ну и по стилистике - https://store.steampowered.com/app/1010750/Blood_Fresh_Supply/
а точно там зумеры и другое поколение аудитории?

На стиме очень разношёрстная аудитория, и стилизации под старые игры, всякий пиксель-арт и прочее сейчас популярны.

В стиме вовсю есть куча бумершутеров и данженкравлеров в такой же, как у автора, стилистике.

Есть даже совсем странное немассовое - RIftborne, космостратегия на многопланет (grand strategy game, упрощённо "инди-Стелларис") с вот такой вот графикой терминала и UI а-ля htop. Тут разве что шелла не хватает с ls/cat/grep

Попса. Оно цветное. Вот, помнится, Star Trek был, все символы одного цвета. До сих пор доступен, даже на Андроиде.

Это ж вылитый оригинальный Dwarf Fortress.

Ну не. Не вылитый. Тут для этого явно не хватает ещё больше псевдографики, рычагов, мостов и бородатых морд 0x01

Да просто z-level выкручен тут, крепость не видно )

Я хочу создать завершённый, готовый к выпуску шутер от первого лица при помощи методик, характерных для начала 90-х

забавно конечно, что "методики" из 90х, а инструменты очень даже современные.

Вот это мощно! Автор, от души жму лапу!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds