SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 22/09/2017, 02:55 PM   #1
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Location: Brazil
Posts: 2,685
Reputation: 246
Default Discussão básica - Temporizadores

O SAMP atualmente suporta até 100 temporizadores simultâneos (foi o que li na board).
Supondo que um servidor tenha capacidade para 200 pessoas e este esteja cheio, e no servidor há um temporizador para cada jogador.

Já me recomendaram (e muito) o uso do temporizador por jogador, o que pra mim seria melhor, PORÉM esta capacidade de temporizadores simultâneos vai se esgotar e, provavelmente, algo (que eu não faço a mínima ideia) vai acontecer.

Me pergunto sobre estes servidores que possuem grande capacidade de jogadores e conseguem atingir esta capacidade (400~500 jogadores).

Nesse caso, o que pode ser feito? Partir para temporizadores globais + loop (como única alternativa)?
F1N4L is offline   Reply With Quote
Old 22/09/2017, 03:13 PM   #2
Kamper
Guest
 
Posts: n/a
Default Re: Discussão básica - Temporizadores

Eu não sei sobre esse limite, porém ao meu ver não faz sentido algum ter um timer para cada jogador. É um consumo totalmente desnecessário.

Por mais que você tenha um mode bacana e consiga atrair muitos players, como 500+, você é obrigado a optimizar seu mode, caso contrário não conseguirá escala-lo para essa quantia de jogos e, ao meu ver, um timer para cada jogador não é nada escalável e vai gerar problemas futuros em caso de grande quantidade de jogadores.
  Reply With Quote
Old 22/09/2017, 03:27 PM   #3
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Location: Brazil
Posts: 2,685
Reputation: 246
Default Re: Discussão básica - Temporizadores

Quote:
Originally Posted by Kamper View Post
Eu não sei sobre esse limite, porém ao meu ver não faz sentido algum ter um timer para cada jogador. É um consumo totalmente desnecessário.

Por mais que você tenha um mode bacana e consiga atrair muitos players, como 500+, você é obrigado a optimizar seu mode, caso contrário não conseguirá escala-lo para essa quantia de jogos e, ao meu ver, um timer para cada jogador não é nada escalável e vai gerar problemas futuros em caso de grande quantidade de jogadores.
Estou fazendo um GM (aos poucos) e, de momento, tenho 7 temporizadores para jogadores:
* 6 deles são destruídos logo após concluir suas tarefas, coisas rápidas.
* 1 deles não é destruído até o servidor ser desligado.

Neste último estou pensando em fazer isso: Fazê-lo global e usar foreach.
Também não sei ao certo do limite e na wiki não consta este limite, mesmo assim não vou arriscar.
F1N4L is offline   Reply With Quote
Old 22/09/2017, 03:32 PM   #4
RazorGuigo
Banned
 
Join Date: May 2016
Location: South is my Country
Posts: 1,139
Reputation: 104
Default Re: Discussão básica - Temporizadores

men, tem que fazer global, e com foreach mesmo, é bem mais otimizado!
melhor se criar os propios interator, para alguns players não entrarem no looping!

não tem um limite oficial, mas quando tem muitos timers, começa perder precisão deles!
RazorGuigo is offline   Reply With Quote
Old 22/09/2017, 03:38 PM   #5
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Location: Brazil
Posts: 2,685
Reputation: 246
Default Re: Discussão básica - Temporizadores

Quote:
Originally Posted by RazorGuigo View Post
men, tem que fazer global, e com foreach mesmo, é bem mais otimizado!
melhor se criar os propios interator, para alguns players não entrarem no looping!

não tem um limite oficial, mas quando tem muitos timers, começa perder precisão deles!
O SAMP já vem com o timer "nativamente bugado", então não duvido disso!
Quote:
começa perder precisão deles

No meu caso, para não entrar no loop o jogador precisaria:
* Estar desconectado
* Estar deslogado
* Estar AFK
(Respectivamente)
F1N4L is offline   Reply With Quote
Old 22/09/2017, 03:45 PM   #6
RazorGuigo
Banned
 
Join Date: May 2016
Location: South is my Country
Posts: 1,139
Reputation: 104
Default Re: Discussão básica - Temporizadores

Quote:
Originally Posted by F1N4L View Post
O SAMP já vem com o timer "nativamente bugado", então não duvido disso!



No meu caso, para não entrar no loop o jogador precisaria:
* Estar desconectado
* Estar deslogado
* Estar AFK
(Respectivamente)

Taca foreach, crie seus propios loopings no foreach já que tem condições proprias!
PHP Code:
//(camera é meu interator) 
//funcões utilizadas: 
static Iterator:Cameras<MAX_CAMERAS>;
Iter_Add(MoveCam_manualid);
Iter_Remove(MoveCam_manualid); 
RazorGuigo is offline   Reply With Quote
Old 22/09/2017, 05:22 PM   #7
CaioTJF
Gangsta
 
CaioTJF's Avatar
 
Join Date: Sep 2012
Location: Rio de Janeiro
Posts: 541
Reputation: 148
Default Re: Discussão básica - Temporizadores

Não existe esse limite (pelo menos de 100).
Uso um timer pra cada jogador e achei bem mais eficiente que usar timer global com foreach. E eu pesquisei na época sobre e vi opiniões que diziam que um timer pra cada jogador é melhor que um global.

Meu servidor já pegou 500 online com isso e não teve problema.

Imagine um loop de 500 rodando a cada segundo?
E não existe esse tal sobrecarregamento. Não vejo aumento de RAM nem CPU, pelo contrário.
__________________

IP: 35.196.228.74:2009 / Website: www.gtatorcidas.net



CaioTJF is offline   Reply With Quote
Old 22/09/2017, 05:36 PM   #8
C4rtm4n
Gangsta
 
C4rtm4n's Avatar
 
Join Date: Jul 2017
Location: South Park
Posts: 657
Reputation: 15
Default Re: Discussão básica - Temporizadores

Quote:
Originally Posted by CaioTJF View Post
Não existe esse limite (pelo menos de 100).
Uso um timer pra cada jogador e achei bem mais eficiente que usar timer global com foreach. E eu pesquisei na época sobre e vi opiniões que diziam que um timer pra cada jogador é melhor que um global.

Meu servidor já pegou 500 online com isso e não teve problema.

Imagine um loop de 500 rodando a cada segundo?
E não existe esse tal sobrecarregamento. Não vejo aumento de RAM nem CPU, pelo contrário.

Concordo,eu tbm uso timer para cada jogador e é mais eficiente do que global.
__________________
No Projects At the moment

C4rtm4n is offline   Reply With Quote
Old 22/09/2017, 06:24 PM   #9
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Location: Brazil
Posts: 2,685
Reputation: 246
Default Re: Discussão básica - Temporizadores

Quote:
Originally Posted by RazorGuigo View Post
Taca foreach, crie seus propios loopings no foreach já que tem condições proprias!
PHP Code:
//(camera é meu interator) 
//funcões utilizadas: 
static Iterator:Cameras<MAX_CAMERAS>;
Iter_Add(MoveCam_manualid);
Iter_Remove(MoveCam_manualid); 
Nunca fui a fundo com foreach! Sempre fiz simples loops...

Quote:
Originally Posted by CaioTJF View Post
Não existe esse limite (pelo menos de 100).
Uso um timer pra cada jogador e achei bem mais eficiente que usar timer global com foreach. E eu pesquisei na época sobre e vi opiniões que diziam que um timer pra cada jogador é melhor que um global.

Meu servidor já pegou 500 online com isso e não teve problema.

Imagine um loop de 500 rodando a cada segundo?
E não existe esse tal sobrecarregamento. Não vejo aumento de RAM nem CPU, pelo contrário.
Muito bom saber!!!
Eu estava indo agora mesmo fazer a alteração da callback do temporizador, até me deparar com sua resposta.
Vou levar mais em consideração o seu comentário, já que isso não é mera explicação, mas sim fatos.

Novamente sobre o limite: nada consta na wiki, então...
F1N4L is offline   Reply With Quote
Old 22/09/2017, 06:31 PM   #10
renatog
Huge Clucker
 
Join Date: Mar 2016
Posts: 328
Reputation: 48
Default Re: Discussão básica - Temporizadores

Você pode ter 1 mil, 10 mil, 20 mil timers etc. Esse limite é uma mentira.
Eu prefiro usar timer por jogador porque eles desempenham tarefas separadamente pra cada jogador, um global percorrendo todos eles faria todo o trabalho de uma vez, entende o que quero dizer? Há muita discussão sobre esse assunto (timer por player vs global timer) e no fim das contas o maior peso é o do seu código.
Também não adianta usar vários timers por player com o mesmo intervalo, você deve usar uma include que faz o gerenciamento de intervalos internamente como a y_timers, pois vários timers com o mesmo intervalo é a mesma coisa que um timer global.
renatog is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Off] Discussão RebeloX Português/Portuguese 14 22/04/2015 04:48 PM
[Ajuda] Duvida Basica mt basica mesmo jdsfenix Português/Portuguese 5 14/03/2013 06:42 AM
[Off] Discussão .FuneraL. Português/Portuguese 1 23/10/2012 03:33 PM
[Off] Discussão Ouro Português/Portuguese 45 23/09/2012 02:49 AM
[Ajuda] Temporizadores [NWD]Jim._.Carrey Português/Portuguese 11 04/08/2012 04:47 PM


All times are GMT. The time now is 01:08 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.