TGViewer
Из Мобайла в Инди. Антон Слащёв. Из Мобайла в Инди. Антон Слащёв. @antonslash · 707 subscribers
Post #30 575
Как работает нетворк в ко-оп играх

Раз уж вы накидали столько 🔥, то расскажу подробнее про сетевую логику и нюансы, которые я понял пока в этом разбирался.

Для меня в понимании нетворк логики были ключевыми вот эти три аспекта:

1. У каждого игрока - своя версия игры

Главное что надо понимать: нет какого-то "единого пространства" куда игроки виртуально подключаются, как условно матрица. У каждого запущена своя версия игры, и между ними бывают различия - иногда небольшие, иногда существенные. Один игрок может вообще не знать что лежит в инвентаре другого. Анимация или vfx у одного могут выглядеть не так как у другого. И тд.

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

2. У кого авторитет?

Кто решает было ли попадание, открылась ли дверь, хватает ли монет - клиент игрока или сервер? Обычно в большинстве вещей авторитет у сервера: он определяет что произошло и просто уведомляет об этом клиентов. Минус — небольшая задержка.

Поэтому там где нужна отзывчивость (например движение своего персонажа) используют клиентское предсказание: клиент сразу двигает персонажа локально не дожидаясь сервера, и параллельно шлёт действие на сервер. Сервер всё равно остаётся главным - если его версия отличается, клиент откатывается и подгоняется под серверное состояние.

В итоге типичный сценарий: клиент шлёт запрос ("могу открыть дверь?"), сервер проверяет условия (есть ли ключ, не заперта ли) и рассылает всем эвент "дверь открывается".

В исключительных случаях авторитет именно у клиента без предсказания (например, запустить определенную эмоцию персонажа или отправить в чат сообщение)

3. Что синхронизировать, а что нет

Если синкать вообще всё - получите огромный лаг и забьёте канал, тк у соединения есть ограниченная пропускная способность. Поэтому обычно разделяют:

• Логика - синхронизируется (дверь открылась, попадание случилось)
• Визуал - живет только локально у каждого (анимация открытия, vfx, партиклы)

Пример из наших прототипов - рэгдолл. Изначально я пробовал прототип где синхронизировалось положение всех костей всех персонажей. Очень быстро это стало неработающим лагающим ужасом :).

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

Также не синкается то что другим игрокам просто не нужно - например сколько у кого монет (если их нельзя украсть). Об этом знает только сам игрок и сервер.

P.S. Уважаемые разработчики, прошу с пониманием отнестись к упрощениям в тексте 🙂
  • 👍 14
  • 🔥 8
  • 😎 1
More from @antonslash
  1. Sep 27, 2026Меня уже подзадолбали посты в духе "Чатгпт Astra / Claude Opus 5 скопировали игру Х в один…
  2. Sep 19, 2026Гейм-дизайн документы не нужны Я не большой сторонник создания "Библии Дизайна" игры, где…
  3. Sep 17, 2026Что делает фаундер небольшой геймдев-студии? Кто-то думает, что это только крутые штуки: п…
  4. Sep 16, 2026Ищу Senior Game Designer / Level Designer на фулл-тайм на игру Agents 404 Нужен опытный гд…
  5. Sep 12, 2026Минутка рекомендаций! Хочу посоветовать канал Алексея Ефременкова, крутого инди-разработчи…
  6. Sep 8, 2026День из жизни наших НПЦ 😁 Изначально не хотелось делать из НПЦ простых болванчиков, котор…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →