Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов

Вопрос

Обратил внимание на какой-то неведомый глюк с этим вызовом

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater

 

Эти вызовы выполняются подряд с увеличением time

что бы сообщения появлялись не сразу

а через паузы между собой

первое через секунду, следующее через 2 и тп, те вызов идет в цикле с увеличением time

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Send_Chat_Message, (time * 1000), false, Player, Message);

Вобщем когда никого на сервере нет - все работает норм

Набежало игроков

Вроде пока все норм

Через какое-то время когда игроки там набегают и тп начинается

Send_Chat_Message выполняется после вызова не через time * 1000
А хрен знает как - может через указанное время, а может через 30 секунд, а  может через 60 секунд
Полная хрень какая-то

Что я делаю не так?

Может заменить CALL_CATEGORY_GAMEPLAY на CALL_CATEGORY_SYSTEM ?

 

Пока не проверял

 

Есть идеи?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Изменил  CALL_CATEGORY_GAMEPLAY на CALL_CATEGORY_SYSTEM 

 

Вроде работает, но надо часов 12 подождать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


  • 0

Вобщем хрень с calllater продолжается

На нагруженных серверах, а иногда и на не очень, функци  вызванные с задержкой по прежнему выполняются как придется

 

Может есть средство посмотреть очередь в категории, уверен, что там в очереди мешает....

Ну или глюк движка

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Я думаю не глюк движка, а просадки фпс влияют, вызываемые обработками других комманд сервера. Тобишь та же минута, обозначенная скрипту, из-за нагрузок может растянуться на более блинные промежутки, тогда как по системе работы сервера это та же минута и будет.

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new возможно

Блин

И никакого sleep нет

Пичалька (((

Какжеж ожидание организовать....

 

Походу придется мутить через OnUpdate серверный....

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А можно как то использовать не только время, но и вычисление текущих серверных фпс? тоесть, если серверные фпс больше определённого значения (при котором секунда равна секунде) тогда использовать время, если серверные фпс меньше этого значения, то либо использовать понижающий множитель времени, либо переходить на просчёт по серверному фпс. имхо и чушь небось, сильно тапками то не кидайтесь)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

ishkur Кстати, об этом я как-то не подумал. Интересная идея. Займусь на досуге )))

 

Есть такие нативные функции

GetGame().GetFps() и GetFPS()

 

над будет посмотреть что к чему

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

GetGame().GetFps() текущий фпс сервера

GetFPS() - это только для клиента

 

после старта на сервере FPS = 0.07

Через 12 часов работы

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
12 минуты назад, BorizzK сказал:

GetGame().GetFps() текущий фпс сервера

GetFPS() - это только для клиента

 

после старта на сервере FPS = 0.07

Через 12 часов работы

 

что у тебя на сервере происходит такое? это ж адовое что-то

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new 

0.07 постоянно с первого момента запуска

кстати так и не меняется

 

А что не так-то?

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK 0.07 фпс при запуске сервера и в процессе его работы? ну как бы это нихрена не нормально, повод задуматься.
Для примера, если запустить сервер с отображением фпс в консоли сервера, то там за 1-2 к переваливает фпс при старте, но никак не 0.07

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new Ну ты добавь скажем в функцию которая каждую 1 минуту выполняется

Print("[Diag server]: Fps: " + GetGame().GetFps().ToString() + " : TickTime: " + GetGame().GetTickTime().ToString());

И сам все увидишь

Это не те fps похоже

 

P.S.Впрочем .ToString() не обязательно

print сам преобразует float и int в строку

 

Консоль сервера кажет - около 7000 - 7500 fps

Минимум 6800

Максимум 8300

 

Когда появляются игроки

около 3000

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить на вопрос...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...