We, 2017-07-26, 13:46
Diablo: The Hell
Приветствую Вас Новичок | RSS
Главная | Online Persist Storage Binary Difference Synchronizer Server - Diablo: The Hell - forums | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Mordor 
Diablo: The Hell - forums » Форум The Hell » The Hell 2 » Online Persist Storage Binary Difference Synchronizer Server (Или как мы будем играть в TheHell2 по сети)
Online Persist Storage Binary Difference Synchronizer Server
illusion Date: Fr, 2009-02-27, 13:31 | Message # 1
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
На данный момент The Hell Team (это в основном я гы гы) разрабатывает технологию бинарной синхронизации перманентных объектных хранилищ.
Именно через сервер работающий как центральное перманентное хранилище миров будет осуществляться синхронизация локальных копий миров у пользователей. У каждого пользователя сервера будет свой баланс на сервере, с которого будут сниматься деньги за исходящий с сервера трафик данных синхронизации. Тариф будет определён за мегобайт трафика ближе к делу. Но думаю в районе 10 коп. за Мб, может и больше.
Один мир буде занимать где то от 8 Мб.
 
Новичок Date: Tu, 2009-03-24, 16:11 | Message # 2
Группа: Гость





[quote=illusion]технологию бинарной синхронизации перманентных объектных хранилищ. [/quote]
Простите, а что это значит. Дело в том, что я работаю начальником в гугл и мне нравятся новые, креативные, инициатывные подходы к решению таких интересных проблем.
Не могли бы Вы послать резюме к нам, в гугл?
Спасибо.

Добавлено (2009-03-24, 16:11)
---------------------------------------------
[quote=illusion]Один мир буде занимать где то от 8 Мб.[/quote]

Мне кажется, что 8Мб для мира это много. Я сижу на диалапе. Можно сделать мир размеров хотя бы в 512Кб (если писать на ассемблере, то можно сильно съэкономить на размерах)?

 
illusion Date: We, 2009-03-25, 15:07 | Message # 3
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Новичок, ну во первых я только что ушел на новую работу, а во вторых у меня резюме довольно простое:
умею программировать.

Этого на самом деле достаточно.

По поводу технологии: я буду её постепенно развивать, идея такая примерно (доверяю знать, потому как продать некому:)
всё программные объекты персистные ( находятся в персистном адресном пространстве, это может быть SQL сервер, файл, и т.д.)
персистные указатели это шаблонный класс.
Есть некий механизм который кэширует персистные объекты в обычном адресном пространстве компьютера, таким образом что это вобщем то незаметно.
Далее при необходимости репликации состояний объектов между их изменениями используется следующий механизм:
на уровне кэша персистных объектов в начале выполнения некоего метода объекта сохраняется его бинарное состояние, при выходе(потока управления) из метода делается бинарный diff, и изменения отправляются клиентам, по элементарному протоколу бинарной синхронизации состояний.
Это вобщем. На практике конечно вылазиет много подводных камней. Но преимущество идеи в быстрой интеграции сетевой поддержки в игры например. (сихронизировать надо только в части последствий непредсказуемых действий пользователей, в остальной части где системы живут детерминированно синхронизацию делать не нужно)
Пишите если интересно...

 
Ырод Date: We, 2009-03-25, 15:28 | Message # 4
Группа: Гость





Сколько трафика в секунду? Если 2 чела в "кадре" мочат толпу монстров, например.
 
illusion Date: We, 2009-03-25, 15:42 | Message # 5
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
ну байт 100-200 в сек. максимум
 
illusion Date: We, 2009-03-25, 15:43 | Message # 6
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Ырод, шалишь тигранчик...
 
Ырод Date: We, 2009-03-25, 15:58 | Message # 7
Группа: Гость





Я те посещаемость накручиваю, и заметь, бесплатно! )) А то те че-то окромя директоров гугля нихто не пишеть.
 
StEAlTh_ASsAsIN Date: We, 2009-03-25, 16:28 | Message # 8
Chain Mail
Группа: Череп
Посты: 283
Репутация: 3
Замечания: 0%
Статус: Offline
Quote
А то те че-то окромя директоров гугля нихто не пишеть.

=DDD


Так устроена эта игра.
 
Новичок Date: Th, 2009-03-26, 12:13 | Message # 9
Группа: Гость





А Вы хотите отправлять изменения при любом изменении состояния объекта или делать снимки изменений через определенные промежутки времени?

