Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Pivot

Cronómetro PHP

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Editado por I-NOZex

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

beat2revolution.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

  • Voto 1

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.