Скуф навайбкодил игру мечты своего детства

GP: Пески времени
GP: Пески времени

Да, я уже немолодой, да я навайбкодил и в код не посмотрел ни разу. Но все же думаю, что мой рассказ может быть интересным

Когда появились трансляции Ф1 по телевизору с юным Алексеем Поповым, -- это было очень интересно. Это было очень даже вау. Мне было 16-17 лет, это 1992 год, конец школы, поступление в институт. Гонки еще по черно белому телевизору -- отличи Феррари от Бенеттона (у Бенеттона с юным Шумахером был задран акулий нос)!

Детство. Отрочество. Юность

В моем дестве из 80-х авто-гонки, а особенно формула-1 были окутаны романтикой мира, почти фантастического. Мы могли их видеть в играх, на каких-нибудь наклейках. Автоспорт в стране был (ru.wikipedia.org/wiki/Автомобильный_спорт_в_СССР), но новости были скупыми.

GP EGA 80-е годы XX века
GP EGA 80-е годы XX века

Тогда же возникла идея сделать симулятор формулы. Не то, чтобы ты за рулем, а вот как примерно ты в телевизоре смотришь. Чтобы показывался лучший круг, кто на каком месте. Я тогда это на паскале попробовал написать. Помню муки неокрепших мозгов -- а как считать обгоны на кольцевой трассе? Как понять, кто спереди, кто сзади? Тогда у меня компьютер был с черно-белым экраном 320х200 CGA, так, что я в текстовом режиме это все делал, там текст смотрелся опрятнее. Даже жсонов с иксемелями еще не завезли тогда, данные в текстовый файл и написать самостоятельно разбор его.

Потом я поступил в институт и так и не доделал свой симулятор. Мысленно я очень часто возвращался к нему. А как бы я сделал мир? А как бы менял год? А как бы команды сами бы вели переговоры со спонсорами? А как редактировать трассу? Кнопками влево-вправо по точками (мыши уже были, но у меня еще не было).

Потом пролетел институт, поиски душевных мечтаний, внезапно уже семья и сын родился. Я на Савеловском рынке покупаю два диска -- Grand Prix World и EA Sport F1 Manager. Это очень близко, к тому, что я хотел! Симуляция всей гонки. Мир, который живет.

GPW 1999
GPW 1999

EA -- красиво, но сама игра бедная.GPW -- шикарно смоделированы правила, настройки, жизнь руководителя команды. Так к моей первоначальной идее добавилась идея игровая. Я много ковырял GPW, но она была завязана на один единственный год -- 1998, на пару лет еще были фанатские моды. Под виндовс XP она работала с багами -- либо без звука, либо по alt-tab вылетала. Так, что и эта жемчужина стала уходить в прошлое. Мечта написать свой, не уходила.

Метания

Беда была в том, что я не понимал, как писать обгоны на трассе. То есть, кто впереди, кто сзади -- там понятно, надо просто анализируемую машину брать, как точку отсчета, а вот на дороге то как? Рельсы? А как они проложены? Как сейчас рисовать трассы, не по точкам же? Примитивы с поворотами по 90 градусов?

Хотелось откуда-то взять хоть какую-то заготовку. Я же не игродел (я корпоративный java-разработчик), Юнити ставить -- что-то меня отталкивало. Хотелось в браузере. Заготовок не было ни в java, ни под js. Гонки да, но ты за рулем и трасса перед тобой. А я хотел кольцевые.

Все статьи, что я находил, были либо по геймдизайну -- не давайте игроку чувствовать, что он оторвался, либо какая-то хардкорная физика спортивных машин, класса GT. Как нарисовать трассу, как побить на сегменты. Но из этого не вырисовывалась стратегия, как по вечерам налабать игру. В интернетах, где все есть находились только гонки от первого лица, и я никак не мог за что-то зацепиться. Первой целью было просто кольцо и прямоугольники, которые обгоняют друг друга.

Прошло несколько десятков лет

И тут у нас появились нейронки. По началу это был мой такой снобистский тезис -- она не может написать простую кольцевую гонку, о чем вы? Потом чатГпт в 2024 робко написал вот такое. Оно вызывало улыбку, но выглядело -- уже хорошо, -- найду время и поправлю руками. Времени не нашлось и прошел год.

В 2025 Клод написал ту задачу, которую я просил -- кольцевая трасса и обгоны. Я был почти счастлив, но опять отложил на полку этот набросок.

Милые прямоугольнички

Я навайбкодил порядка 50 пет-проектов с того момента. Все они восхищали меня, особенно, когда я перешел от чата к агенту.

