user12162022

user12162022

На Пикабу
131 рейтинг 4 подписчика 0 подписок 3 поста 1 в горячем
20

Сервер браузерной Lineage 2 на Node.js: как ужать мир в 17 байт и выдержать "5000" онлайна⁠⁠

Сервер браузерной Lineage 2 на Node.js: как ужать мир в 17 байт и выдержать "5000" онлайна

Документация

https://fatmax123.github.io/Srver_Doc/

Все знают, что делать MMORPG в одиночку — верный способ сойти с ума, и прослыть дибилом. Это честный девлог о том, как мой сервер чуть не захлебнулся от JSON, почему толпа на спавне сломала сетку мира и как ужать расчеты в 17 байт на игрока.

Проблема №1: Клиент — это враг

В обычной игре клиенту можно доверить базовые вещи: например, расчет анимации или координаты. В браузере доверия нет вообще. Ноль. Любой игрок может открыть DevTools (F12), написать в консоли player.speed = 99999 или отправить поддельный пакет «я убил босса». Поэтому сервер спроектирован по принципу Zero-Trust (нулевое доверие): Клиент не знает своих координат. Он отправляет только намерение: «Я зажал клавишу W, хочу бежать вперед». Сервер сам считает скорость, проверяет геодату рельефа, смотрит, нет ли перед носом стены, делает шаг и подтверждает точку. Урон, заточка, выпадение дропа, радиус каста клиент вообще не имеет к этому доступа. И всё это сервер должен рассчитывать 10 раз в секунду для каждого моба и игрока.

Проблема №2: Смерть от мусора и 42 мегабайта в секунду

Первый сетевой протокол ИИ написал на старом добром JSON. Сервер слал клиенту строчки с ID, координатами X/Y и жизнями. Красиво и удобно. Ровно до первого стресс-теста на 2 000 игроков и 1 500 мобов.Когда каждый видит вокруг хотя бы 30–40 соседей, сервер генерирует под 50 000 обновлений в секунду.И тут начался кошмар:1. Трафик: 42.5 МБ в секунду! Нужен гигабитный канал ради сотни тестеров.2. Мусор в памяти: Создание сотен тысяч временных JSON-строк мгновенно забивало оперативку. Сборщик мусора Node.js врубал экстренную очистку (Stop-the-World).3. Весь мир замирал на 200–300 мс каждые пару секунд. Мобы телепортировались, удары не проходили.Спасение: диета до 17 байтМы выбросили JSON из симуляции навсегда. Вместо текста упаковали всю информацию об игроке или мобе в 17 сырых бинарных байт:— 2 байта на ID;— по 2 байта на координаты X, Y, Z (квантование до сантиметра);— 1 байт на угол поворота;— 2 байта на процент жизней;— 2 байта на маску состояний (бежит, атакует, кастует, мертв).Итог: сетевой трафик рухнул с 42.5 МБ/с до 2.2 МБ/с при "5 000" онлайна. Падение в 19 раз! Сервер вздохнул свободно, а мир перестал заикаться.

Проблема №3: Проклятие Городской Площади

Чтобы сервер не проверял расстояние между каждым игроком и каждым мобом, мир нарезается на сетку — Spatial Grid с клетками по 108 метров. Ты опрашиваешь только свою клетку и 8 соседних. В поле это работает идеально.А потом зашли живые игроки. Они толпой пришли на центральную площадь: торговать, орать в чат и собирать группы.В одну несчастную клетку набилось 400 человек. И вся оптимизация мгновенно выродилась обратно в жуткие тормоза: сервер снова начал считать расстояние каждого ко всем.Как решили:Написали адаптивное дробление. Как только в клетке собирается больше 100 сущностей, она прямо на лету делится на 16 мелких зон по 27 метров. Игроки в толпе получают обновления только о тех, кто рядом, а дальние персонажи обновляются реже. Сервер даже не заметил нагрузки.

Проблема №4: «Проклятие одной монетки»

Еще одна ошибка новичка — писать данные в базу при каждом чихе игрока. Моб умер -> упала шестеренка -> игрок подобрал -> пишем в базу. Когда тысячи игроков месят мобов, диск захлебывается за секунды. Игра виснет.Решение: игра живет только в оперативной памяти.База данных вообще не знает, что вы бегаете по острову. Сервер просто ставит флаг «персонаж изменен». Раз в 15 секунд фоновый процесс пачкой сбрасывает всех изменившихся игроков в базу за один быстрый запрос. Никаких лагов и никаких откатов инвентаря при рестарте.

Миллиард токенов и 320 часов марафона: сколько стоит разработка с ИИ

