CG13 – Telegram
CG13
147 subscribers
84 photos
57 videos
1 file
52 links
STEAM: https://store.steampowered.com/app/4296180/YAguar/?beta=0

Про ягуар и не только

канал: https://www.youtube.com/c/@CG13dev

ссылка для буста: https://news.1rj.ru/str/boost/cg13dev
Download Telegram
Очень хотелось найти какой-нибудь реалистичный трек для теста вместо аркадных и простеньких карт
Поэтому я отправился в интернет и нашел вот такое чудо (пик)

Это мод для Assetto Corsa с очень детализированным дорожным полотном и я хочу рассказать про эту работу

Автор мода Тодд, живет в Калифорнии, и очень любит гору Санта Моника (а также игру Assetto Corsa)
И он поставил себе цель перенести ее в игру
👍21
Перенести гору в игру на самом деле не самая сложная задача
Я не уверен точно как эту часть работ сделал именно автор мода, но примерный путь такой
открываем Google Earth
находим гору делаем скрины горы с разных ракурсов
на самом деле требуется не мало ракурсов, порядка двухсот, чем больше тем большей детализации можно добиться

И с помощью фотограмметрии можно воссоздать гору в 3D
это с учетом того что гугл не позволяет выгружать геометрию, хотя этого я точно не знаю
👍2
а вот дальше начинается самое интересное
чтобы сделать дорожное полотно, Тодд вооружился камерой Go Pro Max 4k 360 и проехался по дорогам на небольшой скорости

Каждый кадр из видео имеет метаданные где также есть GPS координаты
Весь пайплайн весьма сложной но вот из этого (пик 1)
он сделал это (пик 2)
🔥3
Совсем вкратце прежде чем загрузить в софт для фотограмметрии необходимо обработать каждый кадр, с помощью маски исключить небо и машину, чтобы софт без ошибок состыковывал кадры
после создания облака точек получается естественно много мусора который надо очищать (например деревья и кусты тяжело поддаются фотограмметрии)

Короче ничего лучше не придумаешь и это отличный плацдарм для теста физона
тут конечно я уже лукавлю и мне просто захотелось покататься по горам но на физическом ядре которое будет использоваться в Ягуаре
👍4🔥1
Поэтому я скачал данный мод
расковырял его выдернул всю геометрию и перенес его в Unreal Engine
Не уверен точно с какой версии, но движок научился рисовать 3D облака внутри сцены а не как пост процесс, поэтому горы уходят выше облаков.
🔥3
После переноса Карты в игру я просто не мог нарадоваться этой красоте
я гонял по горам наслаждался пейзажами, но потом встала новая проблема.
Автор мода Тодд, отсканировал буквально около 40км дорог
чтобы проехать все дороги надо буквально не мало времени.
По этому я решил сделать интерфейс выбора трассы

Но что такое трасса с точки зрения гоночной игры?
это Старт и Финиш, а также трасса обычно поделена на участки.

По этому я замутил вот такую систему
(К сожалению текст не читаемый из-за того что в одной точке есть несколько объектов и анрил накладывает названия друг на друга)
На что обратить внимание так это на фиолетовые фигуры - это узлы графа
🔥32
Вдоль всех дорог я поставил такие “узлы” старт, финиш и на всех чек поинтах.
Вблизи это выглядит так

Флажки процедурно ставятся на место узла по краям дороги
Каждый узел имеет информацию о соседних узлах

Все это требовалось для того чтобы я мог указать старт и финиш, а как результат генерировался бы трек который бы выглядел как цепочка узлов от старта до финиша и в этом мне помог ChatGPT

Я ему просто сказал в какой структуре данных хранится мой граф и попросил его написать мне алгоритм поиска пути по не взвешенному графу (все узлы равны)
Так вот он выдал полностью рабочий код (программисты бойтесь)
3🔥1
Осталось дело за малым

Для каждого трека указываю
1 Начало
2 Конец
3 Название
4 Вспомогательный меш дороги который будет подсвечиваться из меню и отображаться на миникарте
5 Специальная камера спектатор которая с нужного ракурса смотрит на трек
🔥2
Выглядит забавно
🔥2
И вот результат

Так как трек содержит начало финиш а также все чекпоинты, стало возможным фиксировать время прохождения трека и всех участков, а вместе с тем можно отображать призрака прошлого рекорда.
👍2🔥2
Новая задача!
При прохождении трека необходимо сохранять позицию игрока каждый момент времени, если сохранять позицию каждый кадр, то мало того что данных будет слишком много, так еще проблема в том что данных будет еще больше если игра идет с высоким фреймрейтом. не порядок
поэтому я подобрал оптимальный интервал через который сохраняется позиция плюс время “снапшота”
Вторая проблема что теперь нужно отрисовывать призрака каждый кадр, но ведь информация есть только через больший промежуток времени чем частота кадров
на помощь приходит интерполяция
Постараюсь не душить, но идея в том что условно в массиве снапшотов есть 0й кадр, и через 0.1 секунду, мне же требуется отрисовать машину на 0.05 секунде, значит мне надо посчитать процент и взять соответствующую интерполяцию между двумя трансформами

Таким образом в игре появился интерфейс выбора машины и трассы
сохранение времени прохождения трека и участка, и призрак
🔥1
Чуть позднее когда я дал ребятам поиграть билд, стало ясно что требуется вынести большинство настроек машины в меню. так как для разных условий требуется разные настройки (например для спуска нужно менять распределение тормозов между осями или настройки дифференциала) в общем я не стал гадать и вытащил вообще все возможные настройки в меню
что можно заценить в этом видосе

https://youtu.be/7s24hm_ckrE?si=sJh2cc1kn133WqBV
🔥6👍2🤔2
И на этом все

Чуть больше месяца ушло на эту работу (что мне кажется очень мало)
Игра в стим не пойдет по причине использования чужой работы (горных дорог) в этом проекте. Хотя Тодд на странице своего мода просит связаться с ним если кто то задумает использовать его работу, возможно можно с ним договориться, чтобы проект не остался в столе. Но пусть будет в моем портфеле работ

А тем временем я вернулся к Ягуару на данный момент я переношу физическое ядро в ягуар, поскольку там все реализовано на блюпринтах, а у меня все на C++
Естественно гладко такие вещи не проходят, поэтому работа пока не завершена
Вот так анрил мне подкинул телегу работы, а я потом докинул еще вагон.
Но с другой стороны я довольно не плохо разобрался как устроена машина внутри, поэтому успокаиваю себя тем что это была работа над Ягуаром
Из бонусов этого решения, теперь в шинах есть давление, а значит можно пробить выстрелом колесо.
🔥7👍4👏2
CG13 pinned «пропал на полтора месяца но не сидел без дела в следующие Х постов расскажу над чем работал и это не Ягуар расскажу как из этого https://youtu.be/k3w8AESScQo?si=Kh6wOidXmHevSgI8»
🔥122👍1
Media is too big
VIEW IN TELEGRAM
немного геймплея с разным временем суток и погодой
билд тоже обновил
🔥8👍2
первые эксперименты с новым инструментом в Unreal Engine - PCG (procedural generation content)
сделал расстановку в области сплайна (белые кубики выводятся для дебага, на их месте будет стоять заданная геометрия)
а также идет определение дороги, можно увидеть что вдоль дороги есть порядок домов
👍11🔥3👏1
вариант с домиками
если бы не цвет и грид из точек, разницы в расстановке процедурно и руками, почти не видно

нерешенной проблемой пока остается генерация заборов

мозгоштурм с ребятами анрильщиками продолжается, так что решение не за горами
👍6
Media is too big
VIEW IN TELEGRAM
промежуточный результат работы с PCG
задумка с прошлых постов не сработала
пришлось делать граф для создания подобных ячеек сектора
👍7🔥4😎2
мощь PCG в действии
хочу наконец определить границы мира, чтобы можно было двигать во всех направлениях и не встречать пустот и краев карты
так с помощью PCG я уже завершил Северную часть карты (справа)
карта с севера будет ограничена лесом

далее перемещаюсь на запад карты,
там она будет ограничиваться рекой,
а мосты и дамбы через реку будут заблокированы как-нибудь не явно
👍9🔥3👏1