К стати, я не то скопировал, имелись ввиду вычисления через VectorSize.
PHP код:
GetVehicleVelocity(vehicleid, X, Y, Z);
Speed = floatround(VectorSize(X, Y, Z) * 100.0);
Вид для печати
Ну так почему ты не учитываешь, что ради улучшения игры для игроков со слабым ПК (хотя вряд ли она улучшится) ты добавишь одну, по сути, лишнюю проверку, которая будет обрабатываться каждую итерацию таймера для каждого игрока, что, в перспективе, лишь затормозит обработку кода.
Да причём тут ты, если мы говорим про автора темы?
Любая проверка, существование которой не особо оправдано, может считаться лишней
И вы ради единичных случаев предлагаете что-то там сверять. Это ли не лишняя проверка?PHP код:
public OnGameModeInit()
{
new time = GetTickCount();
for(new i, j; i < 100_000; i++)
{
for(j = 0; j < 1_000; j++)
{}
}
printf("Цикл №1: %d", GetTickCount()-time);
time = GetTickCount();
for(new i, j; i < 100_000; i++)
{
for(j = 0; j < 1_000; j++)
{
if(time == 1000)
continue;
}
}
printf("Цикл №2: %d", GetTickCount()-time);
return 1;
}
На момент создания темы я не считал ту проверку лишней из-за мнимой мною нагрузки обновления TD, темболее при плагине JIT эти проверки практически ничего не значат, судя по тестам проведённых мною. До меня потом дошла ложность моих выводов об обновлении.. Я крепко тупонул проверяя это дело на локальном сервере на себе, скажем так..
К стати, да..
Эмм, так а что изменится? И в том, и в другом случае функция будет вызываться с одинаковым временем. Только в первом случае будет вызываться просто функция, а во втором - функция+проверка.
Второй вариант будет несущественно выигрывать лишь в случае, когда условие будет срабатывать (1 из 10 вызовов), а в ином случае будет прилично проигрывать, ибо:
Случай 1: Просто отправляем данные на обновление
Случай 2: Проверяем, совпадает ли условие и если не совпадает, отправляем данные.
Логично, что в первом случае серверу нужно выполнить на несколько действий меньше (не забываем, что для выполнения проверки серверу придётся обращаться к обеим переменным, что хранят текущую и предыдущую скорость, которые ещё и массивами будут => из-за кучи дополнительных генерируемых инструкций по обращению к ячейкам времени проверка условия будет занимать ещё дольше) и ради того, чтоб облегчить игру 1-му из 100-а игроков, ты жертвуешь процессорным временем...
Ну так то да, до конца копнул, но бывают такие случаи где срабатывание TD часто не нужно и там разжёвываемый вариант темы с условиями подошёл бы.
В таких ситуациях лучше сам таймер обновления убивать на время, пока обновлять текстдрав не нужно. Именно поэтому и следует все подобные вещи держать на отдельных индивидуальных таймерах: чтоб можно было в любой момент отключить таймер для одного игрока, но у второго он будет работать. В итоге будет на 10 строк больше, но в перспективе вы выиграете гораздо сильнее в плане процессорного времени
Переместите уже тему в корзину, ответ на вопрос "найден"..