Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Timer para jogo Android!

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Dez 24, 2017 2:19 am

Seguinte, no meu jogo Android terá um sistema de vidas que terá um tempo de 5 minutos regressivos para acrescentar +1 vida
Porém, eu quero que o relógio fique rodando com o jogo fechado, por exemplo, quando eu sair do jogo tava faltando 3 minutos para acrescentar +1 vida,
dai quando eu sai do jogo o tempo foi salvo num arquivo, dai por exemplo entrei no jogo 2 minutos depois e era pra estar em 1 minuto pra acrescentar vida

COMO FAZ ESSE SISTEMA???

>>Minha tentativa<<
             >>>

CREATE:

if file_exists("time.txt")
{
_TimeToAdd=2 //minuto
_tts=59 //segundo
_ttm=60 //milesimo

_ff=file_text_open_read("time.txt")
L_a=file_text_read_real(_ff)
L_s=file_text_read_real(_ff)
L_m=file_text_read_real(_ff)
file_text_close(_ff)

TimeToAdd=_TimeToAdd-L_a //minuto
tts=_tts-L_s //segundo
ttm=_ttm-L_m //milesimo
}
else
{
TimeToAdd=2 //minuto
tts=59 //segundo
ttm=60 //milesimo
}

lives=3


STEP:

ttm-=1
if ttm<=0 {tts-=1 ttm=60}//60 fps
if tts<=0 {TimeToAdd-=1 tts=59}

if TimeToAdd<=0 {lives+=1 TimeToAdd=2} //Tempo para add vidas


GAME END:

//Ao sair do jogo

TT_a=TimeToAdd
TT_s=tts
TT_m=ttm

_ff=file_text_open_write("time.txt")
file_text_write_real(_ff,TT_a)
file_text_write_real(_ff,TT_s)
file_text_write_real(_ff,TT_m)
file_text_close(_ff)


DRAW:

draw_text(10,10,"Min: "+string(TimeToAdd))
draw_text(10,30,"Seg: "+string(tts))
draw_text(10,50,"Mil: "+string(ttm))
draw_text(10,90,"Lives: "+string(lives))


EXEMPLO DO ARQUIVO SALVO:

 2 57 13

(minuto, segundo, milésimo)

AJUDA POR FAVOR SE PUDER FAZER O CÓDIGO QUE FUNCIONE!!

Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por AdrianoPpaula » Qui Jan 04, 2018 9:23 pm

Nossa eu ia criar um tópico justamente falando sobre esse assunto. Todas as minhas tentativas também foram em vão. Queria fazer algum sistema que o usuário não faça a trapaça de mudar o tempo pelo celular =/

No meu caso eu queria fazer um simples botão que daria uma quantidade de gold para o jogador. porem esse botão aparece uma vez por dia.
Imagem

Avatar do usuário
guimaraf
Colaborador
Colaborador
Reações: 0
Mensagens: 456
Localização: Contagem-MG

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por guimaraf » Sex Jan 05, 2018 4:17 pm

Eu não programo em game maker.
A um tempo eu fiz um sistema que calculava a quantidade de dia entre 2 datas, o que precisa será semelhante, porém terá que calcular os minutos.

Vamos supor que seu máximo de vida seria 5 pontos, então a cada 15 minutos renova a vida toda, com o jogo rodando acredito que já tenha feito.
Com o jogo fechado, acredito que não seja possível, então precisa trabalhar com save em arquivo externo "de preferência criptografado".

Para o jogo fechado você precisa primeiro registrar a data e hora "de preferência local" do jogador jogando, esta informação será usada como comparação quando abrir o jogo.
Então basicamente precisa fazer alguns calculos.

Comparar se as datas são diferentes
Se dataAtual # dataRegistrada, quer dizer que é um dia diferente, então pode colocar vida cheia.
Se a data for igual, então será comparado a hora e minuto.

Transforme as horas em minutos, que fica melhor para fazer os cálculos.
12:30 seria igual a 750 minutos do dia.

Vamos supor que a hora registrada seja esta, então o valor registrado poderia ser apenas 750, você vai jogar novamente, vamos supor que seja 15:15 "915", então vai pegar o valor do minuto atual e subtrair o minuto registrado.
915 - 750 = 150

O restante fica fácil de fazer, de acordo com os valores de Energia que tem no jogo.

Caso queira uma camada de segurança, vai precisar usar um banco de dados com validação de login por exemplo, para dificultar um pouco quebrar o código.

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Jan 07, 2018 2:01 am

Sua dica é interessante, então eu tbm poderia somar todos os valores (segundos + minutos + horas + dias) e salvar num arquivo e após entrar no jogo verificar se a soma total no arquivo seria menor que a do horário somado atual...

Avatar do usuário
guimaraf
Colaborador
Colaborador
Reações: 0
Mensagens: 456
Localização: Contagem-MG

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por guimaraf » Dom Jan 07, 2018 3:08 am

Foxy Of Jungle escreveu:Sua dica é interessante, então eu tbm poderia somar todos os valores (segundos + minutos + horas + dias) e salvar num arquivo e após entrar no jogo verificar se a soma total no arquivo seria menor que a do horário somado atual...
Poderia utilizar da mesma forma, claro usando os devidos cálculos.
O valor do arquivo de save, será menor se for salvo no mesmo dia.
Como disse acima, se dia for diferente, então renove a sua vida para completo, se o dia for igual, compare o valor dos minutos atual - minuto registrado.

Acabei esquecendo de falar que para o sistema ficar mais robusto, pegue a hora usando uma chamada externa, como por exemplo hora de um servidor para a hora local, assim assim, a pessoa mesmo mudando a hora do equipamento que está rodando o jogo, não vai mudar os bônus do jogo.

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Jan 07, 2018 7:58 pm

Você conhece algum site que mostra apenas a data no html?
assim poderia usar:

Código: Selecionar todos

http_get(url)
será que funciona neste site ?
http://www.horariodebrasilia.org/

Avatar do usuário
guimaraf
Colaborador
Colaborador
Reações: 0
Mensagens: 456
Localização: Contagem-MG

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por guimaraf » Ter Jan 09, 2018 1:56 am

Se quiser capturar de dentro do elemento.
Imagem

Se sabe filtrar dados de um Json, pode usar desta API, eu uso ela para coletar dados atmosféricos em um projeto que tenho em Python.
https://api.hgbrasil.com/weather/?forma ... d=BRXX0033

Porém existem diversas espalhadas, para o meu uso, funciona muito bem.
Um abraço

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por Foxy Of Jungle » Ter Jan 09, 2018 2:54 am

Muito Obrigado ajudou bastante, só resta eu fazer o código do Timer.

Avatar do usuário
guimaraf
Colaborador
Colaborador
Reações: 0
Mensagens: 456
Localização: Contagem-MG

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por guimaraf » Ter Jan 09, 2018 4:10 pm

Foxy Of Jungle escreveu:Muito Obrigado ajudou bastante, só resta eu fazer o código do Timer.
Agora é 
Imagem

Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por AdrianoPpaula » Sáb Jul 14, 2018 2:49 am

Fala pessoal alguma novidade sobre esse assunto?

Eu ia criar um tópico novo sobre isso mas esse aqui é exatamente a minha dúvida.

Então, seguinte eu estava querendo criar um sistema de prêmios de itens diário para o meu projeto como existe em vários jogos mobile.
Mas então descobri que criar esse sistema é um pouco complicado e não achei nada que possa me ajudar. Tentei criar um arquivo PHP e uplodiar ele em um dropbox pra assim puxar a informação com http_get mas não consigo.

Então a melhor opção e a mais fácil aparentemente é pegar uma hora de um site como vocês estão falando...mas como que eu faço isso? Como eu pego a div certa do site e coloco isso um uma string do game maker pra assim fazer a comparação da data e hora do site com a data e hora do usuario


Alguém perguntou algo parecido no fórum da yoyo e um usuário falou algo parecido mais até agora não consegui fazer nada sobre isso

https://forum.yoyogames.com/index.php?t ... ver.26924/
Imagem

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por None » Sáb Jul 14, 2018 7:19 am

https://docs.yoyogames.com/source/dadio ... index.html

É o mesmo conceito de idle game, você vê a informação do sistema do usuário e compara com informações que você salva sobre a data e hora em que ele saiu do jogo.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Avatar do usuário
AdrianoPpaula
Membro
Membro
Reações: 0
Mensagens: 59
Localização: Quissamã RJ

Contato:

Re: AJUDA URGENTE! Timer para jogo Android!

Mensagem por AdrianoPpaula » Sáb Jul 14, 2018 1:40 pm

@None Isso mesmo essa é a ideia mesmo o problema é que esses jogos provavelmente tem um servidor com a hora real. Porque se ele fechar o jogo e trocar a hora ou o dia quando o jogo for aberto e tiver feito a comparação ele vai burlar o sistema facilmente.

Na verdade até mesmo com hora de servidor tem como burlar mais é difícil e a maioria das pessoas não vão saber fazer isso porem trocar hora do celular todos sabem fazer isso e por isso essa feature é tão importante. Já procurei em tudo quanto é lugar, achei algumas coisas sobre PHP que é a linguagem que o html usa pra poder pegar esse tipo de dados de servidor, e o GM é até compatível com isso. E tem também a opção que o cara no fórum gringo falou que seria pegar a hora de algum site com o http_get() e assim adicionar a parte da hora em uma string.
Imagem

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Timer para jogo Android!

Mensagem por All-x » Sáb Jul 14, 2018 3:56 pm

É bem simples na verdade, você só quer a hora, certo?

Cria um servidor free aqui:

https://www.000webhost.com/free-website-sign-up

Imagem

Seu site será "NOME QUE ESCOLHEU" + .000webhostapp.com Depois clique em Gerenciar site:

Imagem

Depois clique em Gerenciador de Arquivos:

Imagem

Acesse o Gerenciador de arquivos:

Imagem

Crie um arquivo chamado horas.php:

Imagem

O gerenciador já vem com editor de códigos PHP, logo basta clicar duas vezes para abrir e editar o arquivo:

Imagem

Cole o seguinte código (Referência: PHP Date e Timezones):

[code]<?php

date_default_timezone_set("America/Sao_Paulo");
echo date("H:i:s");

?>[/code]

Clique em SAVE e pode fechar o gerenciador. O formato será de 24 horas (Ex: 15:12:05), com horas, minutos e segundos. para personalizar só acessar os links de referência. Agora pode ser acessado pelo link abaixo (No meu caso):

https://afalexfc426.000webhostapp.com/horas.php

Agora no GameMaker: Studio basta fazer uma requisição no Create:

[code]// Fazendo requisição HTTP
get_horas = http_get("https://afalexfc426.000webhostapp.com/horas.php");

// Vai guardar o resultado da nossa requisição
resultado = "Aguarde...";[/code]

E no evento Asyncchronous -> HTTP verificar quando o resultado vai chegar:

[code]/// Checando se o nosso "get_horas" teve resultado
if ds_map_find_value(async_load, "id") == get_horas
{
   // Deu certo, grava as horas em 'resultado'
   if ds_map_find_value(async_load, "status") == 0
   {
      resultado = ds_map_find_value(async_load, "result");
   }
   // Vessh deu ruim! 'status' tem valor menor que 0, veja referência
   else
   {
       // HTTP tem vários códigos de resposta, procure na referência
       resultado = "Erro";
   }
}[/code]

Imagem

Simples. Agora tu tem as horas salvas na variável resultado, pode fazer o que quiser com ela. Fiz um exemplo mais detalhado de uso:

Exemplo - Pegando infos do Servidor PHP
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Timer para jogo Android!

Mensagem por None » Sáb Jul 14, 2018 6:39 pm

Eu amo idle games/click games, mas sou totalmente contra pay to Win games, por isso que sempre que eu acho um jogo do tipo que usa a hora de servidor eu nem me desgasto jogando.


PS muito bom o tutorial Alex!
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Jul 15, 2018 11:46 am

Alex FC escreveu:É bem simples na verdade, você só quer a hora, certo?

Cria um servidor free aqui:

https://www.000webhost.com/free-website-sign-up


Imagem


Seu site será "NOME QUE ESCOLHEU" + .000webhostapp.com Depois clique em Gerenciar site:


Imagem


Depois clique em Gerenciador de Arquivos:


Imagem


Acesse o Gerenciador de arquivos:


Imagem


Crie um arquivo chamado horas.php:


Imagem


O gerenciador já vem com editor de códigos PHP, logo basta clicar duas vezes para abrir e editar o arquivo:


Imagem


Cole o seguinte código (Referência: PHP Date e Timezones):

Código: Selecionar todos

<?php

date_default_timezone_set("America/Sao_Paulo");
echo date("H:i:s");

?>


Clique em SAVE e pode fechar o gerenciador. O formato será de 24 horas (Ex: 15:12:05), com horas, minutos e segundos. para personalizar só acessar os links de referência. Agora pode ser acessado pelo link abaixo (No meu caso):

https://afalexfc426.000webhostapp.com/horas.php

Agora no GameMaker: Studio basta fazer uma requisição no Create:

Código: Selecionar todos

// Fazendo requisição HTTP
get_horas = http_get("https://afalexfc426.000webhostapp.com/horas.php");

// Vai guardar o resultado da nossa requisição
resultado = "Aguarde...";


E no evento Asyncchronous -> HTTP verificar quando o resultado vai chegar:

Código: Selecionar todos

/// Checando se o nosso "get_horas" teve resultado
if ds_map_find_value(async_load, "id") == get_horas
{
    // Deu certo, grava as horas em 'resultado'
    if ds_map_find_value(async_load, "status") == 0
    {
       resultado = ds_map_find_value(async_load, "result");
    }
    // Vessh deu ruim! 'status' tem valor menor que 0, veja referência
    else
    {
        // HTTP tem vários códigos de resposta, procure na referência
        resultado = "Erro";
    }
}

Imagem


Simples. Agora tu tem as horas salvas na variável resultado, pode fazer o que quiser com ela. Fiz um exemplo mais detalhado de uso:

Exemplo - Pegando infos do Servidor PHP

Ei Alex!, aproveitando o seu tutorial, este site de hospedagem (000webhost) suporta download de arquivos diretos? eu usaria ele para fazer um sistema de atualizações para meu jogo, EX: Launcher do League of Legends ou World of Tanks.

E então poderia usar o http_get_file(), ele é capaz ?


E outra dúvida, e se o usuário não tiver conexão com Internet? não receberá prêmio diário ?

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Jul 15, 2018 12:22 pm

Acabei de testar e funcionou perfeitamente! eu fiz upload de um arquivo .zip para meu servidor e ele baixou com o http_get_file(), finalmente poderei fazer um sistema de atualizações automáticas!

Quem quiser testar:

Código: Selecionar todos

http_get_file("https://cube3dentertainment.000webhostapp.com/3DLightShader.zip","UpdatePack.zip")

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Timer para jogo Android!

Mensagem por All-x » Dom Jul 15, 2018 2:16 pm

Foxy Of Jungle escreveu:Acabei de testar e funcionou perfeitamente! eu fiz upload de um arquivo .zip para meu servidor e ele baixou com o http_get_file(), finalmente poderei fazer um sistema de atualizações automáticas!

Quem quiser testar:

Código: Selecionar todos

http_get_file("https://cube3dentertainment.000webhostapp.com/3DLightShader.zip","UpdatePack.zip")
É tudo bem simples, só ter paciência e ler a documentação.

Sobre o usuário não ter conexão de internet, você tem duas fontes para pegar as horas e a data: o sistemae o servidor. Se escolher o sistema o usuário pode alterar a data e a hora. Então sim, o mais lógico para o prêmio diário seria ter obrigatoriamente uma conexão com a internet.

FLWS!
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Timer para jogo Android!

Mensagem por Foxy Of Jungle » Dom Jul 15, 2018 4:52 pm

Verdade Alex, é tipo o Subway Surfers ou o Beach Buggy Racing!, caso não tenha internet posso colocar alguma mensagem como "Você precisa estar conectado para obter os prêmios"
Não precisa fechar o tópico para caso alguém ter alguma dúvida em relação ao mesmo assunto.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes