Claude помог собрать Telegram-RPG: как устроен ход
Разработчик игры AniWorlds рассказал, как превратил старые текстовые RPG в Telegram-проект, где нейросеть ведёт весь мир за игроком. Внутри — почему важен порядок полей в JSON, как работает бой с бросками кубиков и сколько времени занимает один ход.
От модератора к нейросети
Саиду 29 лет, и больше пяти лет он делает игры на Unity: работал в компаниях и на заказ. Идея AniWorlds родилась не на работе, а из подросткового опыта — в 15–16 лет он играл в текстовые ролевые игры вроде AnimeVIP, где за события в мире и за бои отвечал модератор.
Главная проблема таких игр была знакома многим: ответов приходилось ждать слишком долго, а это ломало темп. Поэтому он решил заменить модератора нейросетью, которая не уходит «до вечера» и может отвечать почти сразу. Так и появилась AniWorlds — текстовая RPG в Telegram, которую он делает с конца августа 2026 года. Первые четыре версии создавались с ChatGPT, а сейчас актуальная шестая версия разрабатывается с помощью Claude.
Как выглядит игра и что в ней делает ИИ
AniWorlds — это песочница. Сейчас в ней есть один мир по «Наруто»: Коноха и другие деревни, 462 точки на карте, 260 персонажей и 13 групп со своими рангами и должностями. Канонического сюжета нет — мир лишь задаёт фон, а дальше игрок сам решает, что делать: идти за раменом, брать задание, вызывать кого-то на бой или ссориться со всей деревней.
Играть можно за кого угодно: персонажа берут из каталога или создают с нуля через анкету и способности. Способности описываются обычным текстом, а игра проверяет их при сохранении. Сам ход тоже строится просто: действие пишется в звёздочках, речь — обычным текстом, а способность вставляется в кавычках внутри действия. Ответ на ход в Telegram Mini App приходит примерно за 5–10 секунд.
Почему в JSON важен порядок полей
Внутри система устроена так, что один ход — это один запрос к модели без дополнительных цепочек и повторных исправлений. Запрос состоит из четырёх частей: правил игры, описания остального мира, данных текущего хода и ответа в виде JSON со 38 полями. Сервер затем распределяет эти поля по таблицам — например, в раны, место, вещи, память и отношения — а текст отдаёт игроку без переписывания.
По словам автора, именно порядок полей сильно влияет на качество результата. Если решение находится ниже текста, модель уже успевает «написать сцену» и потом слабо опирается на итог. Поэтому сначала в схеме идут скрытые решения, а уже потом художественное описание. Ещё одно правило — не дублировать одно и то же решение в разных местах, иначе модель начинает противоречить сама себе.
Бой, память и цена одного хода
В бою порядок событий тоже важен: сначала действует персонаж, потом отвечает игрок, а исход считается уже после этого. Если герой не показал стойку или другое подготовительное действие заранее, то в исходе это уже нельзя «додумать задним числом». Для боёв автор использует серверные броски кубиков, чтобы результат не зависел от случайности на стороне клиента.
Есть и отдельная проблема с тем, что знает персонаж, а что знает только игрок. Модель видит весь запрос целиком, включая скрытые намерения, но персонажи в мире не должны получать лишнюю информацию. Для этого после исхода создаётся отдельное поле о том, что персонажи видели и слышали, и уже из него берётся память. Полностью проблему это пока не убрало. Автор также отмечает, что при работе над проектом менял модели несколько раз и каждый раз заново проверял и формат JSON, и логику поведения.