Интересно наблюдение -- пруф концепции получался очень быстро. После нескольких тысяч строчек кода, надо включать голову и ты замедляешься, это бесит. Хочешь переключиться на другой проект, где вайбкодинг опять быстрый. А лучше два в параллель... а лучше три...

Вы видели, на ютубе у хороших шоуменов счет идет на десятки, если не на сотни. Потихоньку насыщаешься и хочешь показать друзьям. Нет, код не готов еще, хотя бы видео. И делая видео ты видишь сколько еще недоделанных моментов. Надо бы зарелизить... но... надо еще полировать.

Я очень близко подошел к своей мечте

И где-то месяц назад я достал свои гоняющиеся квадратики и скормил клоду опусу. Можем ли мы что-то сделать? Я не рассчитывал на 3д, думал, о доработке 2д до чего-то симпатичного, редактор трасс, ну и логику из Grand Prix World.

В качестве референса я скормил мануал GPW в пдф и прохождение с gamefaqs.

2Д режим был реализован совершенно чудесно!

И тут клод спрашивает, давай 3д попробуем. Я помнил, как у них было 3д еще летом. Примтивно, грубо и противно. Но я же закоммитил изменения, -- давай говорю. Делаем. И он сделал. И меня прямо торкнуло, -- а давай гладкие формы болидов? а давай заполним стыки, чтобы правильно был? а давай воду, а давай -- следы на трассе? А дождь? А город типа Монте Карло? И каждый раз я мог продвигаться и продвигаться!

Монте Бланнко

О, как это было славно! Я скормил пару статей по эволюции форм машин ф1, и клод сделал модели по 16 эпохам. Мы прошлись по вариациям форм в каждой эпохе! Картинки спонсоров!

Формы болидов старых эпох. 1950.
Формы болидов старых эпох. 1950.

Даааа, это было прям круто-круто. Возможно мастера мне скажут, что я профан, да я и не буду спорить. Получилось то, что я хотел и не мог сделать очень давно...

Конечно исторические машины, это только форма. А физику или хотя бы характерную скорость еще делать....Я обнаружил, что обгоны неправильные -- машины входят в поворот парами, я скормил клоду статью из спортэкспресс... и он нагуглил сопутствующей информации.

Спорт Экспресс. Специальный выпуск 1994
Спорт Экспресс. Специальный выпуск 1994

А ведь еще заезд в боксы и смена резины...Коллега посмотрела и сказала, что-то в Монако окна черные, -- как мертвое. И мы сделали окна.

Мы сделали пересечение трассы самой себя, как в Сузуке.

Пересечение трассы самой себя
Пересечение трассы самой себя

Генератор трасс, редактор трасс. Генератор мира, где команды живут от 1950 до 2026, и можно выбрать любой год для продолжения.

Дальше надо было сделать менеджмент и мы двинулись в этом направлении. По материалам игры быстро накидалась логика, которую лень было проверять и я навесил идеальных советников, чтобы можно было кликать и двигаться к гонке. Пощелкал, по идеальным советникам, вроде примерно нормально, средне играбильно.

Релиз

Релиз? Клод говорит, постой -- звука-то нет! Я те ща сделаю, ты же по всем эпохам задал моторы, количество цилиндров, объем... сейчас, я тебе построю. Получился писк. Похожий отдаленно. НО писк. Я скачал по всем эпохам образцы от разных команд по всем типам двигателя, а клод сделал мне стенд. Ну такое... Примерно похоже на стенде... Но в гонке -- там камеры на столбах, машины проносятся мимо, допплер-эффект... Уже светало... Я уже не помню зарелизился ли я в это утро или в следующее... у меня там еще и сборка на гитверсе не сразу поднялась....

Стенд для отладки звука моторов
Стенд для отладки звука моторов

У меня теперь собирается релиз и лайв демо на гитверсе, круто же?

Разослал друзям в телеграм. И оказалось, что вообще непонятно, как играть. Куда жать то? -- спрашивали друзья. Что делать во время квалификации?

Я вылизывал две недели интерфейс на мобиле и на десктопе. Вычитывал нейрослоп и разбирался, а что за механику мне нагенерил клод. И по разговорам понял, что чтобы играть надо чтобы была залипательность, награда за правильные решения, наказания за плохие...

Я углубился в идею не отрывать сразу весь интерфейс игроку. Так будет проще... И заодно будет прогресс, будет вознаграждение. Но сначала...Сначала надо допилить песочницу.

То, как игру задумывал я. Вылизать экраны. Проверить, что советы правильные. Хочется ковырять то, что интересно -- трассы не плоские, а 3д, машины старые не только по моделькам, но и чтобы ехали аутентично. Надо стараться не потерять мотивацию, но все же работать над тем, чтобы это все-таки была игра.

Итак, как играть, на что посмотреть?

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

Скуф навайбкодил игру мечты своего детства

Нажмите кнопку "Сразу на старт". По умолчанию будет включен 2d вид и гоночный инженер возьмет на себя связь с пилотом и приказы ему.

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

Нажмите кнопку "Старт" и запустите гонку.

Можно переключиться в 3d вид, включить миникарту.

Можно отключить гоночного инженера и заняться приказами пилоту (не пропустите момент, когда будет пора в боксы!).

Приказы во время гонки
Приказы во время гонки

Можно похулиганить -- вызвать дождь или машину безопасности.

Также можно увеличить скорость симуляции или домотать до конца.

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

Перед квалификацией
Перед квалификацией

Поэтому рекомендую зайти в настройки и включить опцию "Идеальный совет". После этого вам станет доступно полное описание какие настройки надо сделать и почему. Также рекомендую включить опцию "читы", она для режима карьеры позволит насыпать себе любое количество дополнительных денег.

После включения идеального советника, можно выбрать гоночный викенд, настроить машину и начать квалификацию.

В квалификации надо нажать "Старт". Гоночный инженер сам даст пилотам указание на выезд и на быстрый круг, но вы можете перехватить управление. Можете убыстрить скорость симуляции или промотать. После окончания квалификации вас ожидает гонка, перед которой надо выбрать стратегию питстопов, жмем идеального советника и переходим к уже знакомой нам гонке.

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

1. Машина

Здесь в обзоре надо посмотреть сравнение наших характеристик с конкурентами -- со средним и с лучшим, там будет видно наше отставание. Характеристики двигателя мы никак не можем улучшить, все, что мы можем на следующий год использовать другой двигатель. Для заводских команд типа Скудерии Розетти, так и вовсе этот путь закрыт, они обречены использовать родной мотор.

Инженеры и конструкторы
Инженеры и конструкторы

Дальше нам надо распределить ресурсы конструкторов, инженеров и механиков. Сила этих отделов комбинируется из характеристик шефа и размера отдела, который выбирается в межсезонье и зависит только от денег. В первый год размер тот, который достался вам вместе с командой. Размер инженерного отдела влияет на количество проектов, которые могут вести конструкторы.

Надо распределить конструкторов по проектам доработки (выбираем размеры проектов). Можно пользоваться советником.

Также надо принять решение делаем ли мы машину следующего года не дожидаясь правил на следующий год. Риск -- потеря части проделанной работы. Но слабые команды идут на этот риск боясь и вовсе не успеть, а сильные могут рискнуть ожидая прорыва в технологиях.

Надо выбрать количество миль тестов и распределить на что тратятся усилия инженеров. Настройка -- дают очки настройки перед гонкой, Доводка -- ищет скрытые дефекты, а Исследования ускоряют работу конструктора. Тут тоже можно пользоваться советником

2. Команда

Тут можно посмотреть характеристики пилотов и учитывать их при расставлении приказов перед гонкой.

В разделе Отделы и шефы в найдете информацию и объяснения на что влияет каждый отдел

Отделы
Отделы

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

3. Квалификация и гонка

Тут вы уже знакомы с распределением очков, полученных на тестах, -- это было на быстрой гонке

Что дальше?

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

Но мне-то хочется еще ковырять, -- детали машин, трассы в 3д. Последнюю неделю убил на то, чтобы трассы были неплоскими и с ландмарками.

Ночной Сингапур

И получается все остальные трассы теперь надо тянуть к такой форме. А потом ребаланс игры -- у нас увеличилось количество трасс, а значит за сезон конструкторы успеют больше. И опять релиз не приблизился, а работы прибавилось. Это я еще не выкладывал.

Где взять

Все в опенсорце, опубликовано на ГитВерсе, там же ссылка на лайв версию в браузере. Эта версия -- без серверной части, прогресс игры сохраняется в браузере. Редактировать трассы и мир в них нельзя.

Для того, чтобы работали редакторы, надо скачать и запустить с серверной частью, для этого нужна nodejs

Под мобилу тоже должно работать, но в ней так же нельзя редактировать трассы и мир. Сотворение мира -- только на десктопе.

Репо:

Лайв-демо:

9900
1188
77
22
22
11
11