К этому мы приходим для быстрых игр, а для стратегий вроде AoE2 глубина отмотки действий игрока вполне может достигать двух-трех секунд или ставиться в очередь вообще, чтобы применяться сервером авторитарно. Но схемы там работают теже
да, человеческое восприятие очень важно, вы готовы смотреть на эту полоску загруки минуту, но уходите с сайта через 15 секунд если он не отвечает. Состояние называется "иллюзия прогресса" или "порог Доэрти"
Это называется пространственно-временная дискретизацию состояния. Мир не обязан синхронизироваться с точностью до каждого сантиметра и каждого кадра и вместо cell(123.45, 123.45) остается позиция cell(123, 123), а клиент уже может локально дорисовывать движение внутри клетки. Просто гранулярность сама по себе не решает проблему задержка, а только снижает количество информации, которое нада синхронизировать.
А вот вторая идея интереснее и называется она SLOD(simulation)/AILOD/MTLAI(Multi tiered level), т.е чем дальше от игрока некий нпс, тем меньший квант времени ему выделяется для работы, и чтобы сделать всю работу ему нужно упрощать свою логику. Это целое отдельное направление в MMO играх и одного решения там нету, есть несколько областей, которые боле-менее справляются со своими задачами: Simulation LOD -> уменьшение точности симуляции Spatial Partitioning / AOI -> разбиение мира на области Coarse-Grained Simulation -> агрегирование объектов Hierarchical Simulation -> несколько уровней представления мира
У нас количество открываемых qa багов выросло в полтора раза, это я вижу. А вот скорость закрытия оных поднялась не особо, толи наши тестировщики стали лучше работать, толи прогеры стали клепать фигню
Я разве сказал что Drepper не прав? Только он объясняет, как работает память и у него самый близкий к практике пример емнип блочное перемножение матриц, это однородные данные, которые целиком помещаются в память и которые надо правильно обойти. В игре задача очень часто обратная, данных много, они не влезают, они разнородные, и решать как обойти бесполезно, и приходится решать что положить рядом, упаковать или вообще выкинуть. Я об этом и это у Drepperа нет, и не потому что я набиваю цену, вот из недавнего проекта, это упакованное состояние мира
его у вас 380Мб данных, которые надо обновлять раз в несколько кадров, иначе начинает ломаться симуляция... их реально 380Мб, упаковано дальше некуда, есть пара свободных битов на обьект... а больше нету. Пожать вы их не можете, вынести что-то тоже не можете, остается всякими трюками удерживать в кеше хоть какуют-то важную часть
Дык не получится, многие воспринимают желание поговорить с заказчиком через голову начальства или уточнить технические детали как личное оскорбление и отбирание куска хлеба, а разговор через начальника довольно быстро приобретает характер сломанного телефона и повышает уровень недовольства у обеих сторон. Так что да, в каком то смысле не позволяет религия... корпоративная вера в непогрешимость клиента
Хехе, мы тоже вот отпилили один раз поддержку Google Stadia, а потом оказалось что пропали облачные сейвы в стиме. На вопрос "а какого рожна у нас стим юзал гугловый механизм?" оказалось что они очень похожи по апи и сделали, как сделали. Пришлось ревертнуть почившую уже лет как пять стадию, чтобы не писать заново поддержку для стима. Чудны дела твои, неизвестный рефактормэн
эм... есть такая категория вновь приходящих, выкидыватели называются. Это просто люди такие, и тут ничего уже не поделать, но варианты есть %) "учить, лечить, мочить" (с)
Да, пожалуй, так действительно понятнее и по сути мы используем номер локации как ключ, за один проход раскладывая элементы по порядку, получая что-то очень близкое к counting sort.
К этому мы приходим для быстрых игр, а для стратегий вроде AoE2 глубина отмотки действий игрока вполне может достигать двух-трех секунд или ставиться в очередь вообще, чтобы применяться сервером авторитарно. Но схемы там работают теже
я бы даже больше сказал, умудряются включить wireframe режим без читов
да, человеческое восприятие очень важно, вы готовы смотреть на эту полоску загруки минуту, но уходите с сайта через 15 секунд если он не отвечает. Состояние называется "иллюзия прогресса" или "порог Доэрти"
определенно, умудряются читить даже на анимациях
Это называется пространственно-временная дискретизацию состояния. Мир не обязан синхронизироваться с точностью до каждого сантиметра и каждого кадра и вместо cell(123.45, 123.45) остается позиция cell(123, 123), а клиент уже может локально дорисовывать движение внутри клетки. Просто гранулярность сама по себе не решает проблему задержка, а только снижает количество информации, которое нада синхронизировать.
А вот вторая идея интереснее и называется она SLOD(simulation)/AILOD/MTLAI(Multi tiered level), т.е чем дальше от игрока некий нпс, тем меньший квант времени ему выделяется для работы, и чтобы сделать всю работу ему нужно упрощать свою логику. Это целое отдельное направление в MMO играх и одного решения там нету, есть несколько областей, которые боле-менее справляются со своими задачами:
Simulation LOD -> уменьшение точности симуляции
Spatial Partitioning / AOI -> разбиение мира на области
Coarse-Grained Simulation -> агрегирование объектов
Hierarchical Simulation -> несколько уровней представления мира
Ничего не поменялось, но памяти теперь использует 14ГБ вместо 12, где кнопка "верните все обратно"?
Об этом будет следующая часть, выложу в четверг
Нуштош, значит для старичков еще будет работа некоторое время
У нас количество открываемых qa багов выросло в полтора раза, это я вижу. А вот скорость закрытия оных поднялась не особо, толи наши тестировщики стали лучше работать, толи прогеры стали клепать фигню
Я разве сказал что Drepper не прав? Только он объясняет, как работает память и у него самый близкий к практике пример емнип блочное перемножение матриц, это однородные данные, которые целиком помещаются в память и которые надо правильно обойти. В игре задача очень часто обратная, данных много, они не влезают, они разнородные, и решать как обойти бесполезно, и приходится решать что положить рядом, упаковать или вообще выкинуть. Я об этом и это у Drepperа нет, и не потому что я набиваю цену, вот из недавнего проекта, это упакованное состояние мира
его у вас 380Мб данных, которые надо обновлять раз в несколько кадров, иначе начинает ломаться симуляция... их реально 380Мб, упаковано дальше некуда, есть пара свободных битов на обьект... а больше нету. Пожать вы их не можете, вынести что-то тоже не можете, остается всякими трюками удерживать в кеше хоть какуют-то важную часть
Дык не получится, многие воспринимают желание поговорить с заказчиком через голову начальства или уточнить технические детали как личное оскорбление и отбирание куска хлеба, а разговор через начальника довольно быстро приобретает характер сломанного телефона и повышает уровень недовольства у обеих сторон. Так что да, в каком то смысле не позволяет религия... корпоративная вера в непогрешимость клиента
вы байку про 2Мб за ночь до релиза знаете?
Ну с Андреем мы некоторое время работали в одной студии, и общение утекло в тг.
это уже рефактор, под него тесты надо менять, а тесты еще чтото потянут... просто вернули 120титонный вентилятор на место :)
Хехе, мы тоже вот отпилили один раз поддержку Google Stadia, а потом оказалось что пропали облачные сейвы в стиме. На вопрос "а какого рожна у нас стим юзал гугловый механизм?" оказалось что они очень похожи по апи и сделали, как сделали. Пришлось ревертнуть почившую уже лет как пять стадию, чтобы не писать заново поддержку для стима. Чудны дела твои, неизвестный рефактормэн
Как игра будет в стиме, обязательно расскажу. Добро дали
эм... есть такая категория вновь приходящих, выкидыватели называются. Это просто люди такие, и тут ничего уже не поделать, но варианты есть %) "учить, лечить, мочить" (с)
Так ты слона не продашь... (с)
Да, пожалуй, так действительно понятнее и по сути мы используем номер локации как ключ, за один проход раскладывая элементы по порядку, получая что-то очень близкое к counting sort.
Да, есть такое. Похоже на еще одиг вид граблей