Pivot Posted October 25, 2013 at 11:33 AM Report #530553 Posted October 25, 2013 at 11:33 AM 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.
I-NOZex Posted October 25, 2013 at 11:41 AM Report #530555 Posted October 25, 2013 at 11:41 AM (edited) 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 October 25, 2013 at 11:42 AM by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
nelsonr Posted October 25, 2013 at 11:50 AM Report #530560 Posted October 25, 2013 at 11:50 AM 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. 1 Report
HappyHippyHippo Posted October 25, 2013 at 11:57 AM Report #530562 Posted October 25, 2013 at 11:57 AM 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. 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Pivot Posted October 25, 2013 at 12:45 PM Author Report #530572 Posted October 25, 2013 at 12:45 PM 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...
HappyHippyHippo Posted October 25, 2013 at 01:31 PM Report #530578 Posted October 25, 2013 at 01:31 PM 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 Portugol Plus
Pivot Posted October 25, 2013 at 02:06 PM Author Report #530585 Posted October 25, 2013 at 02:06 PM 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.
I-NOZex Posted October 25, 2013 at 02:09 PM Report #530586 Posted October 25, 2013 at 02:09 PM 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
Pivot Posted October 25, 2013 at 02:37 PM Author Report #530590 Posted October 25, 2013 at 02:37 PM 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...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now