Навайбкодил ещё псевдо-3D
Пару дней назад нагенерировал с помощью ИИ ещё два прототипа в области псевдо-3D, воспроизводя идеи из разных игр на Sega Genesis. Как обычно, весь код написал Deepseek, я лишь объяснял, чего именно хочу добиться, и участвовал в отладке.
Первый экземпляр — ещё один рейкастинг-движок. В отличие от показанного ранее, где использовались float’ы и попиксельный Z-буфер с полигонами для пола, этот вариант значительно проще: почти Wolfenstein 3D, «клеточный» уровень со стенами одинаковой высоты, но с «диагональными» стенками и «толстыми» дверями.
Главные отличия: математика исключительно целочисленная, 32-битная с фиксированной точкой, и это уже честный рейкастинг с обычным для него «столбцовым» Z-буфером. Это то, как мог бы работать Bloodshot, если бы его разработчики не пошли чисто векторным путём: им тут сделана только подвижная толстая дверь.
В принципе, переделать всю геометрию уровня на векторы тут мешает только проблема определения видимости. И по простому она не решается: от неё пострадал и Bloodshot, и даже Escape from the Monster Manor на 3DO. Судя по всему, они оба просто брали всё, что попадает в конус зрения камеры, а это очень много лишнего. Решать эту задачу надо секторами или BSP, но это следующий уровень сложности. Может. как-нибудь заморочусь — сам я такое писать пытался, но никогда не доводил дело до полностью рабочего варианта.
Второй экземпляр — рендер «векторного» пола, как в трёхмерном уровне Toy Story. Меня всегда занимал вопрос, как он, блин, сделан, и насколько ресурсоёмкая это задача. Я пытался анализировать происходящее в игре, с учётом слов автора, который рассказывал на YouTube про эту сцену, но обошёл вниманием самые интересные детали. Но эмуляторы не дают посмотреть, что же происходит в буфере рендера в памяти консоли, и остаётся лишь догадываться.
На основе догадок я описал вариант, как это может работать, и попросил ИИ реализовать его. Всё довольно быстро заработало, и я даже усложнил задачу: в этом варианте пол может иметь разные паттерны и их цвета, согласно специальной карте. Оказалось, что математика тут действительно не очень дорогая, и несмотря на рисование линий, это всё ещё сильно быстрее, чем честный текстурированный пол. Прикольно.
рабочее
ии
псевдо3д