Возрождение проекта с помощью Cursor

Прокомментировать Просмотры: 18

В далеком 2010 году я решил попробовать свои силы в геймдеве: ниша браузерных космических стратегий тогда переживала явный застой. Знаменитый Starquake на полноценную стратегию не тянул, а в сети безраздельно господствовал OGame вместе с чередой бесконечных клонов. Однако примитивная модель развития колоний и всего три вида ресурсов напрочь убивали ощущение реализма. Изучив чужие наработки на GitHub, я принял решение создавать проект с чистого листа.

Технологический стек того времени был классическим: клиентская часть на Flash и связка PHP + MySQL на бэкенде. Программировал я в одиночку, хотя для визуального оформления привлек художника и дизайнера, которым до сих пор безмерно благодарен. Проект прошел типичную эволюцию: от разработки на личном ноутбуке и запуска на скромном VPS до переезда на мощный выделенный сервер в Hetzner (славные были времена) с внушительным запасом ядер, памяти и дискового пространства.

Именно эта игра подарила мне боевое крещение настоящим HighLoad. До сих пор на технических собеседованиях я удивляю коллег показателями в 5 000 RPS и 30 000 обращений к базе данных за секунду! Причем работало это на стандартном PHP и MySQL, без привлечения модных C++ или NoSQL. Архитектурное решение было нетривиальным: вся СУБД целиком удерживалась в оперативной памяти, а синхронная слейв-реплика занималась дампом на диск и резервным копированием. Пул воркеров php-fpm масштабировался динамически, доходя на пиках нагрузки до пятисот процессов. При этом на том же сервере без малейших сбоев соседствовали и другие проекты.

В золотые времена постоянный онлайн составлял 100–150 активных пользователей. Постепенно финансовая отдача начала угасать, и когда доходы перестали покрывать аренду мощностей, я выждал пару лет и окончательно свернул серверы, осознав, что проект себя исчерпал.

В 2019 году исходники отправились в открытый доступ на GitHub. Главная загвоздка заключалась в утрате базы данных: уцелела лишь полупустая архивная копия за 2012 год, где не хватало значительной части контента.

Искусственный интеллект спешит на помощь

Около месяца назад меня осенило: почему бы не поручить восстановление базы ИИ-ассистенту Cursor? Сможет ли нейросеть проанализировать кодовую базу и воссоздать правильную архитектуру? Результат превзошел ожидания. Мы тщательно прошерстили все исходные файлы и по цепочкам SQL-запросов заново сгенерировали структуру таблиц. Самое забавное, что недостающие игровые сущности удалось спасти благодаря архитектурному антипаттерну — в коде прямым текстом были захардкожены идентификаторы уникальных кораблей, чертежи и их спецификации. Так базу удалось вернуть в исходное рабочее состояние.

Мы подготовили компактную конфигурацию docker-compose — и проект успешно ожил!

Дальше процесс захватил с головой: мы декомпилировали Flash-исходники и полностью переписали клиент, осовременили спрайты флота и сооружений, отполировали анимации, сохранив аутентичный геймплей. Пришлось переработать и экономику: первоначальные 60 видов сырья и 50 химических элементов были явным перебором. Заодно выправили баланс планетарных баз и боевых единиц…

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

https://21noon.com/ — сразу после закрытия проекта адрес забрали киберсквоттеры, но к текущему моменту они его наконец освободили.

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

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

Сейчас же процесс интеграции занял менее трех дней. Английская версия полностью функционирует, на очереди немецкий язык, а следом — воплощение концепции мультивселенной.

Единый мир в разных измерениях

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

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

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

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

Окажется ли концепция коммерчески успешной? Не столь важно: сама возможность соединить столь разные вселенные в едином игровом пространстве увлекает меня куда сильнее.

 

Источник

Поделиться:

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов