Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Debugando
+2
Tiago Lima
saim
6 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Debugando
Nome: Debugando, ou usando o debug mode
Descrição: Esse tutorial ensia a usar o debug mode e, consequentemente, a resolver sozinho metade dos problemas de código.
Nível de dificuldade: iniciante.
Requerimentos: Qualquer versão do game maker (acredito que não haja diferenças entre as versões, mas me baseei no GM 8.0)
Desenvolvimento:
Já teve um problema que você saberia resolver se soubesse o valor das variáveis?
Ou um problema que você sente que daria pra se virar se o jogo rodasse mais devagarinho?
Bom, o game maker tem uma ferramenta que te possibilita isso. Chama-se “debug mode”.
No debug mode, você roda seu jogo e surge uma janelinha. Nessa janelinha, você pode visualizar muitas, se não todas, variáveis do seu jogo. O escopo desse tutorial consiste, basicamente, em ensinar a usar essa janelinha.
Entrando no debug mode:
Nada mais simples: sabe aquele “play” verde que você usa pra rodar o jogo? Existe um “play” vermelho logo ao lado dele. Clicando nesse segundo play, você roda o jogo em modo debug.
Ou você pode ir em "run-run in debug mode". Ou apertar F6.
mouse_id:
Ao passar o mouse sobre os objetos, um texto aparece no canto inferior direito da janela de debug. O texto diz “mouse_id=” e um número grande. Esse número é a id da instância sob o cursor do mouse. Isso será importante mais adiante.
Visualizando variáveis:
Pra visualizar variáveis, você clica no botão “+”. Aparecerá uma nova janela e, nela, você digita qual variável você quer acompanhar. A variável aparecerá numa tabela, com seu valor logo à direita.
Pra visualizar variáveis globais, basta digitar o nome da variável. Digite “room” e o índice da room em que o jogo estiver aparecerá ao lado. Digite o nome de algum objeto e o índice desse objeto (não das instâncias) aparecerá. Variáveis que comecem com “global.” requerem que você digite “global.” pra serem visualizadas.
Pra visualizar variáveis locais, você digita a id da instância, entre parênteses, seguido de um ponto e o nome da variável que você quer verificar. Exemplo:
Como as variáveis “var” deixam de existir logo após a execução do código, essas não podem ser verificadas diretamente. Há formas de verificá-las que serão abordadas mais adiante.
tools - todas as variáveis:
Bom, suponhamos que você esteja sem paciência pra escrever linha-por-linha quais variáveis você quer acompanhar. Você pode ir em "tools". Lá tem algumas opções auto-explicativas.
"show global variables" mostra todas as variáveis globais (inclusive aquelas que requerem o uso de "global.", mas não aparece o "global." no nome delas).
"show local variables" vai te pedir um objeto ou instância e mostrará todas as variáveis dele. A regra da primeira instância do objeto vale aqui também.
"show instances" vai te mostrar os ids das instâncias em jogo, e de quebra, o sprite_name de cada uma delas (o nome mesmo do sprite, não a id).
Finalmente, a última opção "show messages" é um pouco mais complexa. Existe a função "show_debug_message" que, aparentemente não faz nada. Pode colocar em qualquer lugar do seu jogo que, a menos que você consiga errar a sintaxe da função, você não notará a presença dela. Mas rodando em debug, indo em "tools-show messages", todas as strings dessa função estarão lá. Então, pra acompanhar o valor de uma var (lembra que eu disse que tinha jeito?), você pode colocar, NO PONTO DO CÓDIGO EM QUE VOCÊ QUER SABER O VALOR DELA, "show_debug_message(string(variável))".
velocidades:
Ainda é possível acelerar/retardar a velocidade de execução no modo debug. Vá em "tools-set speed" e digite a nova velocidade da room. Isso pode ser útil pra verificar, por exemplo, se a velocidade caiu a zero no momento em que o objeto colide com o outro ou só no step seguinte. Pode ser usado, também pra ver se o loop que você definiu é eficiente ou está exigindo demais da memória do computador - um jogo simples deveria rodar a 60 fps sem problemas, enquanto que um jogo mais complexo pode aceitar uns 40 fps.
Ah, sim, a velocidade real, em fps é mostrada no canto inferior esquerdo da janela de debug.
Você pode, também, paralisar o jogo todo e avançar step-por-step. Clique no botão de pausa que o jogo todo para. Há uma setinha que, ao ser clicada, permite que o jogo avance um step e pare de novo, dando todo o tempo que você precisa pra tentar visualizar porque foi que a variável que deveria ter mudado de valor não mudou (ou vice-versa).
novo debug
Ou: save e load. Se você conseguiu colocar na tela todas as variáveis que você quer visualizar e acha que descobriu o problema, NÃO feche o jogo para editá-lo ainda. Vá em "watch-save" e grave num arquivo de texto as variáveis que você estiver observando. Caso você esteja errado e a correção não seja efetiva, você vai querer resgatar quais variáveis são essas. Pra isso, vá em "watch-load" e selecione o arquivo. Esse arquivo pode ser editado manualmente.
debug_mode
"Ué, você não passou o tutorial todo falando sobre debug mode?" Sim, mas note o underline entre "debug" e "mode". Sim, é uma variável global (que não aparece em "show global variables" por motivos óbvios). Sim, ela é "true" quando você roda o jogo em debug mode e "false", de outra forma. E, sim, ela é útil.
Suponha que você determine um ponto através de coordenadas que são calculadas em código. Suponha que você desconfie que a posição calculada não é a que você queria. Ver o valor das variáveis ajuda, mas não te dá "aquela" segurança de que o ponto está no lugar certo ou não. Então, apele, use o draw event pra desenhar o ponto. Use draw_circle, sei lá. E, pra não correr o risco do seu jogo ser lançado com aquele círculo horroroso só porque você esqueceu de tirar uma linha de código, coloque esse desenho dentro de um "if debug_mode". Assim, no modo debug, o código será executado e o círculo aparecerá e, no jogo normal, não.
Fim. Espero que esse tutorial ajude iniciantes a serem um pouco mais arrojados e veteranos a verem seus erros sozinhos. Eu, mesmo, vou continuar dependendo da moçada daqui da comunidade... :oops:
Descrição: Esse tutorial ensia a usar o debug mode e, consequentemente, a resolver sozinho metade dos problemas de código.
Nível de dificuldade: iniciante.
Requerimentos: Qualquer versão do game maker (acredito que não haja diferenças entre as versões, mas me baseei no GM 8.0)
Desenvolvimento:
Já teve um problema que você saberia resolver se soubesse o valor das variáveis?
Ou um problema que você sente que daria pra se virar se o jogo rodasse mais devagarinho?
Bom, o game maker tem uma ferramenta que te possibilita isso. Chama-se “debug mode”.
No debug mode, você roda seu jogo e surge uma janelinha. Nessa janelinha, você pode visualizar muitas, se não todas, variáveis do seu jogo. O escopo desse tutorial consiste, basicamente, em ensinar a usar essa janelinha.
Entrando no debug mode:
Nada mais simples: sabe aquele “play” verde que você usa pra rodar o jogo? Existe um “play” vermelho logo ao lado dele. Clicando nesse segundo play, você roda o jogo em modo debug.
Ou você pode ir em "run-run in debug mode". Ou apertar F6.
mouse_id:
Ao passar o mouse sobre os objetos, um texto aparece no canto inferior direito da janela de debug. O texto diz “mouse_id=” e um número grande. Esse número é a id da instância sob o cursor do mouse. Isso será importante mais adiante.
Visualizando variáveis:
Pra visualizar variáveis, você clica no botão “+”. Aparecerá uma nova janela e, nela, você digita qual variável você quer acompanhar. A variável aparecerá numa tabela, com seu valor logo à direita.
Pra visualizar variáveis globais, basta digitar o nome da variável. Digite “room” e o índice da room em que o jogo estiver aparecerá ao lado. Digite o nome de algum objeto e o índice desse objeto (não das instâncias) aparecerá. Variáveis que comecem com “global.” requerem que você digite “global.” pra serem visualizadas.
Pra visualizar variáveis locais, você digita a id da instância, entre parênteses, seguido de um ponto e o nome da variável que você quer verificar. Exemplo:
Você pode usar o mouse_id (ver acima) pra saber o valor da id da instância a ser observada. Pode-se digitar o nome do objeto seguido de ponto e o nome da variável, mas isso retornará apenas o valor da variável da instância com id mais baixo (a primeira instância do objeto).(100357).speed
Como as variáveis “var” deixam de existir logo após a execução do código, essas não podem ser verificadas diretamente. Há formas de verificá-las que serão abordadas mais adiante.
tools - todas as variáveis:
Bom, suponhamos que você esteja sem paciência pra escrever linha-por-linha quais variáveis você quer acompanhar. Você pode ir em "tools". Lá tem algumas opções auto-explicativas.
"show global variables" mostra todas as variáveis globais (inclusive aquelas que requerem o uso de "global.", mas não aparece o "global." no nome delas).
"show local variables" vai te pedir um objeto ou instância e mostrará todas as variáveis dele. A regra da primeira instância do objeto vale aqui também.
"show instances" vai te mostrar os ids das instâncias em jogo, e de quebra, o sprite_name de cada uma delas (o nome mesmo do sprite, não a id).
Finalmente, a última opção "show messages" é um pouco mais complexa. Existe a função "show_debug_message" que, aparentemente não faz nada. Pode colocar em qualquer lugar do seu jogo que, a menos que você consiga errar a sintaxe da função, você não notará a presença dela. Mas rodando em debug, indo em "tools-show messages", todas as strings dessa função estarão lá. Então, pra acompanhar o valor de uma var (lembra que eu disse que tinha jeito?), você pode colocar, NO PONTO DO CÓDIGO EM QUE VOCÊ QUER SABER O VALOR DELA, "show_debug_message(string(variável))".
velocidades:
Ainda é possível acelerar/retardar a velocidade de execução no modo debug. Vá em "tools-set speed" e digite a nova velocidade da room. Isso pode ser útil pra verificar, por exemplo, se a velocidade caiu a zero no momento em que o objeto colide com o outro ou só no step seguinte. Pode ser usado, também pra ver se o loop que você definiu é eficiente ou está exigindo demais da memória do computador - um jogo simples deveria rodar a 60 fps sem problemas, enquanto que um jogo mais complexo pode aceitar uns 40 fps.
Ah, sim, a velocidade real, em fps é mostrada no canto inferior esquerdo da janela de debug.
Você pode, também, paralisar o jogo todo e avançar step-por-step. Clique no botão de pausa que o jogo todo para. Há uma setinha que, ao ser clicada, permite que o jogo avance um step e pare de novo, dando todo o tempo que você precisa pra tentar visualizar porque foi que a variável que deveria ter mudado de valor não mudou (ou vice-versa).
novo debug
Ou: save e load. Se você conseguiu colocar na tela todas as variáveis que você quer visualizar e acha que descobriu o problema, NÃO feche o jogo para editá-lo ainda. Vá em "watch-save" e grave num arquivo de texto as variáveis que você estiver observando. Caso você esteja errado e a correção não seja efetiva, você vai querer resgatar quais variáveis são essas. Pra isso, vá em "watch-load" e selecione o arquivo. Esse arquivo pode ser editado manualmente.
debug_mode
"Ué, você não passou o tutorial todo falando sobre debug mode?" Sim, mas note o underline entre "debug" e "mode". Sim, é uma variável global (que não aparece em "show global variables" por motivos óbvios). Sim, ela é "true" quando você roda o jogo em debug mode e "false", de outra forma. E, sim, ela é útil.
Suponha que você determine um ponto através de coordenadas que são calculadas em código. Suponha que você desconfie que a posição calculada não é a que você queria. Ver o valor das variáveis ajuda, mas não te dá "aquela" segurança de que o ponto está no lugar certo ou não. Então, apele, use o draw event pra desenhar o ponto. Use draw_circle, sei lá. E, pra não correr o risco do seu jogo ser lançado com aquele círculo horroroso só porque você esqueceu de tirar uma linha de código, coloque esse desenho dentro de um "if debug_mode". Assim, no modo debug, o código será executado e o círculo aparecerá e, no jogo normal, não.
Fim. Espero que esse tutorial ajude iniciantes a serem um pouco mais arrojados e veteranos a verem seus erros sozinhos. Eu, mesmo, vou continuar dependendo da moçada daqui da comunidade... :oops:
Última edição por saim em Qui 06 Out 2011, 16:09, editado 3 vez(es)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Debugando
Seu tutorial tá muito legal, realmente é uma obrigação, independente da linguagem que agente use, saber debugar o código, e seu tutorial tá bem instrutivo, a formatação (ou a falta dela) é o que confundi um pouco, mas você já sabe, né?
Bom tuto!
Bom tuto!
Re: Debugando
Um bom tutorial com certeza, eu mesmo não sabia utilizar o "Debug Mode".
Super Games- Games Ranking :
Notas recebidas : C
Data de inscrição : 10/06/2010
Reputação : 36
Número de Mensagens : 2800
Prêmios :
x 0 x 0 x 0
x 0 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Java
- Godot
- Javascript
- C ou C++
Re: Debugando
Ótimo tutorial saim. Realmente seria impossível resolver certos problemas sem "debugar".
Dica: Pelo visto tu digitou no Word e colou aqui. Os espaçamentos entre os parágrafos foram "comidos" e o texto fica parerendo maior do que é.
Edit: Agora que vi seu EDIT sobre a formatação .
FLWS!
Dica: Pelo visto tu digitou no Word e colou aqui. Os espaçamentos entre os parágrafos foram "comidos" e o texto fica parerendo maior do que é.
Edit: Agora que vi seu EDIT sobre a formatação .
FLWS!
Re: Debugando
Muito bom tutorial, eu uso muito o modo debug, acho indispensável o show_debug_message, variáveis local e variáveis globais, oque eu ainda não conhecia é sobre a variável debug_mode, achei bem interessante.
Klior- Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- C#
- Javascript
Re: Debugando
Ótimo tutorial Saim!
Sempre uso o debug quando tenho problemas e não consigo resolvê-los. Também o uso quando vou fazer alguns testes dentro do jogo.
Enfim, o tutorial está ótimo e bem explicado.
Aprovado!
Sempre uso o debug quando tenho problemas e não consigo resolvê-los. Também o uso quando vou fazer alguns testes dentro do jogo.
Enfim, o tutorial está ótimo e bem explicado.
Aprovado!
JV Justino- Games Ranking :
Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios :
x 0 x 13 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Debugando
Foi o que me motivou a elaborar o tutorial. Notei que muitas dúvidas da comunidade, em geral, não existiriam se todo mundo soubesse usar o debug.Tsurugi Kyousuke escreveu:eu mesmo não sabia utilizar o "Debug Mode".
Não, na verdade o que eu quis dizer era aquele cabeçalho. Os parágrafos estão inteiros mesmo, acho... Vou dar mais uma conferida, mas não achei nenhuma linha comida, na primeira passada de olhos.Alex FC escreveu:Edit: Agora que vi seu EDIT sobre a formatação .
Eu também não! :oops: Fui pesquisar, pra fazer um tutorial completo, e dei de cara com ela. É o que dizem, a melhor forma de aprender é ensinar...Klior escreveu:oque eu ainda não conhecia é sobre a variável debug_mode
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos