Entrar
Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game makerpor Ralphed Ontem à(s) 18:28
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
Como funciona está formula
+2
luiz_eldorado
Black Studio
6 participantes
Página 1 de 1
Como funciona está formula
Eae pessoal, faz um tempo que eu não posto aqui, mas eu gostaria de saber, como funciona está formula, ela serve para que mesmo que o FPS de jogo esteja em 9999, o objeto se movimente em sua velocidade normal por exemplo...
Obrigado,
- Código:
valor*(60/max(fps,1))
Obrigado,
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Se for pra isto, estão o room_speed basicamente já está fazendo isto.Funkbuster escreveu:para que mesmo que o FPS de jogo esteja em 9999, o objeto se movimente em sua velocidade normal por exemplo...
A função "max" retorna o máximo dos valores (o maior)Funkbuster escreveu:( Inclusive para que serve a função "max")
Esta fórmula, de certa forma, não serve pra nada e nem funciona pois não é um "assignment", mas acho que se você colocar um "room_speed=" no começo do código, no lugar de valor por 60, e trocar todos os "60" pelo valor da room_speed que você quer, acho que funciona.
Re: Como funciona está formula
Funciona sim, perfeitamente por sinal, se quiser testar, faça um objeto com esse código no step :
- Código:
if keyboard_check(vk_left) then x-=5*(60/max(fps,1))
if keyboard_check(vk_right) then x+=5*(60/max(fps,1))
if keyboard_check(vk_up) then y-=5*(60/max(fps,1))
if keyboard_check(vk_down) then y+=5*(60/max(fps,1))
//Aperte F para escolher o FPS
if keyboard_check(ord('F')) then room_speed = get_integer("room_speed:",room_speed);
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Exemplo:A função "max" retorna o máximo dos valores (o maior)
valor1=15 valor2=35
valor3=max(valor1*2,valor2+) // retorna o valor máximo, que aqui será o valor2(que é 35)+5 e o valor3 será 40 ; o 1 é 30.
agora se o valor1 for = a 25 o valor do 3 será 50, porque é o valor maior.
_______________________
eu acho que o que você quer tem mais a ver com o Room Speed que com o Frames Per Second(FPS) então coloque assim:
valor*(room_speed/velocidadepadrao) // velocidadepadrao seria como a real que você colocou para funcionar.
Re: Como funciona está formula
A lógica é:
x += velocidade * (room_speed / fps)
Então se o fps for igual a room_speed, o resultado dos parênteses será 1 e ele andará na velocidade indicada.
Se o fps for metade do room_speed, o resultado será 2 e ele andará no dobro da velocidade.
Ou seja, se o jogo for 2 vezes mais lento, ele andará 2 vezes mais rápido, compensando o problema.
Mas é claro que se o FPS estiver muito baixo, você irá ver seu personagem saltar grandes posições na tela.
x += velocidade * (room_speed / fps)
Então se o fps for igual a room_speed, o resultado dos parênteses será 1 e ele andará na velocidade indicada.
Se o fps for metade do room_speed, o resultado será 2 e ele andará no dobro da velocidade.
Ou seja, se o jogo for 2 vezes mais lento, ele andará 2 vezes mais rápido, compensando o problema.
Mas é claro que se o FPS estiver muito baixo, você irá ver seu personagem saltar grandes posições na tela.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como funciona está formula
Hm, eu entendi, mas pelo que eu andei testando, essa formula não funciona Tãaao bem, pois eu quero que o jogo rode normalmente, com o room_speed ilimitado, como os jogos de FPS e etc...
Eu andei procurando, e pelo que eu vi na YoyoGames, isso se chama "Delta Time", então eu achei isso : LINK
Espero que funcione, vou testar, logo logo eu dou um edit...
EDIT : Fail, ele só funciona se existir um FPS limite definido, por exemplo se tiver 30 FPS, ele vai ficar mais devagar que 60 FPS...Caso alguém aí ache algo que funcione para um FPS sem limite, deixe no tópico aqui por favor, até!
Dei mais uma procurada, e achei esta extensão : High Resolution Timer
Porém tem um problema, eu nem sei por onde começar D= Eu sempre fui péssimo com extensões, então se alguém puder me dar uma mãozinha, eu ficaria muito agradecido c:
Até mais!
Eu andei procurando, e pelo que eu vi na YoyoGames, isso se chama "Delta Time", então eu achei isso : LINK
Espero que funcione, vou testar, logo logo eu dou um edit...
EDIT : Fail, ele só funciona se existir um FPS limite definido, por exemplo se tiver 30 FPS, ele vai ficar mais devagar que 60 FPS...Caso alguém aí ache algo que funcione para um FPS sem limite, deixe no tópico aqui por favor, até!
Dei mais uma procurada, e achei esta extensão : High Resolution Timer
Porém tem um problema, eu nem sei por onde começar D= Eu sempre fui péssimo com extensões, então se alguém puder me dar uma mãozinha, eu ficaria muito agradecido c:
Até mais!
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Você entende que no caso da fórmula FPS = Frames Per Second, e no caso de jogos FPS = First Person Shooter, certo?
Caso a parte, a enorme maioria dos jogos, especialmente os de qualidade, rodam a 60fps... não ilimitado. Tenho certeza de que há exceções, é claro.
Testes de benchmark podem tentar o maior fps possível, mas é para testar a capacidade da sua máquina.
Caso a parte, a enorme maioria dos jogos, especialmente os de qualidade, rodam a 60fps... não ilimitado. Tenho certeza de que há exceções, é claro.
Testes de benchmark podem tentar o maior fps possível, mas é para testar a capacidade da sua máquina.
Re: Como funciona está formula
Pra que usar isto em game maker sendo que ele ja tem um controle imbutido para sincronizar. Este tipo de formula é usada para controlar a velocidade do jogo em outros PCs que não o seu, ou seja, quando vc faz um jogo em C++ ou Java (que não tem nada disso pronto) a velocidade é em acordo ao clock do seu PC, se vc colocar +=2 apenas quer dizer que é mais rapdo que +=1 e mais lento que +=3, mas isto não é uma constante, a proporção vai variar de acordo com a velocidade de processamento de cada computador, por isso usamos controles para sincronizar a velocidade em um laço principal pois a velociade estara compativel a milissegundos, isto sim, uma constante no sentido que 1 milissegundo é 1 milissegundo aqui e em jupter. Quando fiz meu primeiro jogo em C++, não levei isto em consideração (não havia nem passado pela minha cabeça) e levei um susto ao executar em outro PC mais rapdo que o meu, o jogo ficou tão rapdo que era impraticavel, bati cabeça ate achar uma formula (podem existir varias formas de fazer) para sincronizar, e agora tranquilo.
Da Galáxia- Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Parece que vocês dois não leram o tópico eh? Eu ja entendi como a formula funciona, porém ela não é muito eficiente, eu encontrei uma extensão que funciona (Eu acho) Porém não sei como usá-la, alguém pode me ajudar?
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Eu fiz um código que funciona precisamente:
https://gmbr.forumeiros.com/t22885-delta-time#171688
Note que a primeira parte vai no Create e a segunda no Step.
Até mais!
https://gmbr.forumeiros.com/t22885-delta-time#171688
Note que a primeira parte vai no Create e a segunda no Step.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como funciona está formula
Pedro, sem querer ser chato, mas esta extensão não funciona para o que eu quero? Ter FPS o máximo possível no jogo com o room_speed em 9999 (claro que isso depende do PC) sem com que o personagem mude sua velocidade sabe?
PS : Eu tentei usar sua fórmula, e a bolinha foi a 500KMpH... ou mais...
Até!
PS : Eu tentei usar sua fórmula, e a bolinha foi a 500KMpH... ou mais...
Até!
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Funciona para o quer, já que o room_speed é 9999, ele vai automaticamente detectar. É só você tentar.
Editado
Exemplo:
Se fosse rodar a 9999 fps, daria 1000*9,999*5 / 9999, ou seja, 5. Note que o outro foi 10 vezes mais rápido, isso porque supostamente rodaria 10 vezes mais lento.
Concluindo: o que você precisa fazer é dividir a velocidade por um valor, porque o meu código vai de acordo com o room_speed, que no caso seria grande.
Até mais!
Editado
Exemplo:
- Código:
contador = current_time;
velocidade = 5;
ideal = 9999/1000; // 9,999
--------------------------------------
contador = current_time - contador; //suponha que rode a 1000 fps, entao vai dar 1 ms
if keyboard_check(vk_right) x += (contador * ideal) * velocidade; //1 * 9,999 * 5 = 49,995
Se fosse rodar a 9999 fps, daria 1000*9,999*5 / 9999, ou seja, 5. Note que o outro foi 10 vezes mais rápido, isso porque supostamente rodaria 10 vezes mais lento.
Concluindo: o que você precisa fazer é dividir a velocidade por um valor, porque o meu código vai de acordo com o room_speed, que no caso seria grande.
Até mais!
Última edição por Pedrø em Sex 13 Jul 2012, 22:44, editado 1 vez(es)
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como funciona está formula
Só que tipo, caso o jogador queira ativar o VSync, o FPS vai mudar para a taxa de atualização do monitor dele, fazendo que não seja 9999, não vai bugar a fórmula desse jeito?
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Re: Como funciona está formula
Eu li, e minha intenção era indagar a respeito da sua intenção, que despertou minha curiosidade... Entende?
Re: Como funciona está formula
Eu editei meu post, aqui.
Quanto ao monitor, geralmente eles têm uma taxa de 60 FPS. Pense nisso: mais do que isso é bobagem. Você coloca room_speed como 60 e pronto, o problema acaba.
Até mais!
Quanto ao monitor, geralmente eles têm uma taxa de 60 FPS. Pense nisso: mais do que isso é bobagem. Você coloca room_speed como 60 e pronto, o problema acaba.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Como funciona está formula
Na verdade, está longe de ser bobagem, inclusive em jogos de tiro e corrida, eu ainda não consegui configurar seu código direito, acho que a melhor solução, é aquela extensão, porém eu não sei como usá-la, pois eu sou um nubão com extensões, porém o pior de tudo, é que ela não tem um exemplo, um gmk para eu poder estudar, pra ver como funciona, se alguém estiver disposto a fazer um exemplo pra mim, eu ficaria muito agradecido
Até mais
Até mais
Black Studio- Games Ranking :
Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|