Jump to content
Pivot

Cronómetro PHP

Recommended Posts

Pivot

Olá pessoal,

Hoje venho eu com uma questão! :)

Não sei se já jogaram alguma vez, um jogo online do estilo de Tribos, Travian, Ogame, System Empires ou não, mas se não jogaram, inscrevam-se só para me ajudarem na questão :s

Todos esses jogos têm um sistema de "contagem decrescente" para uma determinada construção...

A minha dúvida é:

Esses jogos utilizam alguma forma em especial de controlar a contagem?

Imaginem no caso do tribos, vou construir um edifício qualquer, e este demora 1 hora e pouco, a partir do momento em que coloco a construção na "fila", esta, começa a ter uma contagem decrescente até que passe 1 hora e pouco.

Isto da contagem será em javascript, mas depois se eu adiantar uma hora, sendo em javascript, o contador também adianta 1 hora, mas quando se faz refresh, a construção ainda continua ativa.

Será que é algum tipo de campo na base de dados que dá para ter controlo sobre isso?

Ou seja, só aceitar que esse edifício esteja pronto a partir da hora xx:xx:xx?

Ou terá algum outro controlo?

A minha outra dúvida, também relacionada com isto dos jogos, é o facto de x em x tempo, estão a cair "recursos" que servem para construir esses edifícios...

Esses recursos, são adicionados com um valor base p/hora, por exemplo, por hora ganho 100 de Madeira...

E ele em uma hora, irá adicionar 100 de Madeira, só que é possível ver esse aumento da Madeira em tempo real e também é feito em javascript, porque se adiantar 7/8 (seja quantas horas forem) ele adiciona 700/800 de Madeira, mas depois fazendo o refresh, ele volta ao valor anterior...

E outra, se eu não tiver na conta, ele adiciona os recursos à mesma, então não será só javascript a funcionar...

Como é que é possível fazer estes sistemas de "contagem decrescente" do tempo, e o incremento de "recursos" mesmo estando offline?

Se alguém conseguir me ajudar nesta questão fico bastante agradecido, quero apenas fazer uns testes com essas funções, e tendo um exemplo "real" é mais fácil de ficarem a perceber.

Abraço,

Rafael.

Share this post


Link to post
Share on other sites
I-NOZex

para os edificios, no bd tera a notificação da duração total e da hora de conclusão, e ao renderizar a pagina, o js atraves de calculos obtem o tempo que falta

quanto as outras 2 questoes, penso que se devem basear em cron jobs...

mas para teres uma ideia real, basta sacares um script clone do TW, ou travian, existem montes na internet

tão em php puro, com recuso a smarty... acho que deve de te ajudar a entender melhor o seu mecanismo...

Edited by I-NOZex

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
nelsonr

Qualquer tipo de controlo de operações tem de ser feito do lado do servidor.

Assim, nesse tipo de jogos será como o I-NOZex disse. Quando começa a construção guarda a data/hora final. Em javascript pode mostrar quanto falta e decrementar com um contador (para evitar idas ao servidor), mas é sempre o servidor que valida.

  • Vote 1

Share this post


Link to post
Share on other sites
HappyHippyHippo

faz a extrapolação deste exemplo para o que necessitas :

https://www.portugal-a-programar.pt/topic/63059-registos-temporarios/

por outras palavras, para não teres um cron de 1 em 1 segundo (ou semelhante) ou uma aplicação em tempo real a actualizar a base de dados, as actualizações sao feitas do lado de servidor quando um pedido de informação é efectuado.

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Pivot

faz a extrapolação deste exemplo para o que necessitas : http://www.portugal-a-programar.pt/topic/63059-registos-temporarios/

por outras palavras, para não teres um cron de 1 em 1 segundo (ou semelhante) ou uma aplicação em tempo real a actualizar a base de dados, as actualizações sao feitas do lado de servidor quando um pedido de informação é efectuado.

Mas Hippo, no caso da incrementação de recursos aquilo mesmo estando offline incrementa, logo está sempre um processo a correr do lado do servidor?

