Способ убрать повторение карт
Дата: 26.01.2012 13:14:41
Цитата Вопрос: -Хотел бы спросить про сортировку карт: иногда играешь
несколько раз подряд на одной и той же карте. Будет ли тут что-то
меняться, карт ведь достаточно много, хотя, конечно, хотелось бы
больше :)?
Ответ: Тут, к сожалению, никаких подвижек не будет по техническим причинам. В бою участвует 30 игроков и каждому подобрать карту, которая у него не встречалась (или встречалась мало) практически невозможно.
Ответ: Тут, к сожалению, никаких подвижек не будет по техническим причинам. В бою участвует 30 игроков и каждому подобрать карту, которая у него не встречалась (или встречалась мало) практически невозможно.
ny3blpbku_co_gHa:
На самом деле это техническое ограничение достаточно просто обойти. Суть в том что бы на сервере иметь список всех карт отсортированный в случайном порядке, в течении какого-то настраиваемого времени "Т" (допустим 3 минуты, или время которое среднестатистический игрок проводит в бою) сервер запускает все бои с одной и той же картой. По истечении этого времени Т сервер переходит на следующую карту и начинает запускать бои с ней, и так далее пока список не исчерпается. По окончании списка делается новый список опять случайным образом перемешивается и продолжаем работать.
Если нам нужно увеличить частоту повторения какой-то карты (например для новых карт) просто вставляем её дважды в разные концы списка.
Так образом если мы имеем допустим 20 карт и интервал 3 минуты, то всреднем одна карта будет повторятся примерно раз в час.
Плюсы данного алгоритма:
1. Карты станут реже повторятся.
2. Так как при таком алгоритме на сервере не крутятся сразу все карты, а только несколько последних, плюс мы знаем порядок в котором новые карты будут входить в обработку, можно настроить различные алгоритмы кэширования и оптимизации для снижения потребления памяти и увеличения производительности.
Минус данного алгоритма:
1. Если игрок проведёт в бою меньше времени чем "Т" и сразу пойдёт в следующий бой, то он гарантировано попадёт на туже карту, впрочем при небольшом Т маловероятно что бы игрок попал на одну и туже карту подряд более 2 раз подряд.
Спасибо за внимание.
На самом деле это техническое ограничение достаточно просто обойти. Суть в том что бы на сервере иметь список всех карт отсортированный в случайном порядке, в течении какого-то настраиваемого времени "Т" (допустим 3 минуты, или время которое среднестатистический игрок проводит в бою) сервер запускает все бои с одной и той же картой. По истечении этого времени Т сервер переходит на следующую карту и начинает запускать бои с ней, и так далее пока список не исчерпается. По окончании списка делается новый список опять случайным образом перемешивается и продолжаем работать.
Если нам нужно увеличить частоту повторения какой-то карты (например для новых карт) просто вставляем её дважды в разные концы списка.
Так образом если мы имеем допустим 20 карт и интервал 3 минуты, то всреднем одна карта будет повторятся примерно раз в час.
Плюсы данного алгоритма:
1. Карты станут реже повторятся.
2. Так как при таком алгоритме на сервере не крутятся сразу все карты, а только несколько последних, плюс мы знаем порядок в котором новые карты будут входить в обработку, можно настроить различные алгоритмы кэширования и оптимизации для снижения потребления памяти и увеличения производительности.
Минус данного алгоритма:
1. Если игрок проведёт в бою меньше времени чем "Т" и сразу пойдёт в следующий бой, то он гарантировано попадёт на туже карту, впрочем при небольшом Т маловероятно что бы игрок попал на одну и туже карту подряд более 2 раз подряд.
Спасибо за внимание.
Способ убрать повторение карт