Просмотр полной версии : [Вопрос] Индивидуальные таймеры
Здравствуйте. Не так давно, почитал несколько статей по оптимизации таймеров, т.е обновления каких-то систем.Самые адекватные варианты :
1) Создать таймер на 1 секунду, и в этой функции с помощью gettime() уже вызывать остальные системы и.т.д.
2) Создавать каждому игроку таймер при подключении к серверу и вызывать им функцию.В эту функцию весь код, относящийся к игроку. И "Убивать" таймер, когда игрок вышел с сервера.(Много таймеров, но они не нагружают процессор, но минус в том, что время таймера нужно указывать наименьшее значение, которое используется в системах)
Не могу протестировать самостоятельно на практике, т.к не имею онлайна.Если есть какие-то другие способы - опишите, если не трудно.
Спасибо.
Здравствуйте. Не так давно, почитал несколько статей по оптимизации таймеров, т.е обновления каких-то систем.Самые адекватные варианты :
1) Создать таймер на 1 секунду, и в этой функции с помощью gettime() уже вызывать остальные системы и.т.д.
2) Создавать каждому игроку таймер при подключении к серверу и вызывать им функцию.В эту функцию весь код, относящийся к игроку. И "Убивать" таймер, когда игрок вышел с сервера.(Много таймеров, но они не нагружают процессор, но минус в том, что время таймера нужно указывать наименьшее значение, которое используется в системах)
Не могу протестировать самостоятельно на практике, т.к не имею онлайна.Если есть какие-то другие способы - опишите, если не трудно.
Спасибо.
Я лично использую второй способ, считаю что лучше создать 1000 таймеров, которые обновляются в разное время, пусть даже 1 мс будет разницой, но они пойдут на обработку других систем/команд/информации. Чем одновременно обновлять 1000 игроков.
Я лично использую второй способ, считаю что лучше создать 1000 таймеров, которые обновляются в разное время, пусть даже 1 мс будет разницой, но они пойдут на обработку других систем/команд/информации. Чем одновременно обновлять 1000 игроков.
Большая ошибка.
Большая ошибка.
Ну тогда поправь меня, я представлял это себе так.
Большая ошибка.
А твоя какая позиция, относительно этого?
Внятного ответа так и не дали. UP
Daniel_Cortez
15.11.2015, 21:27
В принципе возможны такие ситуации, когда сервер обрабатывает всех игроков в одном таймере и не может в это время обновлять инфу о синхронизации игроков. Из-за этого могут возникнуть "скачки" в синхронизации.
Нормальным решением обычно будет переписать говнокод, чтобы снизить нагрузку, но в редких случаях (или в частых, зависит от лени скриптера/быдлокодера) это может не помочь - тогда есть смысл вместо цикла по всем игрокам устанавливать таймеры для обработки каждого игрока индивидуально. Но нет никакой гарантии, что таймеры распределятся достаточно ровно по времени, а не будут выполняться примерно в один момент. К тому же, добавится ещё немного нагрузки из-за планировщика таймеров.
В принципе возможны такие ситуации, когда сервер обрабатывает всех игроков в одном таймере и не может в это время обновлять инфу о синхронизации игроков. Из-за этого могут возникнуть "скачки" в синхронизации.
Нормальным решением обычно будет переписать говнокод, чтобы снизить нагрузку, но в редких случаях (или в частых, зависит от лени скриптера/быдлокодера) это может не помочь - тогда есть смысл вместо цикла по всем игрокам устанавливать таймеры для обработки каждого игрока индивидуально. Но нет никакой гарантии, что таймеры распределятся достаточно ровно по времени, а не будут выполняться примерно в один момент. К тому же, добавится ещё немного нагрузки из-за планировщика таймеров.
Если я правильно понял, тот и другой вариант имеет место быть. И особой разницы между ними нет, т.к нет абсолютного преимущества ни у кого.Тогда все зависит от самого кода и общей оптимизации мода!Спасибо
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot