Пинг FPS - PullRequest
       41

Пинг FPS

2 голосов
/ 07 февраля 2012

Я сейчас работаю над игрой в жанре FPS (шутер от первого лица), хочу показать пинг игрока в игре (задержка соединения).Но какой лучший способ сделать это?Сначала я подумал использовать GetTickCount64, но Get Tick Count не является точным:

"Разрешение функции GetTickCount64 ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 миллисекунд до 16 миллисекунд.. "

У меня была идея использовать time.h, чтобы посмотреть, сколько отсчетов тиков за 1 секунду.Но я думаю, что это не лучшее решение.

Может кто-нибудь помочь мне с этим?

Редактировать: я делаю игру для Windows.(Спасибо, что расслабились, и Лефтерис за то, что упомянул, что я забыл записать это)

Ответы [ 2 ]

6 голосов
/ 07 февраля 2012

Если вы ищете решение для Windows, попробуйте QueryPerformanceCounter .

Следующий код был размещен там BobJoy1. Вам придется разделить разницу между двумя вызовами на частоту процессора следующим образом:

LARGE_INTEGER start;
::QueryPerformanceCounter(&start);
// do something
LARGE_INTEGER stop;
::QueryPerformanceCounter(&stop);

LARGE_INTEGER proc_freq;
::QueryPerformanceFrequency(&proc_freq);
double frequency = proc_freq.QuadPart;
double seconds_elapsed = ((stop.QuadPart - start.QuadPart) / frequency);
0 голосов
/ 07 февраля 2012

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

...