[Dúvidas - GMS] Delta_Time, Networking, Física

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por machosupremo em Sex 11 Jul 2014, 08:44

Ola pessoas, depois de muito, mas muito tempo, estou retornando aos estudos na programação de jogos (fiquei todos esses meses/anos sem um PC  Suspect  ).

Enfim, já pesquisei aqui no fórum mas não foi o suficiente para sanar minhas duvidas. Vou relatar cada caso abaixo:

Variável "delta_time":
   Como sempre fui apegado ao estudo de aplicações online/remota precisava utilizar essa variável para multiplicar um fator de velocidade em movimentos. Como acontece no unity 3D [ velocidade * time.DeltaTime ].
   Mas a do GMS não é tão simples pois ele calcula milionésimo de segundos de um frame ao outro. Em uma versão para o GM 8, um amigo (do qual não me recordo agora) disponibilizou a seguinte situação:
//create event - iniciar as variaveis
tempoAntigo = current_time
FPS = 30

//Step Event
deltaTempo =  (current_time - tempoAntigo)/FPS
tempoAntigo = current_time
speed = vel *deltaTempo

Essa formula obtém-se um resultado harmônico e agradável, mas não ficou claro de o porque da variável FPS = 30, percebi que não da pra colocá-la relativa a room_speed (em teste de variações dinâmica do room_speed).

Mesmo assim ainda gostaria de saber como usar a variável nativa do GM-S.


Networking. Aqui me refiro ao multiplayer do GM-S:

Primeiramente não consegui ainda achar uma versão daquele tutorial da yoyogames para estudar os códigos. Mas isso seria apenas para solucionar um problema que estou tendo.

Criei o servidor e o Cliente, e consigo fazer a conexão inicial do cliente, mas após usar o "Buffer" eu não consigo reutilizar novamente, ou seja, se eu for conectar um segundo Cliente, ele acusa erro na variável que escolhi para ser o Buffer.

Tentei dar um buffer_create() antes de cada caso, e um buffer_delete() após usar. Mas sem resultados.
Em meio disso percebi que não assimilei direito quando usar cada função de buffer a seguir:
buffer_tell()
buffer_sizeof()
buffer_get_size()

Pelo que entendi, o buffer_tell() fala sobre posição, o que tecnicamente é diferente de "ser5 o tamanho em bytes" do buffer. isso os outros dois já fazem.


e por ultimo é se alguém tem algo que ajude a criar um objeto que responde a física do jogo porem que seja composto de um esqueleto. Como exemplo um boneco, se ele for atingido na cabeça, essa reage primeiramente porem os outros membros do corpo vai herdando o movimento (de forma relativa).

machosupremo

Número de Mensagens : 99
Idade : 26
Data de inscrição : 10/10/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por machosupremo em Sex 11 Jul 2014, 16:38

Bom sobre as funções de buffer_sizeoff() buffer_get_size() e buffer_tell() uma (re)leitura com maior atenção já me respondeu o que exatamente cada uma faz.

Mas as outras duvidas ainda permanecem, se alguém puder me ajudar seria eternamente grato. =]

machosupremo

Número de Mensagens : 99
Idade : 26
Data de inscrição : 10/10/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por PedroX em Sex 11 Jul 2014, 17:24

Veja:
http://gmc.yoyogames.com/index.php?showtopic=556480

Em breve faremos uma tradução do tutorial.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por machosupremo em Sab 12 Jul 2014, 08:01

PedroX escreveu:Veja:
http://gmc.yoyogames.com/index.php?showtopic=556480

Em breve faremos uma tradução do tutorial.

Muito obrigado PedroX, isso já me adianta. Sobre Networking ou sobre onde encontrar o tutorial/engine da gmc.yoyogames sobre o assunto ?

machosupremo

Número de Mensagens : 99
Idade : 26
Data de inscrição : 10/10/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por PedroX em Sab 12 Jul 2014, 10:37

A tradução do tutorial do link.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por gabrielsch em Sab 12 Jul 2014, 10:39

Não existe muita coisa ou documentação certa explicando como usar a variável delta_time do GMS mas a algum tempo atras numa madrugada eu perdi alguns minutos da minha vida pra entender e pode utilizar essa variável da maneira mais simples possível na minha opinião é claro.
No meu caso eu crio um objeto e coloco no create:
Código:
globalvar delta;
delta = 1;
Delta vai ser uma variável global que eu vou utilizar para controlar os valores do jogo, deixo ela com um valor inicial igual a 1 para não ter problemas nos primeiros segundos que o jogo rodar.
No Begin Step desse mesmo objeto eu coloco:
Código:
delta =  delta_time * .0001
Desse jeito eu obtenho o valor que eu devo usar como fator na multiplicação de qualquer outro valor no meu jogo para que ele compense o lag e/ou alguma possivel queda repentina de FPS (lag spike).
Depois disso é só utilizar dessa forma por exemplo:
Código:
x += 2*delta
Desse jeito independente do FPS que o jogo esteja rodando o objeto vai se locomover para direita com uma velocidade de 2 pixels por segundo. Então tu pode colocar a room_speed que tu quiser, a maioria das pessoas deixa como 999 ou até mais, só que acho que deixando ela entre 100 e 200 ja ta de bom tamanho, alias eu só uso delta_time quando vou fazer algum jogo para Android/iOS e 3D.

___________


Acesse: http://foxen.com.br/



gabrielsch

Ranking : Nota A
Número de Mensagens : 1229
Idade : 21
Data de inscrição : 06/12/2009
Notas recebidas : D + A + A
Reputação : 28
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por machosupremo em Sab 12 Jul 2014, 13:53

gabrielsch escreveu:Não existe muita coisa ou documentação certa explicando como usar a variável delta_time do GMS mas a algum tempo atras numa madrugada eu perdi alguns minutos da minha vida pra entender e pode utilizar essa variável da maneira mais simples possível na minha opinião é claro.
No meu caso eu crio um objeto e coloco no create:
[...]

Nossa me sinto envergonhado por não ter pensado nisso  Suspect 
Como o tempo resultante era um fator de segundo em milionésimo (eu acho) é só eu multiplicar mesmo e ter um valor decente ¬¬
Mesmo assim agradeço muito.

Sobre o Networking, estava reparando e estou usando uma versão 1.99 (early-acess), que deve ser a mesma disponível no site (não foi de lá que baixei). Logo ele apenas permite apenas uma conexão remota.
Pensava eu estar usando uma versão "Paralela" da Master Collection.

Mesmo assim fica algo sem resposta, por que ele não da erro apenas no segundo cliente, e sim no servidor também. Já que tenho um script para informar um novo jogador e informar quando um jogador foi desconectado, logo, o "BUFFER" é utilizado duas vezes, acusando erro na segunda.

Se alguém souber me ajudar não se acanhe Happy

machosupremo

Número de Mensagens : 99
Idade : 26
Data de inscrição : 10/10/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por gabrielsch em Sab 12 Jul 2014, 16:21

Qual o código que tu usa pra utilizar o buffer que ta acusando erro? Suponho que tu queira vários clientes conectados a um servidor e não uma conexão P2P.

___________


Acesse: http://foxen.com.br/



gabrielsch

Ranking : Nota A
Número de Mensagens : 1229
Idade : 21
Data de inscrição : 06/12/2009
Notas recebidas : D + A + A
Reputação : 28
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por machosupremo em Sab 12 Jul 2014, 23:19

gabrielsch escreveu:Qual o código que tu usa pra utilizar o buffer que ta acusando erro? Suponho que tu queira vários clientes conectados a um servidor e não uma conexão P2P.

Sim, para ser exato o servidor também é client.

O Código que da erro aparentemente é quando vou setar/escrever novamente no buffer.

Pois uso buffer_seek() e buff_write() e apesar de o erro não acusar qual linha é o problema, ele diz que a variavel (usada como BUFFER) não existe. Isto é, o código funciona uma primeira vez apenas.

machosupremo

Número de Mensagens : 99
Idade : 26
Data de inscrição : 10/10/2012
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.dinoup.com

Voltar ao Topo Ir em baixo

Re: [Dúvidas - GMS] Delta_Time, Networking, Física

Mensagem por Conteúdo patrocinado Hoje à(s) 20:54


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum