Что делается-то! ЖОНГЛИРУЕТ!!! ШОК!!!
автор cheekibat
PS Тем временем ваши фрукты на столе внезапно исчезают....
Как я хотел сделать уютный чат про пони, а случайно написал онлайн-игру с экономикой и нейросетями
Привет, Пикабу! Заваривайте чай, сейчас будет небольшая инди-история.
Обычно разработка игр начинается с грандиозных планов. Люди хотят сделать огромный мир, крутую графику, сложную прокачку. А я... я просто хотел сделать тихое, уютное место в интернете.
Есть такая популярная браузерная песочница — Pony Town. Люди создают там своих пиксельных пони, заходят на сервер и просто общаются, хотя я туда не заходил наверно года так с 2017, но мне когда то нравился такой формат расслабленного виртуального мира для общения и хотелось создать нечто похожие но со своей вариативностью.
"И такой эксперимент я уже проводил создавая мир Понивиля в Minecraft, писал моды и делал аутентичную атмосферу еще в 2020 году, но после 4 лет существования проекта PonyCraft был закрыт- но сейчас не о нем"
Так родился проект Ponyville 2.0 (PonyWile).
С технической точки зрения я совершил «ересь». Я не стал брать готовые игровые движки. Вся игра, весь рендеринг написан на чистом Vanilla JS и нарисован обычными HTML-тегами <div> и <img>. Звучит дико, но браузер сам прекрасно анимирует гифки, двигает персонажей и сортирует слои через CSS. Для уютной изометрии этого оказалось более чем достаточно.
Сначала это была просто пустая карта, где можно было бегать и писать сообщения в чат. Но потом игра начала жить своей жизнью.
Глава 1. Первый интерактив, или Как обычный мячик создал киберспорт
Мир казался слишком статичным. Чтобы протестировать физику и столкновения (коллизии), я просто кинул на карту обычный мячик. Думал, ну, будут иногда пинать его мимоходом.
Как только игроки поняли, что мяч можно толкать, чат замер. Люди начали стихийно собираться в группы. Они использовали кусты и деревья как штанги ворот и начали устраивать настоящие футбольные матчи!
Я понял: людям хочется взаимодействовать с миром. И решил дать им эту возможность.
Глава 2. Эпоха земледелия. Огород, который покорил всех
Мяч — это весело, но нужен был какой-то созидательный процесс. И я добавил механику Огорода.
Идея простая: покупаешь семена, сажаешь семена, поливаешь из лейки и ждешь. Народ просто влюбился в эту механику. Огород стал главным социальным хабом сервера. Люди часами копались в виртуальной земле, сажали морковку и капусту, а пока ждали урожая — обсуждали в чате, как прошел день на работе или в школе. Это было именно то медитативное состояние, которого я добивался.


Отгадай загадку сфинкса и тебя не съест.
Глава 3. Куда девать морковку? Магазины и Ярмарка
Огород породил новое условие: у игроков скопились морковки и яблоки. Что с ними делать, просто продавать?
Так в игре появилась экономика. Сначала я добавил Магазины, где за собранный урожай можно было покупать базовые семена и продавать найденные яблоки и иные предметы.
А затем появилась Ярмарка — глобальное событие для всего сервера. Это огромный счетчик прогресса, куда абсолютно все игроки могут сдавать свои ресурсы ради общих наград. Это невероятно сплотило комьюнити. Видеть, как кто-то приносит на ярмарку сотню культур, а шкала прогресса ползет вверх — бесценно. Ведь общие усилия позволяли открыть особый магазин с редкими семенами и товарами.
Глава 4. Курочки, камни
Экономика работала, но хотелось добавить миру случайных событий и сюрпризов.
Я пустил по карте гулять курочек. Они не просто ходят для красоты — время от времени они несут яйца, которые можно собирать.
А так же на карте раскидал особые камни, при взаимодействии с которыми с 10% шансом выпадают драгоценные кристаллики за мини игру в кликер


