Я стал безработным, но у меня есть мечта. Четыре месяца по вечерам я делал многопользовательскую игру с ИИ. Вот она, и вот что пошло не так
Вот и я стал безработным. Но у меня есть мечта: сделать многопользовательскую игру. Первые два дня без работы я делал то, что делают все: обновлял резюме и смотрел в стену. На третий решил, что раз уж появилось время, надо наконец показать людям штуку, которую я собирал по вечерам после работы и по выходным с конца апреля. Это браузерная игра. Про замки, армии, гексовую карту и очень сырой баланс. Делал я её не один, а с ИИ, и об этом честно, потому что иначе разговор в комментариях будет только об этом.
Карта сейчас. Монстр в центре только что сказал: «Машу рукой в пустоту. Вдруг ответят».
Кто я такой
Геймер с тридцатилетним стажем. Начинал с Atari, потом Dendy, Sega Mega Drive 2, Sega Saturn, первая PlayStation. Потом ПК и всё, что на нём выходило. Потом четвёртая и пятая PlayStation, но ПК никуда не делся. Годы ушли в Lineage 2, немного в WoW. «Герои 3» и Disciples до сих пор стоят и до сих пор запускаются, а в Forge of Empires и Travian я в своё время просидел столько, что стыдно называть цифру. Скрывать не буду: механики, которые мне в них нравились, я утащил в свою игру. Замок с постройками и найм из них, отряд, который надо расставлять перед боем, экономика, которая тикает без тебя. Всю жизнь хотелось собрать из этого что-то своё, и всю жизнь это упиралось в одно: я не программист. Я ИТ-директор. Это человек, который знает, как должно быть, умеет объяснить, чего хочет, и последний раз писал код в институте.
Весной ИИ-агенты, которые пишут код сами, стали настолько доступными, что я решил проверить: сможет ли человек без опыта разработки собрать игру своей мечты, если рядом сидит нейросеть, а вечером есть три свободных часа. Спойлер: сможет, но не так, как я себе представлял.
Как это начиналось
До этого были недели брейншторма. Я смотрел, какие браузерные игры вообще живы, как они устроены внутри, что из этого может собрать ИИ, а что нет, и на какие технические решения я вправе рассчитывать, если сам код не пишу. Хотелось не клон, а свой движок: карта, замок, бой и экономика, которые работают вместе. К 23 апреля картинка в голове сложилась, и я сел и начал. Схема работы была простая: я описываю, что хочу, ИИ пишет код, я смотрю и говорю «не так». За четыре дня мы сделали 133 правки. Всё сразу в основную ветку, без проверок, без ревью. Один вечер я вообще оставил его работать на ночь по списку задач и утром прочитал отчёт, что сделано. Ощущение было как у ребёнка, которому дали настоящий экскаватор.
Игра рождалась буквально в дороге. Всю дорогу от работы до дома я голосом разговаривал с ИИ прямо в машине: объяснял, что хочу сделать дальше, просил замерить, где тормозит, поискать, как такое делают другие, и разложить варианты. К моменту, когда я парковался, варианты уже лежали готовые. Дома оставалось выбрать и сказать «делай». Со стороны это выглядело как человек, который всю дорогу спорит сам с собой о замках и гарнизонах, и в общем так оно и было. Первую неделю игра, кстати, носила имя любимой, той самой, из детства. Потом я опомнился и переименовал.
Утро 27 апреля. Название ещё чужое, прогресс-бар уже свой.
К 27 апреля я перестал понимать, что именно в игре менялось и почему. Тогда я сделал то, что делают в нормальных командах: каждая правка стала отдельным запросом на слияние, PR. Для непрограммистов: это как черновик, который надо показать, прежде чем он попадёт в книгу. 27 апреля таких черновиков влилось 52. За один день.
27 апреля. Так выглядел главный экран в день, когда мы перешли на черновики.
Правило, которое родилось из одной кнопки
В тот же день на сайт уехала версия, где ссылка «Нет аккаунта? Создать» легла ровно поверх кнопки «Войти». Нажимаешь войти, открывается регистрация. ИИ сделал скриншот, как я его и просил. Скриншот лежал в папке. Никто на него не посмотрел. Ни он, ни я.
Тот самый скриншот. Он существовал. Его просто никто не открыл.
Так появилось первое правило нашей совместной работы: скриншот не считается сделанным, пока ИИ его не открыл и не описал словами, что на нём. Я даже поставил защиту, которая не даёт закрыть задачу без свежей картинки. Звучит смешно, но именно это правило потом ловило по нескольку ошибок в неделю.
На следующий день мы потратили 14 правок подряд на одну кнопку, у которой картинка была в одном месте, а место, куда надо кликать, в другом. Четырнадцать. Я к вечеру уже разговаривал с ним, как с котом, который снова сел на клавиатуру.
Май. Месяц, который я не могу объяснить
В мае мы влили 580 черновиков за 26 дней. Я перечитываю список и не верю.
9 мая. Утром у игры была одна карта мира. Вечером уже совсем другая: с новым движком рисования, туманом войны, поиском пути, монстрами. Старую карту мы в тот же день удалили целиком, минус восемь тысяч строк. За один день 48 правок.
13 мая. Я заметил, что текст в игре мыльный. Оказалось, всё рисуется на холсте, как в графическом редакторе, а не как на обычной веб-странице. Решили переделать. Все экраны. За вечер и ночь. 69 правок за день, рекорд за всё время. Утром текст стал чётким, а я понял, что так больше нельзя.
Экран персонажа 26 апреля. Текст рисуется на холсте и мылится.
Тот же экран 14 мая, после ночи из 69 черновиков.
Картинки для карты рисовала нейросеть. Сто с лишним шестиугольных плиток: лес, горы, пустыня, болото. Первая партия пришла с белыми рамками по краям, и мы четыре правки подряд пытались понять, откуда они. Оказалось, нейросеть рисовала клетчатый фон под прозрачностью, а мы его честно показывали игроку.
24 и 25 мая появились четыре играбельные фракции: нежить, демоны, орда, лесной народ. Каждая со своими юнитами, способностями и анимациями. Две за один день. Я до сих пор не могу объяснить, как за два дня получилось то, что я в детстве считал работой целой студии. С поправкой на то, что баланса там не было никакого и нет до сих пор.
Двор замка 24 мая. Мостовую под ним мы перекладывали семь раз за вечер, пока не перестала «плыть».
26 мая мы сделали бота. Игрок пишет в Telegram «у меня не открывается конюшня», бот заводит задачу, ИИ ищет причину, чинит, делает черновик, и утром я вижу готовую правку. Первый настоящий баг от живого человека бот починил в тот же день: строения замка открывались медленно, потому что мы делали сотню запросов в базу вместо одного.
28 мая мы за два дня сделали три слоя мира: обычный, теневой и верхний, между которыми ходит герой. Утром 29 мая я выпустил восемь срочных починок подряд, потому что каждая открывала следующую. За два быстрых дня пришлось заплатить одним очень медленным утром.
Июнь. Телефон, Яндекс и семнадцать дыр
В июне я попробовал открыть игру на телефоне. Не открылась. Потом открылась, но в Яндекс-браузере показывала белый экран, а везде остальное работало. Мы неделю ловили этот белый экран. Виноватой оказалась защита самого браузера, которая ломала наш движок при загрузке.
12 июня я попросил ИИ проверить игру на безопасность так, будто он злоумышленник. Он нашёл семнадцать проблем и починил их за день семнадцатью черновиками. Одну починку пришлось откатывать через час: она требовала библиотеку, которой на сервере не было, и сайт лёг. Это мой любимый тип ошибки: когда всё сделано правильно, а не работает.
В том же месяце мы переодели игру в фэнтези: кованые рамки, старинный шрифт.
13 июня. Кованые рамки, старый шрифт и кнопка «Сообщить о баге», которая ведёт к боту.
Три недели без ноутбука
А потом я пропал на три недели. Не выгорел, а уехал в отпуск в Японию и залип на Акихабаре. Это улица, где в каждом втором магазине стоят старые приставки, картриджи и всё, на чём прошло моё детство. Человек, который делает игру про замки, ходил между полками с Сегой и Дримкастом и ни разу не открыл ноутбук.
Акихабара. Каждый этаж каждого дома здесь про игры.
Как я люблю "всратые фото))) будто с бодуна - но я просто устал целый день на ногах по 30000+ шагов"
Нашёл её. Ту самую, первую. С джойстиком в плёнке, как из 1997-го.
А потом жена сказала «пойдём, покажу кое-что» и не сказала куда. Мы шли, шли, и из-за угла торгового центра вырос Гандам в полный рост. Двадцать метров. Я хотел его увидеть с детства и не знал, что он в планах, она подготовила это молча. Что было у меня на лице, видно на фото. В магазине рядом я купил себе сборную модель, как в двенадцать лет, и не испытываю по этому поводу ни капли неловкости.
Гандам в полный рост, коробка в руках и лицо человека, у которого сбылась детская мечта.
Я к чему. Детские мечты сбываются, если рядом есть кто-то, кто в них верит и ведёт за угол, не говоря куда. Из Японии я вернулся с твёрдым решением игру не бросать и обязательно показать её людям. Жена, если ты это читаешь: без тебя ничего этого не было бы.
Июль. Я стал начальником отдела, в котором никто не человек
Вернувшись, я понял, что работать «я описал, он написал» на такой объём уже нельзя. Слишком много всего он забывал, слишком часто чинил одно и ломал другое. Мы собрали то, что я про себя называю отделом: один агент планирует и ставит задачи, несколько изучают код, один пишет требования, один проектирует, один программирует, совет из нескольких проверяет, ещё один тестирует. Каждый принимает работу у предыдущего и может отправить на переделку. В конце я получаю отчёт: кто справился с первого раза, кто переделывал и сколько раз. Иногда программист переделывал трижды. Иногда проверяющий заворачивал программиста за дело, а иногда просто из вредности.
С этим отделом за июль вышло 62 правки, зато каждая размером с прежние двадцать. Появились живые монстры, которые ходят по карте, экономика в реальном времени вместо пошаговой, письма при регистрации. Монстры при встрече говорят фразами из мемов. Их полтораста, и да, это ИИ их придумал. Моя любимая: «Машу рукой в пустоту. Вдруг ответят».
Бой в июле. Слева заклинания, справа лог, посередине маг решил, что переговоры окончены.
Август. Баланс, который я сломал сам
В августе я решил, что пора заняться балансом, и попросил построить симулятор боёв. Он прогнал тысячи боёв и выдал вердикт: герой с седьмого уровня перестаёт получать урон вообще. Я это знал по ощущениям, но цифра оказалась хуже ощущений. Один из черновиков с результатами симуляции весил триста тысяч строк. Полезных выводов там было три.
Ещё в августе появился сайт вокруг игры, чат, друзья, кланы, доска идей, где игроки голосуют за фичи. И вражеский герой, который живёт на карте сам, захватывает постройки и устраивает осады, даже когда игрока нет.
18 августа. Красный крест над шахтой значит, что её держит страж. Значок над фермой значит осаду вражеского героя.
Сентябрь
В начале сентября я остался без работы. В тот момент в игре делался самый большой кусок, фабрика: производство ресурсов, потоки, заказы. 5 сентября я решил, что баланс подождёт, а показать пора сейчас. Не потому, что игра готова. Потому что мне нужно, чтобы в неё кто-то поиграл, кроме меня и восьми агентов.
Цифры
• Четыре месяца и две недели, из них 70 дней с хотя бы одной правкой.
• 982 влитых черновика. Рекорд: 69 за 13 мая.
• Ни одной строки кода, написанной мной руками.
• Не каждый будний вечер, но если садился, то на два-три часа. В выходной день часов шесть.
Что с игрой сейчас, честно
Играть можно: создать героя, выбрать фракцию, ходить по карте, драться, строить замок, нанимать армию, общаться в чате. Баланса почти нет. Некоторые способности не имеют смысла, некоторые ломают бой. На телефоне работает, но местами тесно. Наверняка есть ошибки, которых я не видел, потому что я один и хожу одними и теми же путями.
Я не прошу плюсов и не продаю ничего, игра бесплатная и без доната. Я прошу критику. Что непонятно с первого экрана, где бросили, что бесит. Рекомендации, что сделать первым, чтобы это стало играбельным. Всё это уйдёт в работу тому самому отделу, а я расскажу, что из этого вышло.
Истории из этих четырёх месяцев, вроде четырнадцати правок на одну кнопку или бота, который чинит баги, пока я сплю, вынесу в свои посты, если это кому-то интересно.
Сайт игры, там же и сама игра: https://gliding.likontsev.tech/
И главный вопрос, ради которого этот пост. Стоит ли продолжать? Или лучше заруинить и не позориться?




