E em relação a outros métodos para estudar os clones, por exemplo do tribos, é o twlan e está encriptado...

Share this post


Link to post
Share on other sites
HappyHippyHippo

Mas Hippo, no caso da incrementação de recursos aquilo mesmo estando offline incrementa, logo está sempre um processo a correr do lado do servidor?

não

se estás no estado XT e sabes que irão ocorrer as alterações no sistema nos tempos T+t1 e no tempo T+t2, basta calcular as alterações entre T e T+t1, aplicar ao estado X e voltar a fazer o mesmo para entre T+t1 + T+t2. Desta forma tens os valores do estado XT+t2

XT -> XT+t1 -> XT+t2

saber as alterações no estado entre dois tempos num sistema determinístico é directo.

-------------------------

se queres um exemplo mais "palpável", então aqui vai:

tens uma aldeia que no tempo T tem as seguintes definições:

- possui 100 de madeira

- tem uma produção base de 1 árvore por minuto

sabes que no tempo T+10 minutos, acaba de ser construído uma madeireira que tem um multiplicador na produção de madeira de 1.5x.

qual a madeira que o utilizador tem em T+20 minutos ?

XT = 100 madeira

XT + 10 minutos = 100 + 1 * 10 (minutos) = 110 madeira

XT+ 20 minutos = XT + 10 minutos + (1 * 1.5 * (20 (minutos) - 10 (minutos))) = 110 + 1 * 1.5 * 10 = 125 madeira

como vês, é fácil calcular o estado de um processo que parece ser em tempo real, que na realidade não é mais do que passos numa simulação num ambiente discreto.

logo, não é necessário nenhum cron job ou aplicação a correr por trás da cortina.

basta saber :

- o estado inicial do sistema

- os termos da evolução do estado

- tempos de alterações do sistema e suas actualizações


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Pivot

não

se estás no estado XT e sabes que irão ocorrer as alterações no sistema nos tempos T+t1 e no tempo T+t2, basta calcular as alterações entre T e T+t1, aplicar ao estado X e voltar a fazer o mesmo para entre T+t1 + T+t2. Desta forma tens os valores do estado XT+t2

XT -> XT+t1 -> XT+t2

saber as alterações no estado entre dois tempos num sistema determinístico é directo.

-------------------------

se queres um exemplo mais "palpável", então aqui vai:

tens uma aldeia que no tempo T tem as seguintes definições:

- possui 100 de madeira

- tem uma produção base de 1 árvore por minuto

sabes que no tempo T+10 minutos, acaba de ser construído uma madeireira que tem um multiplicador na produção de madeira de 1.5x.

qual a madeira que o utilizador tem em T+20 minutos ?

XT = 100 madeira

XT + 10 minutos = 100 + 1 * 10 (minutos) = 110 madeira

XT+ 20 minutos = XT + 10 minutos + (1 * 1.5 * (20 (minutos) - 10 (minutos))) = 110 + 1 * 1.5 * 10 = 125 madeira

como vês, é fácil calcular o estado de um processo que parece ser em tempo real, que na realidade não é mais do que passos numa simulação num ambiente discreto.

logo, não é necessário nenhum cron job ou aplicação a correr por trás da cortina.

basta saber :

- o estado inicial do sistema

- os termos da evolução do estado

- tempos de alterações do sistema e suas actualizações

Então assim, o sistema até é mais fácil do que parece...

Pois, são apenas fórmulas de cálculo de intervalos de tempo...

Obrigado Hippo!

E depois o javascript faz tudo :)

Muito obrigado mais uma vez!

Abraço,

Rafael.

Share this post


Link to post
Share on other sites
I-NOZex

Mas Hippo, no caso da incrementação de recursos aquilo mesmo estando offline incrementa, logo está sempre um processo a correr do lado do servidor?

E em relação a outros métodos para estudar os clones, por exemplo do tribos, é o twlan e está encriptado...

falo ctg em pm


B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
Pivot

Já agora, é possível alguma vez na vida descodificar código gerado pelo eAccelerator?

É que se for possível já posso estudar essa situação pelo código dos clones...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.