Новичок, вообще технология относится к синхронизации персистных хранилищ, там сихронизация может проходит и по подписке и по запросу и рассылка по факту...как угодно короче. А использование в игре это уже дело десятое...
Меня например интересует больше как хранить в персистном хранилище объекты классы которых используют наследование, вот это интересно и я думаю решаемо. Синхронизация будет идти незаметно для объекта на уровне менеджера памяти занимаемой объектами.
Я говорю про достаточно простые игры где есть детерминированность мира.
Но для запуска поддержки сети в игре надо сделать следующее:
1. сделать все объекты персистными и что бы они использовали персистные указатели (для того что бы в памяти занимаемой объектами не было данных с указателями на локальную память компьютера, т.к. на другой машине эти данные станут некорректными)
2. в начале метода который может поменять мир и это изменение непредсказуемо необходимо будет вставить всего одну строчку, типа BinDiffSynchnize();
Если требуется синхронизация мира по частям то тут немного по сложнее, может и придётся вводить специальные методы...
Примерно так:
Цикл работы на клиенте:
1. отсылаем на сервер события от мышки и клавы за предыдущий цикл
2. принимаем от сервера непредсказуемые изменения мира вместе с CRC мира
(если CRC не сходится то идёт запрос за бинарное дерево CRC, для определения страницы памяти на которой не сходится CRC
и далее идёт запрос страницы целиком)
3. принимаем разрешение от сервера на переход к следующему циклу
4. делаем update локальной копии мира
5. переходим к 1
Цикл работы на сервере:
1. принимаем непредсказуемые события от пользователей
2. сохраняем состояние мира (не обязательно весь мир сохранять, можно и с иерархией работать)
3. обрабатываем непредсказуемые события от пользователей
4. делаем бинарный дифф. и рассылку клиентам изменений мира в результате непредсказуемого поведения пользователей
5. отправляем разрешение на Update мира
6. делаем Update мира на сервере
7. переход к 1
И какую же вы там игрушку пишете в Гугле если не секрет???
Когда сделаю поддержку в TheHell 2 детали прояснятся.
На данный момент уже кое как работают персистные объекты и персистные указатели.
Наработки по сети тоже есть, надо только прикручивать.
Бинарный синхронизатор это очень простая вещь.
Протокол тоже простой.