GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por 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

Ir para baixo

Debugando  Empty Debugando

Mensagem por saim Qui 06 Out 2011, 00:55

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.
Debugando  X4lxc9

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:
(100357).speed
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).
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
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Debugando  Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por Tiago Lima Qui 06 Out 2011, 07:52

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!
Tiago Lima
Tiago Lima

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 14/07/2008
Reputação : 17
Número de Mensagens : 200
Prêmios : Debugando  Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.youtube.com/user/CanalNexteLevel

Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por Super Games Qui 06 Out 2011, 08:35

Um bom tutorial com certeza, eu mesmo não sabia utilizar o "Debug Mode".
Super Games
Super Games

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 10/06/2010
Reputação : 36
Número de Mensagens : 2800
Prêmios : Debugando  Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 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++


Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por All-x Qui 06 Out 2011, 09:05

Ó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 Very Happy.

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : Debugando  Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por Klior Qui 06 Out 2011, 09:16

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
Klior

Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios : Debugando  Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • C#
  • Javascript


Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por JV Justino Qui 06 Out 2011, 11:33

Ó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!

flw
JV Justino
JV Justino

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 07/12/2010
Reputação : 20
Número de Mensagens : 619
Prêmios : Debugando  Empty

Medalhas x 0 Tutoriais x 13 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por saim Qui 06 Out 2011, 16:05

Tsurugi Kyousuke escreveu:eu mesmo não sabia utilizar o "Debug Mode".
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.

Alex FC escreveu:Edit: Agora que vi seu EDIT sobre a formatação Very Happy.
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.

Klior escreveu:oque eu ainda não conhecia é sobre a variável debug_mode
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...
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Debugando  Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Debugando  Empty Re: Debugando

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos