Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Оптимизация таймеров. (Пример: Догонялка)

Valera_Trefilov

Умник
Так , как оптимизация таймеров это уже заезженная тема но ничего годное я так и не увидел, да и не увижу думаю в пабе.
Этот урок, для тех кто любит думать головой а не другим местом.

Итак начнём:

Допустим у нас есть самый обычный таймер с циклами на игроков

PHP:
forward Update();

public OnGameModeInit()
{
	SetTimer("Update", 1000, 1);
	return 1;
}

public Update()
{
	for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
	{
	
	}
	return 1;
}
Но, к примеру ваш мод или мод заказчика или еще какой-то мод не важно, зависает и очень сильно то есть функция для игрока в цикле не успевает срабатывать за секунду.
И смотрите теперь мой выход из этого нелёгкого положения вашего или другого быдлокода в таймере:

PHP:
forward Update();

public OnGameModeInit()
{
	SetTimer("Update", 1000, 0);
	return 1;
}

public Update()
{
	for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
	{

	}
 	SetTimer("Update", 1000, 0);
	return 1;
}
Почти одинаковый код, но стоит заметить что в OnGameModeInit я в функции SetTimer на конце не поставил 1 как все ставят, а 0. То есть таймер не сработает повторно.
И в конце таймера я еще раз запустил таймер который не сработает повторно. Из этого наверное вы начали догонять смысл темы (Пример: Догонялка)

В чём фишка, а суть проста сначала мы запускаем таймер он выполняется, и пока он не выполниться полностью мы не начнем новую секунду.

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

Всем спасибо, с вами был Valera_Trefilov.
 
Сверху Снизу