>>в начале выполнения некоего метода объекта сохраняется его бинарное состояние, при выходе(потока управления) из метода делается бинарный diff
А если не сам объект изменяет своё состояние, а сторонний объект изменяет состояние объекта непосредственно через экземплярные поля и свойства? Или Вы хотите закрыть все публичные поля и менять состояние объекта только через методы. Тогда необходимо перед выполнением метода дернуть некий метод типа EnterModify и перед выходом дернуть LeaveModify? Или планируется некий механизм прозрачных иньекций подобных методов, т.е. объект не будет знать ничего о синхронизациях?

>>изменения отправляются клиентам
Через общий сервер, т.е. раздача централизована или нужны соединения p2p?
Еще интересно какой протокол в основе TCP или UDP, как обрабатывать разрывы соединений, могут ли при этом теряться данные, т.е. такая ситуация: игрок убил монстра, но данные об этом еще не ушли на сервер, выключается свет у игрока, после загрузки игры снова придется убивать монстра? Это может стать проблемой в сетевой игре.

 
illusion Date: Th, 2009-03-26, 15:53 | Message # 10
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Новичок, вообще технология относится к синхронизации персистных хранилищ, там сихронизация может проходит и по подписке и по запросу и рассылка по факту...как угодно короче. А использование в игре это уже дело десятое...
Меня например интересует больше как хранить в персистном хранилище объекты классы которых используют наследование, вот это интересно и я думаю решаемо.

Синхронизация будет идти незаметно для объекта на уровне менеджера памяти занимаемой объектами.

Я говорю про достаточно простые игры где есть детерминированность мира.

Но для запуска поддержки сети в игре надо сделать следующее:
1. сделать все объекты персистными и что бы они использовали персистные указатели (для того что бы в памяти занимаемой объектами не было данных с указателями на локальную память компьютера, т.к. на другой машине эти данные станут некорректными)
2. в начале метода который может поменять мир и это изменение непредсказуемо необходимо будет вставить всего одну строчку, типа BinDiffSynchnize();

Если требуется синхронизация мира по частям то тут немного по сложнее, может и придётся вводить специальные методы...

Примерно так:

Цикл работы на клиенте:
1. отсылаем на сервер события от мышки и клавы за предыдущий цикл
2. принимаем от сервера непредсказуемые изменения мира вместе с CRC мира
(если CRC не сходится то идёт запрос за бинарное дерево CRC, для определения страницы памяти на которой не сходится CRC
и далее идёт запрос страницы целиком)
3. принимаем разрешение от сервера на переход к следующему циклу
4. делаем update локальной копии мира
5. переходим к 1

Цикл работы на сервере:
1. принимаем непредсказуемые события от пользователей
2. сохраняем состояние мира (не обязательно весь мир сохранять, можно и с иерархией работать)
3. обрабатываем непредсказуемые события от пользователей
4. делаем бинарный дифф. и рассылку клиентам изменений мира в результате непредсказуемого поведения пользователей
5. отправляем разрешение на Update мира
6. делаем Update мира на сервере
7. переход к 1

И какую же вы там игрушку пишете в Гугле если не секрет???
smile

Когда сделаю поддержку в TheHell 2 детали прояснятся.
На данный момент уже кое как работают персистные объекты и персистные указатели.
Наработки по сети тоже есть, надо только прикручивать.
Бинарный синхронизатор это очень простая вещь.
Протокол тоже простой.

 
Ырод Date: Th, 2009-03-26, 16:14 | Message # 11
Группа: Гость





А рейтрейсинг появится сразу в первой версии, или чуть позже?.. То есть, мне уже пора апгрейдить комп, или можно подождать пару месяцев?
 
illusion Date: Th, 2009-03-26, 16:21 | Message # 12
Chain Mail
Группа: TH team
Посты: 162
Репутация: 16
Замечания: 0%
Статус: Offline
Ырод, твой комп вообще несгодитцо!
 
Ырод Date: Th, 2009-03-26, 16:22 | Message # 13
Группа: Гость





Кстати, может лучше сначала доделать воксельный движок?
 
Diablo: The Hell - forums » Форум The Hell » The Hell 2 » Online Persist Storage Binary Difference Synchronizer Server (Или как мы будем играть в TheHell2 по сети)
Страница 1 из 11
Поиск:

Copyright MyCorp © 2017 Хостинг от uCoz