Пишу этот проект один вместе с Gemini 3.8 Flash )) Когда люди слышат «делает игру с нейросетью», они представляют кнопку «сделай шедевр». В реальности это был 29-дневный марафон по 11–12 часов в день. Сложнейшие сессии отладки длились по 40 шагов, где на каждом шаге в модель скармливался контекст по 150 000 – 180 000 токенов: монолит сервера на 5 300 строк, таблицы боевой математики, геодата и сырые дампы сетевых пакетов.

442 миллиона токенов только на серверную часть

суммарно весь проект (Three.js клиент и сервер) сожрал 1.265 МИЛЛИАРДА токенов!

Сколько это стоило в деньгах?

Показать полностью
5

Делаю MMORPG с помощью нейросетей: 2.5D-мир, террейн и восстание машин⁠⁠

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

Как собирается мир

  • Террейн острова: Сначала нейросеть сгенерировала общие очертания карты. Затем я загрузил её в Blender и вручную вылепил весь террейн с помощью скульптинга, формируя холмы, равнины и береговую зону под игровой процесс.

  • Смесь 3D и 2D: Окружение в игре трехмерное, а вот монстры и NPC — плоские 2D-спрайты. Это экономит огромное количество полигонов и снимает избыточную нагрузку на рендер в браузере, создавая ретро-стилистику.

  • Генерация контента: Весь контент делаю в нейросетях, tripo, gemine, nano banana и т.д

Что уже работает:

  1. Разметка карты: Остров поделен на сектора с мобами с 1 по 20 уровень.

  2. Инвентарь: Оружие можно брать в руки, менять и убирать обратно. Слоты под броню готовы, параллельно чинятся мелкие интерфейсные баги.

Делаю MMORPG с помощью нейросетей: 2.5D-мир, террейн и восстание машин

3. Скиллы: Внедрил первый паровой удар, сейчас довожу до ума применение умений по противникам.

  1. Базы данных: Полностью готовы таблицы по характеристикам экипировки, параметрам мобов, луту и вероятностям дропа.

  2. Боссы: Поставил первого крупного босса зоны и заложил механику скрытых энкаунтеров с редкими плюшками.

Делаю MMORPG с помощью нейросетей: 2.5D-мир, террейн и восстание машин

Пишите в комментариях, как вам идея мобов и визуальное решение с 2D-спрайтами в трехмерном мире.

Показать полностью 11
11

Делаю браузерную 3D MMORPG на Three.js: открытый мир без знания программирования⁠⁠

Сразу признаюсь честно: я не программист. От слова «совсем».

Но у меня есть дикое желание сделать игру своей мечты, и сегодня для этого больше не нужно 5 лет учиться в институте на кодера.

Вся эта разработка — это тандем: я + нейросеть.



Как мы вообще работаем?

Я выступаю в роли геймдизайнера, архитектора и самого въедливого заказчика:

  1. Я "придумываю" механики, баланс, сеттинг и говорю ИИ: «Хочу, чтобы мир был не фэнтези, а тяжелый стимпанк».

  2. Нейросеть генерирует код на Three.js и WebGL.

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

  4. Повторяем этот цикл сотни раз.

И самое удивительное — это работает!



Что это за игра?

Я с детства обожал старые хардкорные игры вроде Lineage 2. Чтобы поиграть в современные игры надо скачать 80–100 гигабайт клиента, поставить три лаунчера и ждать загрузки.

Я захотел сделать игру, которая запускается в один клик прямо во вкладке браузера. Кликнул ссылку — и через 3 секунды ты уже в 3D-мире, но это не точно ))).

Что мы уже сделали:

  • Сеттинг «Остров поющей стали»: мир людей, которые живут в мире вышедшей из под контроля техники, злобных утюгов и пчёломиксеров.

  • Классы: Силовая линия (Операторы, Механики-танки с котловыми щитами, Стрелки с пневматикой) и Контурная линия (Инженеры класс поддержки и суровые ДД).

  • Оптимизация: Стремимся к плюс минус стабильным фпс)



Где посмотреть на результат?

Я не строю иллюзий и не обещаю, что сделаю «убийцу Вова», если вообще хоть что-то сделаю )). Это чистый эксперимент: насколько далеко сегодня обычный человек без знания кода может зайти в создании ММО, используя только нейросети?

Такой промо сайт ): 👉 fatmax123.github.io/ostrov-stali

А на YouTube можно посмотреть, как постепенно собирается мир: 📺 Канал: @AindieGus

Интересно ваше честное мнение: Реально ли так дойти до полноценного релиза?

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества