Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

3 страниц V   1 2 »

Вывод FPS по количеству StartFrame

Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 7:08
Сообщение #1
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Решил сделать простой плагин для вывода FPS по количеству вызовов StartFrame. Просьба потестить, есть автовывод, включить можно раскомментировав 4 строку, а так вывод командой showfps.
Код такой
Код:
#include <amxmodx>
#include <fakemeta>

//#define AUTOPRINT

new g_nOldFrame;
new g_nFrames;
new Float:g_flNextCheckTime;
new g_nFPS;

public plugin_init() {
register_forward(FM_StartFrame, "StartFrame_Post", 1);
register_srvcmd("showfps", "SrvCmdShowFps");
}

public StartFrame_Post() {
g_nFrames++;

new Float:flTime = Float:engfunc(EngFunc_Time);

if (flTime > g_flNextCheckTime) {
g_nFPS = g_nFrames - g_nOldFrame;
g_nOldFrame = g_nFrames;
g_flNextCheckTime = flTime + 1.0;
#if defined AUTOPRINT
server_print("FPS %d", g_nFPS);
#endif
}
}

public SrvCmdShowFps() {
server_print("FPS %d", g_nFPS);
}


Отредактировал: [WPMG]PRoSToTeM@, - 5.1.2015, 7:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
Статус пользователя bapstop
сообщение 5.1.2015, 7:16
Сообщение #2


Стаж: 12 лет

Сообщений: 206
Благодарностей: 100
Полезность: 686

Скачет детка)
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 7:22
Сообщение #3
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

bapstop, высокий приоритет пробовал?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bondarenko78bk
сообщение 5.1.2015, 7:36
Сообщение #4
Стаж: 14 лет

Сообщений: 182
Благодарностей: 61
Полезность: 169

Прекрасно работает.
Прикрепленные файлы:
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bapstop
сообщение 5.1.2015, 8:11
Сообщение #5


Стаж: 12 лет

Сообщений: 206
Благодарностей: 100
Полезность: 686

С высоким приоритетом.
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 8:24
Сообщение #6
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

bapstop, тикрейт 1200?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bapstop
сообщение 5.1.2015, 8:34
Сообщение #7


Стаж: 12 лет

Сообщений: 206
Благодарностей: 100
Полезность: 686

[WPMG]PRoSToTeM@, да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 5.1.2015, 9:25
Сообщение #8


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Цитата([WPMG]PRoSToTeM@ @ 5.1.2015, 8:08) *

Решил сделать простой плагин для вывода FPS по количеству вызовов StartFrame. Просьба потестить, есть автовывод, включить можно раскомментировав 4 строку, а так вывод командой showfps.
Код такой
Код:
#include <amxmodx>
#include <fakemeta>

//#define AUTOPRINT

new g_nOldFrame;
new g_nFrames;
new Float:g_flNextCheckTime;
new g_nFPS;

public plugin_init() {
register_forward(FM_StartFrame, "StartFrame_Post", 1);
register_srvcmd("showfps", "SrvCmdShowFps");
}

public StartFrame_Post() {
g_nFrames++;

new Float:flTime = Float:engfunc(EngFunc_Time);

if (flTime > g_flNextCheckTime) {
g_nFPS = g_nFrames - g_nOldFrame;
g_nOldFrame = g_nFrames;
g_flNextCheckTime = flTime + 1.0;
#if defined AUTOPRINT
server_print("FPS %d", g_nFPS);
#endif
}
}

public SrvCmdShowFps() {
server_print("FPS %d", g_nFPS);
}

не лучше ли в отдельной функции считать чем вызывать в каждом фрейме условие и функцию впустую? set_task или через энтити сделать экономнее же, наверное, будет?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 9:31
Сообщение #9
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

mazdan, на перфоманс оно особо не влияет, да и это тестовый плагин чисто. А так да, можно в таске.

Вот таском
Код:
#include <amxmodx>
#include <fakemeta>

//#define AUTOPRINT

new g_nOldFrame;
new g_nFrames;
new g_nFPS;

public plugin_init() {
register_forward(FM_StartFrame, "StartFrame_Post", 1);
register_srvcmd("showfps", "SrvCmdShowFps");
set_task(1.0, "CalcFPS", _, _, _, "b");
}

public CalcFPS() {
g_nFPS = g_nFrames - g_nOldFrame;
g_nOldFrame = g_nFrames;
#if defined AUTOPRINT
server_print("FPS %d", g_nFPS);
#endif
}

public StartFrame_Post() {
g_nFrames++;
}

public SrvCmdShowFps() {
server_print("FPS %d", g_nFPS);
}


Отредактировал: [WPMG]PRoSToTeM@, - 5.1.2015, 9:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 5.1.2015, 9:34
Сообщение #10


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

я не отстану, зачем тогда fakemeta, есть же
public server_frame()
Еще меньше кода получится, хотя с ФМ можно организовать включение\выключение

я собственно просто интересуюсь, не придираюсь, вдруг там отличия\плюсы минусы, интересно же


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 9:38
Сообщение #11
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(mazdan @ 5.1.2015, 10:34) *
я не отстану, зачем тогда fakemeta, есть же
public server_frame()
Еще меньше кода получится, хотя с ФМ можно организовать включение\выключение