Это вам не Minecraft, но киркой поработать придется.
Глава 5. Когда фермерства стало мало: боевая система в стиле «Героев 3»
Рано или поздно собирать морковку и играть в салки становится слишком мирным занятием. Решил добавить экшена, соревнований и магии.
Но тут возникла серьезная техническая проблема. Делать классическую реалтайм-боевку (когда все бегают и спамят скиллы в реальном времени) на нашем DOM-движке и сервере — это верный путь к лагам, рассинхронам и боли. Чуть скакнул пинг — и ты уже проиграл.
И тогда я вспомнил великую классику, в которую мы все залипали сутками — Heroes of Might and Magic. Пошаговая тактика! Она не зависит от пинга, не требует 60 FPS и идеально ложится на наши технические реалии.
Сказано — сделано. В игре появилась полноценная тактическая боевая система с сеткой (battle grid).
Работает это так: когда начинается бой, всё действо переносится на отдельное размеченное поле. Никакой суеты — только чистая тактика. У каждого участника есть запас очков хода, радиус перемещения и инициатива, которая определяет очередность действий.
Игроки ходят по клеточкам, выбирают позицию, рассчитывают дистанцию удара или заклинания. Технически реализовать этот battleGrid (расчет коллизий на сетке, проверку линии видимости и очередность ходов) было тем еще испытанием для серверной логики.
Теперь наши игроки могут не только копаться в грядках, но и устраивать настоящие магические дуэли, где побеждает не тот, кто быстрее кликает мышкой, а тот, кто думает на два хода вперед.
Чтобы объединить всё это (огород, яблоки, яйца, ярмарку и т.д) в единую систему, я добавил Квесты (ежедневные и еженедельные), Достижения и Лидерборд для соревновательного духа. Теперь у игроков всегда была маленькая уютная цель на вечер: собрать 10 яиц, полить 5 грядок, сыграть партию в догонялки и получить за это награду.



Глава 6. Живая Эквестрия. Как нейросети чуть не лишили меня штанов
И вот мы подошли к самому интересному. Мир жил, игроки суетились, но мне не давали покоя каноничные персонажи (NPC). Выдавать им заранее написанные картонные фразы было ужасно скучно. Я хотел, чтобы с ними можно было поговорить по-настоящему.
Я решил подключить к NPC языковые модели (LLM). И тут началось веселье.
Проблема 1: "Я искусственный интеллект"
Заставить нейросеть быть живой пони оказалось сложнее чем я думал.
Пришлось долго повозиться с этим, но это сработало! Они начали писать вещи в духе:
« Привет, сахарок! Как там твой урожай яблок?». - речь ЭпплДжек
Проблема 2: Бюджет и болтливые игроки
Когда NPC "ожили", некоторые игроки пришли тестировать. Они начали болтать с ботами обо всем на свете часами. Некоторые даже пытались ходить с ними на свидания (шутка?).
И тут я погрустнел. Каждое сообщение нейросети — это запрос к платному API. Наблюдая за графиком расходов, я понял, что к концу недели останусь без штанов.
Пришлось экстренно придумывать систему «усталости» (NPC Fatigue). Теперь один игрок может написать ИИ-персонажу не больше 15 раз за час. А игрокам я честно и в духе лора объяснил: пони тоже устают, им нужно время на отдых и свои дела. Бюджет был спасен, хотя бы не к концу недели он истратился.
Что мы имеем сейчас
Из простого эксперимента с HTML-тегами PonyWile вырос в живой, развивающийся мирок. Здесь люди после тяжелого дня могут объединяются в компании, выращивают капусту на грядках, гоняют мяч, играют в салочки, а потом идут болтать с любимыми персонажами.
И знаете что? Это круто.
Если вам хочется немного расслабиться, посмотреть, как работает браузерная игра, вскопать пару грядок или попытаться разговорить ИИ-пони — заходите на огонек, мы всегда рады новым лицам:
Спасибо, что дочитали мою историю до конца!












