TGViewer
GameDev: разработка игр GameDev: разработка игр @make_game · 7.63K subscribers
Post #1996 1.18K
Восемь игроков, полторы тысячи юнитов, модем 28,8 килобита и Pentium 90. Доклад с GDC 2001 про сетевой код Age of Empires — пятнадцать страниц о том, как это вообще заработало.

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

Именно тут начинается интересное. Расхождение проявляется не сразу: чуть иначе посчитанное положение оленя приводит к тому, что крестьянин через несколько минут идёт к другому кусту, добывает другое количество еды, и партии расходятся. Ловить это пришлось сверкой состояния мира, объектов, поиска пути, выбора целей и генератора случайных чисел.

Поверх UDP команда сделала свою обработку порядка сообщений, обнаружение потерь и повторную отправку.

Отдельно ценны замеры на живых игроках: задержка до 250 миллисекунд обычно не замечается, от 250 до 500 играбельна, выше 500 уже мешает. Эти цифры с тех пор никуда не делись.

@make_game
  • 🔥 11
  • ❤ 1
More from @make_game
  1. Sep 20, 2026Как собрать редактируемую 2D-карту в Unity с Marching Squares Туториал начинает с сетки яч…
  2. Sep 20, 2026Как пространственное разбиение ускоряет поиск соседей в игровом мире В стратегии реального…
  3. Sep 20, 2026Как построить кубическую сферу в Unity без скопления вершин у полюсов У обычной UV-сферы в…
  4. Sep 19, 2026Зачем игровому движку очередь событий Прямой вызов playSound() блокирует меню, пока аудиод…
  5. Sep 19, 2026Как разделить код теней в собственном конвейере рендеринга Unity Custom SRP 7.1.0 для Unit…
  6. Sep 19, 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 →