Сейчас 16:44:31 Вторник, 23 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Синхронизация данных (С чем её едят?)
Синхронизация данных
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 ()
есть же пример синхронизации
что мешает его немного переделать для синка сразу нескольких чисел?

Твой пример ? Ты издеваешься ?


 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Синхронизация данных (С чем её едят?)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz