Conectar-se
Quem está conectado
29 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 28 Visitantes

Evandro Braga

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota A
Notas recebidas : C+A+A+B+A
Data de inscrição : 10/09/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 10

Prêmios
   : 2
   : 2
   : 0
Ver perfil do usuáriohttp://williammustaffa.blogspot.com

[pedido]engine de controle temporal

em Dom 23 Jan 2011, 23:47
alguem poderia interpretar essa descrição aqui sobre controle temporal ?
Spoiler:
Bom, eu conheço uma maneira de fazer isso, é um pouco confuso, mas funciona perfeitamente.

É um princípio com arrays, eu pensei até em fazer uma extensão baseada nisso, pode servir como 'reverse' ou como 'replay', porém abandonei a idéia, seu funcionamento é assim, você grava uma quantidade de ações em uma array, cada 'número' da array é um 'frame', nesse caso varia de objeto para objeto, de jogo pra jogo e por ai vai.

Por exemplo, supondo que seu jogo seja bem simples, só tem movimentação pelas setas (varia apenas a posição x e y) e você queira fazer um controle de tempo com isso, como é basicamente 2 variáveis, você usa apenas:

a+=1
rev_x[a]=x
rev_y[a]=y

Claro que isso condiciona o funcionamento, se ficar muito tempo gravando, ocupará muito espaço na memória e consequentemente ocasionará um 'lag', a solução é 'limpar' os primeiros frames, de modo que somente as últimas, por exemplo, 200 posições fiquem armazenadas, é muito simples fazer isso, basta só descartar as 200 primeiras quando chegar em 400 e começar a regravar do início: a=1.

Para reproduzir, tem 2 possibilidades: 'Voltar no tempo', que resumidamente seria fazer o próprio objeto (ou um fake dele) seguir os frames de trás para frente, ou de modo 'Replay', onde você antes de dar o 'Play' reseta a variável a em 1 e segue crescentemente até o limite de frames gravados (nesse caso não pode descartar frames).

O que eu disse na prática é assim:

a-=1
x=rev_x[a]
y=rev_y[a]

e no caso de um simples replay:

a+=1
x=rev_x[a]
y=rev_y[a]

Note que: Já deve existir os dados gravados na arrays.

Tudo no evento Step, tanto pra gravar, quanto pra ler, a velocidade do jogo em frames por segundo (também conhecido como FPS) indicará a 'resolução' do replay e a quantidade de detalhes que será armazenado, quanto maior o FPS, maior a resolução e assim por diante.

Se você não entender eu posso fazer um sistema bem simples funcionando no mesmo princípio do exemplo citado aqui, e você estuda da melhor forma que encontrar.

Boa sorte com seu projeto.
tópico de origem:
http://gmbr.forumeiros.com/t13203-resolvidocontrole-temporal?highlight=controle+emporal
vlw^^
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [pedido]engine de controle temporal

em Dom 23 Jan 2011, 23:57
Controle temporal? Que zika, o controle de voltar no tempo do Prince of Persia. Eu vi uma engine na GMC que utilizava um arquivo de texto para fazer, mas este método é muito mais prático...

Tipo, a cada step, ele tem que gravar as posições anteriores numa array. Só que muitos valores deixariam o jogo lento, e para isso só era deletar os primeiros frames. Aí num Alarm que é executado a cada 1 step, coloca esse código:
Código:
a+=1
rev_x[a]=x
rev_y[a]=y
Então você iria criar um limitador, como explica o tutorial, que quando chegar a 400 apagar ele e colocar no 1.
Código:
if variable_array_get(rev_x,400) and variable_array_get(rev_y,400)
{
for (i=0;i<400;i+=1)
{
variable_array_set(rev_x,i,0)
variable_array_set(rev_y,i,0)
}
a = 1
}
Aí quando apertar a tecla, só colocar outro alarm que executa a cada step e por:
Código:
a-=1
x=rev_x[a]
y=rev_y[a]
Pronto vai voltar no tempo Very Happy Entendeu agora?
avatar
Ranking : Nota A
Notas recebidas : C+A+A+B+A
Data de inscrição : 10/09/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 10

Prêmios
   : 2
   : 2
   : 0
Ver perfil do usuáriohttp://williammustaffa.blogspot.com

Re: [pedido]engine de controle temporal

em Seg 24 Jan 2011, 11:01
sim,vlw cara,pra mim tava confuso mas agora melhorou^^
vlw
avatar
Ranking : Nota A
Notas recebidas : C+A+A+B+A
Data de inscrição : 10/09/2010
Número de Mensagens : 426
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 10

Prêmios
   : 2
   : 2
   : 0
Ver perfil do usuáriohttp://williammustaffa.blogspot.com

Re: [pedido]engine de controle temporal

em Ter 25 Jan 2011, 03:46
olha tentei fazer aqui mas nao deu cero Happy
sera que não poderia fazer uma engine ?
vlw
abrass
avatar
Data de inscrição : 25/01/2010
Número de Mensagens : 908
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 16

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://recursos-mania.forumeiros.com

Re: [pedido]engine de controle temporal

em Ter 25 Jan 2011, 10:02
williammustaffa

Evite posts duplos são contra as Regras do Fórum use o botão editar na ultima mensagem.Dessa vez fica o alerta
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [pedido]engine de controle temporal

em Ter 25 Jan 2011, 10:21
=/ Beleza, vou fazer um pequeno exemplo. Mas eu preciso que você aprenda, decore como fazer, só olhar a engine não vai te levar a nada, pois só é chegar nela e pegar os códigos. Quando eu terminar eu edito/posto.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum