Возможно ли?
Ситуация:
В игре 5 игроков.
Красный хост.
У 4 игроков в папке варкрафта имеется идентичный прелоад файл (некая дата).
У синего этого файла нет.
Возможно ли передать данные от красного игрока синему, и только синему игроку с синхронизацией!? (Чтобы остальные игроки подгрузили данные из своих прелоад источников)

Принятый ответ

когда игроки подгрузили данные из прелоада и синхронизировали их то устанавливаем им флаг загрузил
а потом просто сохраняем всё что надо у тех у кого нету флага
подробнее в статье про прелоад
данные надо синхронить со всеми иначе десинк
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
8 лет назад
0
awesomesk1ll, данные синхронятся и поток стопится на время отправки/приёма
0
21
8 лет назад
0
nvc123:
awesomesk1ll, данные синхронятся и поток стопится на время отправки/приёма
управление висит и после того как данные уже подгрузились и синхронизовались..
0
28
8 лет назад
0
awesomesk1ll, хз
чёто гдето не так делаешь значит
0
21
8 лет назад
Отредактирован awesomesk1ll
0
Такая вот синхронизация потока была
loop
exitwhen (Condition)
call TriggerSyncStart()
call TriggerSyncReady()
endloop
такие замеры
Переделали на
loop
exitwhen (Condition)
call TriggerSyncStart()
call TriggerSyncReady()
call TriggerSleepAction(0.1)
endloop
Лага после синхры теперь нету. Не совсем понятно чем это чревато правда.
Загруженные файлы
0
28
8 лет назад
0
awesomesk1ll, 0,1 мало
ставь хотяб 1
0
32
8 лет назад
0
ты вейт секунды 2 порставь, после if и сравни данные у хоста и другого остальных игроков, если хоть у одного данные в кеше иные, снова вейт 2 сек и так до тех пор пока у всех все ровно будет...
0
21
8 лет назад
Отредактирован awesomesk1ll
0
nvc123:
awesomesk1ll, 0,1 мало
ставь хотяб 1
Почему?
У нас обьёмы данных думаю на порядок больше чем у тебя на 10 игроков синхронишь. Мы целые уровни передаём между игроками, хотим вообще целые карты передавать (коллекции уровней) в идеале.
этот проект xgm.guru/p/ice/alpha
ну сейчас вроде вообще норм работает).. скоро 0.2 версию выпустим думаю
0
28
8 лет назад
0
прелоадить за раз можно не более 4096+1024*n байт
где n количество не играющих игроков
0
21
8 лет назад
0
nvc123:
прелоадить за раз можно не более 4096+1024*n байт
где n количество не играющих игроков
Почему это?)
Можно же больше
0
28
8 лет назад
0
awesomesk1ll, внимательно читай
тут несколько раз прелоадится
или спроси у того кто писал код
0
21
8 лет назад
Отредактирован awesomesk1ll
0
nvc123:
awesomesk1ll, внимательно читай
тут несколько раз прелоадится
или спроси у того кто писал код
Вот файл прелоада yadi.sk/d/z1OAoLeTkySv6
Вот код
function ESD takes nothing returns nothing
    set StrData[StrCount] = GetPlayerName(Player(15))
    if (StrData[StrCount] == " ") then
        set StrData[StrCount] = null
    endif
    set StrCount = StrCount + 1
endfunction

private method loadDataFromPlayer takes string name, integer dataCount, player p returns nothing
    local integer i
    set StrCount = 0
    call SetPlayerName(Player(15), " ") // Пробел считается за пустую строку
    if (GetLocalPlayer() == p) then
        call Preloader(name) // Загрузить файл от игрока
    endif
    call SetPlayerName(Player(15), " ")
    set i = StrCount
    loop
        exitwhen (i >= dataCount)
        call ExecuteFunc("ESD") // У всех игроков должно быть одинаковое количество вызовов функции ESD
        set i = i + 1
    endloop
    call SetPlayerName(Player(15), null) // Вернуть имя по умолчанию
endmethod
В одном файле 24~кб данных. Сам файл прелоада 44кб.
Вроде я внимательно всё читал.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.