Синхронизация данных
|
|
Q1wAse | Дата: Вторник, 24 Июня 2014, 07:25:03 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Есть уже такие кто использовал синхронизацию данных в мультиплеере ? Подскажите код.
|
|
|
|
SirNikolas | Дата: Вторник, 24 Июня 2014, 11:33:27 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Что подразумевается под "синхронизацией данных"? И с какой целью задается этот вопрос?
|
|
|
|
Q1wAse | Дата: Среда, 25 Июня 2014, 21:22:12 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата SirNikolas ( ) Что подразумевается под "синхронизацией данных"? И с какой целью задается этот вопрос? Я создал систему Статистики игроков, через Preload. В корневой файл с варом записывается текстовый файл txt в котором ведётся вся подробная информация о статистике его ника. И точно так же берётся из этого файла информация. Дак вот, в моей системе есть такая как бы фишка, если в мультиплеере есть игрок я, условия я задал сам, не раскрываюсь. То с моего компа берётся вся информация о никах игроков, если есть такие никик то в строку записываю всю информацию об данном игроке, если нет, то создаю для него новый файл с НУЛЕВОЙ статистикой. Это как работает система. А вот её проблема. Не у всех игроков на компе есть данные о статистике и не надо делать этого, чтобы каждый не мог подправить количество побед или поражений. И после загрузки информации об игроках, на выводе на экран статистики о каждом игроке на моём компе показывают нужную мне информацию, а на всех других НУЛЕВУЮ даже если у них уже и есть данная информация у меня на компе. Дак вот нужно синхронизировать данные чтобы у всех на экранах показывало тоже что и у меня. Я ясно проблем выразил ?
Сообщение отредактировал Q1wAse - Среда, 25 Июня 2014, 22:46:23 |
|
|
|
SirNikolas | Дата: Среда, 25 Июня 2014, 22:41:12 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Открой Data Manager и посмотри. Насколько я помню, сначала у нужного игрока (GetLocalPlayer) в кэш записываются необходимые данные, затем вызывается TriggerSyncStart, ждется какое-то время (10 секунд, например), TriggerSyncReady и из кэша считываются данные (обычным образом, для всех игроков).
|
|
|
|
Q1wAse | Дата: Среда, 25 Июня 2014, 22:44:53 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата SirNikolas ( ) Открой Data Manager и посмотри. Насколько я помню, сначала у нужного игрока (GetLocalPlayer) в кэш записываются необходимые данные, затем вызывается TriggerSyncStart, ждется какое-то время (10 секунд, например), TriggerSyncReady и из кэша считываются данные (обычным образом, для всех игроков). Data manager - это такое фуфло которое НЕ работает в мультиплеере. Я о нём читал, пример видел с xgm. Тестил её, ничего не работает, кроме save/ load систем. Синхронизации в data mangere вообще нет её. Формально её пишут кодом, а работоспособности она никакой не проявляет.
|
|
|
|
SirNikolas | Дата: Четверг, 26 Июня 2014, 11:12:34 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| [code=jass]if GetLocalPlayer() == p then call StoreInteger(SyncCache, "", "", SyncInt) endif call TriggerSyncStart() if GetLocalPlayer() == p then call SyncStoredInteger(SyncCache, "", "") endif call TriggerSleepAction(10.) call TriggerSyncReady() return GetStoredInteger(SyncCache, "", "")[/code] Вместо TriggerSleepAction можно таймер.
|
|
|
|
Q1wAse | Дата: Четверг, 26 Июня 2014, 11:32:28 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата SirNikolas ( ) Вместо TriggerSleepAction можно таймер Где-то слышал от умных кодеров что нельзя вроде таймер, только через wait.
поправка. [code=jass]function SyncStr takes player p string SyncStr returns string if GetLocalPlayer() == p then call StoreString(SyncCache, "", "", SyncStr) endif call TriggerSyncStart() if GetLocalPlayer() == p then call SyncStoredString(SyncCache, "", "") endif call TriggerSleepAction(10.) call TriggerSyncReady() return GetStoredString(SyncCache, "", "") endfunction[/code]
Сообщение отредактировал Q1wAse - Четверг, 26 Июня 2014, 11:33:06 |
|
|
|
SirNikolas | Дата: Четверг, 26 Июня 2014, 12:44:25 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата Q1wAse ( ) Где-то слышал от умных кодеров что нельзя вроде таймер, только через wait. Я не уверен даже, будет ли работать вариант с wait. Тут много тестировать надо, обязательно в мультиплеере, включая нестандартные условия, типа лагов и обрывов связи.
|
|
|
|
Q1wAse | Дата: Четверг, 26 Июня 2014, 12:55:39 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата SirNikolas ( ) Я не уверен даже, будет ли работать вариант с wait. Тут много тестировать надо, обязательно в мультиплеере, включая нестандартные условия, типа лагов и обрывов связи. Я тестил, не работает.В мультиплеере это не работает. Предлагаешь сделать через таймер ? И сколько ставить секунд на обработку ?
|
|
|
|
SirNikolas | Дата: Четверг, 26 Июня 2014, 17:47:21 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата SirNikolas ( ) Тут много тестировать надо
|
|
|
|
Q1wAse | Дата: Среда, 02 Июля 2014, 17:28:32 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| SirNikolas, было достаточно много тестов с Bibo. И эта система не выявила никакой работоспособности..
Добавлено (29 Июня 2014, 17:52:20) --------------------------------------------- Answers ?Добавлено (02 Июля 2014, 17:28:32) --------------------------------------------- UP
|
|
|
|
SirNikolas | Дата: Среда, 02 Июля 2014, 18:08:31 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата Q1wAse ( ) было достаточно много тестов с Bibo. Если вы протестировали все возможные комбинации (wait, таймер, различное время ожидания, попераставлять действия местами - черт его знает), и ничего не заработало, то в war3 невозможно сделать синхронизацию, и нативки вроде TriggerSyncStart бесполезны.
Сам понимаешь, насколько бредово это звучит?
|
|
|
|
Q1wAse | Дата: Среда, 02 Июля 2014, 18:37:34 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Я сюда обратился с надеждой на верный ответ, а не ещё один вариант для теста. Видим сего нет.
|
|
|
|
Bibo | Дата: Среда, 02 Июля 2014, 19:05:27 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Тестировал и с таймерами и вейтами, разбирал Data manager и т.д. Все чего добился, это десинк в некоторых случаях. Сделал вывод, что нативки типа TriggerSyncStart бесполезны. Так же не вижу ничего бредового в возможности существования бесполезных/недоделанных нативок.Добавлено (02 Июля 2014, 19:05:27) --------------------------------------------- Буду благодарен за опровержение.
|
|
|
|
SirNikolas | Дата: Среда, 02 Июля 2014, 21:57:41 | Сообщение # 15 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Меня смущает фраза "в некоторых случаях". Не было обнаружено никаких закономерностей, когда синхронизация работает, когда нет, а когда дает десинк?
|
|
|
|
Bibo | Дата: Среда, 02 Июля 2014, 22:43:10 | Сообщение # 16 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата SirNikolas ( ) когда синхронизация работает, когда нет Синхронизация не работала никогда. Десинк же мог происходит в отсутствии вейта, что по замыслу логично.
Сообщение отредактировал Bibo - Среда, 02 Июля 2014, 22:44:16 |
|
|
|
Q1wAse | Дата: Пятница, 11 Июля 2014, 16:30:11 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата Bibo ( ) Десинк же мог происходит в отсутствии вейта, что по замыслу логично. и при wait'e в 60 секунд был десинх. Время значение тоже не имеет.Добавлено (07 Июля 2014, 14:20:02) --------------------------------------------- up Добавлено (11 Июля 2014, 16:30:11) --------------------------------------------- UP
|
|
|
|
ZLOY5 | Дата: Пятница, 11 Июля 2014, 19:56:44 | Сообщение # 18 |
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 5
Блокировки:
| В прикрепленной карте реализован синк для интежера, для строки такой финт у меня не прошел например, и нативки TriggerSyncStart и TriggerSyncReady оказались бесполезными по моему мнению. Тестил в локальной сети. http://vk.com/doc186605737_314804575
|
|
|
|
Q1wAse | Дата: Пятница, 11 Июля 2014, 21:48:30 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| дата регистрации очень подозрительна. И доступ к ссылке имеет только автор.
Сообщение отредактировал Q1wAse - Пятница, 11 Июля 2014, 21:48:53 |
|
|
|
ZLOY5 | Дата: Пятница, 11 Июля 2014, 21:52:23 | Сообщение # 20 |
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 5
Блокировки:
| сори, не знал что только владельцу http://dropmefiles.com/DJPOx
|
|
|
|
Q1wAse | Дата: Четверг, 17 Июля 2014, 19:21:23 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| up
|
|
|
|
ZLOY5 | Дата: Пятница, 18 Июля 2014, 15:50:46 | Сообщение # 22 |
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 5
Блокировки:
| так что нужно
|
|
|
|
Q1wAse | Дата: Пятница, 18 Июля 2014, 21:54:25 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата ZLOY5 ( ) так что нужно Сделать числа на всех компах с переменной name15[n] Одинаковыми, как у того у кого брались данные(Хост).
|
|
|
|
ZLOY5 | Дата: Суббота, 19 Июля 2014, 09:58:19 | Сообщение # 24 |
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 5
Блокировки:
| есть же пример синхронизации что мешает его немного переделать для синка сразу нескольких чисел?
|
|
|
|
Q1wAse | Дата: Суббота, 19 Июля 2014, 10:33:27 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата ZLOY5 ( ) есть же пример синхронизации что мешает его немного переделать для синка сразу нескольких чисел? Твой пример ? Ты издеваешься ?
|
|
|
|