Как оптимизировать поведение тысяч предметов в игре одновременно: опыт создателей Satisfactory

Транспортные ленты против сетевого кода.

Как оптимизировать поведение тысяч предметов в игре одновременно: опыт создателей Satisfactory
8686

создатели применили метод «сериализации delta»Я понимаю, что в оригинале статьи так и написано, "delta serialization"; но, на мой взгляд, всё-таки было бы правильнее перевести как "дельта-компрессия" или "дельта-кодирование"
https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BB%D1%8C%D1%82%D0%B0-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

13

По поводу ссылки с википедии. Чтобы отражались хорошо, просто поставь пробел в конце адресной строки и удали. Тогда вместо таких символов просто кириллица будет.
https://ru.wikipedia.org/wiki/Дельта-кодирование

7

Первый — это полная синхронизация карты между всеми игровыми клиентами. В таком случае на компьютерах игроков бы воспроизводилась локальная симуляция. Так поведение всех объектов было бы на 100% предсказуемым — а вся информация бы обновлялась только тогда, когда происходят непредвиденные явления (например, действия игрока).Тут мне кажется не хватает небольшого пояснения:
Синхронизация всех клиентов с сервером происходит на старте игры/при подключении клиента к серверу. Сервер пересылает клиенту актуальное состояние мира, после чего клиент может симулировать мир локально, без необходимости синхронизации с сервером несколько раз в секунду кроме случаев, когда игроки производят какие-то действия (но и даже так, можно было бы передавать только действия игроков, без необходимости передавать полный стейт игрового мира).
Но такой подход будет работать только при 100% детерминированной модели игрового мира, т.е. когда при одинаковых входных условиях мы всегда будем наблюдать абсолютно одинаковое развитие событий. К сожалению 100% детерминированности для сложной игры не добиться (по разным причинам, вплоть до разницы в вычислениях с плавающей запятой на разных архитектурах процессоров), о чём, собственно и идёт речь далее в статье.

4

Спасибо за замечание, поправил :)