я собственно просто интересуюсь, не придираюсь, вдруг там отличия\плюсы минусы, интересно же

Ну тут уже дело вкуса engine/fakemeta.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 5.1.2015, 9:50
Сообщение #12


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Ну и вообще интересна более максимальная длина кадра, нежели сколько он их настреляет за секунду.
К примеру сервер может висеть 0.5 секунды, а за оставшееся время выдать 1000 фреймов и будет 1К ровный, но игрокам такой сервер вряд ли понравится. Вот полезные циферки были бы


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
csgamerok
сообщение 5.1.2015, 10:17
Сообщение #13
Стаж: 12 лет

Сообщений: 265
Благодарностей: 16
Полезность: 0

Цитата([WPMG]PRoSToTeM@ @ 5.1.2015, 12:31) *

mazdan, на перфоманс оно особо не влияет, да и это тестовый плагин чисто. А так да, можно в таске.

Вот таском
Код:
#include <amxmodx>
#include <fakemeta>

//#define AUTOPRINT

new g_nOldFrame;
new g_nFrames;
new g_nFPS;

public plugin_init() {
register_forward(FM_StartFrame, "StartFrame_Post", 1);
register_srvcmd("showfps", "SrvCmdShowFps");
set_task(1.0, "CalcFPS", _, _, _, "b");
}

public CalcFPS() {
g_nFPS = g_nFrames - g_nOldFrame;
g_nOldFrame = g_nFrames;
#if defined AUTOPRINT
server_print("FPS %d", g_nFPS);
#endif
}

public StartFrame_Post() {
g_nFrames++;
}

public SrvCmdShowFps() {
server_print("FPS %d", g_nFPS);
}


Вы говорите о высоких материях которые нам не понятны.
скажите проще -
Эта версия плагина лучше, чем та что в первом посте???
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 5.1.2015, 10:19
Сообщение #14


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

csgamerok, на мой взгляд чуть оптимальнее должна быть, чем вас не устраивает команда stats?


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
csgamerok
сообщение 5.1.2015, 12:04
Сообщение #15
Стаж: 12 лет

Сообщений: 265
Благодарностей: 16
Полезность: 0

Цитата(mazdan @ 5.1.2015, 14:19) *
csgamerok, на мой взгляд чуть оптимальнее должна быть, чем вас не устраивает команда stats?



Я так понял этот плагин выводит средний FPS а не мгновенный
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 12:11
Сообщение #16
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(csgamerok @ 5.1.2015, 13:04) *
Я так понял этот плагин выводит средний FPS а не мгновенный

Сколько прошло кадров за последнюю секунду, столько и выводит, потерь кадров не должно быть (т.е. выводит все).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 12:21
Сообщение #17
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Версия с set_task даёт какую-то погрешность как я заметил.

10-60 мс...

Отредактировал: [WPMG]PRoSToTeM@, - 5.1.2015, 12:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 5.1.2015, 12:25
Сообщение #18


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

[WPMG]PRoSToTeM@, по идее от FPS должно зависеть, set_task же тоже вроде каждый фрейм проверяется на "не пора ли вызвать", хотя там же есть какая-то мулька с точность. 0.01


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
csgamerok
сообщение 5.1.2015, 12:30
Сообщение #19
Стаж: 12 лет

Сообщений: 265
Благодарностей: 16
Полезность: 0

Цитата([WPMG]PRoSToTeM@ @ 5.1.2015, 16:21) *

Версия с set_task даёт какую-то погрешность как я заметил.

10-60 мс...


выходит первая версия лучше? а маздан говорит наоборот
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.1.2015, 12:34
Сообщение #20
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Вот новая версия, основана на методе из первого поста, изменил получение времени следующей проверки, добавил в вывод время с предыдущей проверки:
Код
Код:
#include <amxmodx>
#include <fakemeta>

#define AUTOPRINT

new g_nOldFrame;
new g_nFrames;
new Float:g_flNextCheckTime;
new g_nFPS;
new Float:g_flOldCheckTime;

public plugin_init() {
register_forward(FM_StartFrame, "StartFrame_Post", 1);
register_srvcmd("showfps", "SrvCmdShowFps");
g_flOldCheckTime = Float:engfunc(EngFunc_Time);
g_flNextCheckTime = Float:engfunc(EngFunc_Time) + 1.0;
}

public StartFrame_Post() {
g_nFrames++;

new Float:flTime = Float:engfunc(EngFunc_Time);

if (flTime >= g_flNextCheckTime) {
g_nFPS = g_nFrames - g_nOldFrame;
g_nOldFrame = g_nFrames;
g_flNextCheckTime += 1.0;
#if defined AUTOPRINT
server_print("FPS %d %f", g_nFPS, flTime - g_flOldCheckTime);
#endif
g_flOldCheckTime = flTime;
}
}

public SrvCmdShowFps() {
server_print("FPS %d", g_nFPS);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
3 страниц V   1 2 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: