Não há nada como a rotina de ajustar uma variável, compilar o código que leva alguns minutos, executar o código, perceber que o seu ajuste estava na direção errada e repetir o processo novamente.
Gostaria de começar a interagir com a minha lógica do jogo enquanto uma sessão está em andamento. Quais são algumas das maneiras pelas quais você lidou com isso?
Eu estaria aberto para ouvir soluções para iOS, C / C ++ e C # / XNA.
fonte
No C / C ++, um truque simples é colocar o seu tweakable em uma variável estática, acionar um ponto de interrupção, alterar a estática no depurador e permanecer persistente até a saída.
fonte
O log de HTTP é uma grande ajuda e não é difícil de instalar. Você pode até usar o Google App Engine como uma maneira rápida de fazer isso funcionar. Os dados são sempre úteis.
Scripts e XML, estes podem ser recarregados rapidamente e não precisam de redefinição. Permita que eles falhem sem interromper o jogo. Isso dá muito poder a artistas, testadores e designers.
Menu de depuração no jogo Um menu simples de depuração no jogo, que você pode gerar quando criança e congelar o jogo com controles deslizantes de mecanismo e controles deslizantes de jogo. Permitindo que você ajuste os números de chave em tempo de execução e talvez execute uma ou duas funções de depuração ou despejos de informações.
Eu também amo soquetes ASYNC, como mencionado na resposta de David
Fácil de usar Sua equipe de jogos deve poder adicionar essas ferramentas e usá-las com muita facilidade, ou elas simplesmente não serão usadas.
fonte
Eu sei que Sean James já disse isso . Mas, falando sério, o Visual Studio (especificamente as ferramentas de depuração) é ótimo para isso.
Atualmente, não uso muito C ++, por isso não tenho certeza de quão bem eles se aplicam lá. Mas para C # (inclusive no C # Express) você tem:
E isso pode explodir sua mente (ele explodiu a minha quando eu descobri sobre ele):
A Janela Imediata é realmente difícil de encontrar (está no menu Debug / Windows).
A única grande desvantagem de usar o depurador do Visual C # é que ele não gosta de alterar
const
valores. Então, eu geralmente apenas fazer meus valores relacionados com o jogostatic
, enquanto eu estou aprimorando-los.(Além disso: ter dois monitores ajuda muito.)
Agora devo admitir que o método acima envolve pausar seu aplicativo - o que pode ser insatisfatoriamente lento para algumas coisas particularmente complicadas.
Nessas raras ocasiões, o que faço (no XNA) é simplesmente invadir um pouco de código (provavelmente usando Editar e Continuar, como acima) para pegar
Keyboard.GetState().IsKeyDown()
(na verdade, tenho um wrapper mais fácil de digitar para isso) e ajustar o valor por pressionamentos de tecla. Qualquer coisa mais complicada não vale o esforço.Na prática, o que geralmente acho muito mais importante é poder visualizar (em vez de modificar) valores em tempo real. Por isso eu tenho um pouco de classe agradável que pode buffer linhas e texto a ser elaborado no final do quadro. Também é útil para prototipagem rápida.
(E, mais uma vez, é bom poder "Editar e continuar" essas visualizações em tempo de execução.)
(fonte: andrewrussell.net )
( daqui )
Receio não ter uma fonte "legal" para publicar no momento (talvez mais tarde). Mas é basicamente apenas uma lista de linhas (para esta biblioteca de linhas redondas ) e seqüências de caracteres (para o SpriteBatch interno do XNA). Apenas faça isso em
public static
algum lugar e desenhe tudo com uma transformação apropriada para que tudo apareça no "espaço do mundo" (e limpe as listas para o próximo quadro).fonte
Escrevendo um sistema simples reflexão para C / C ++ é bastante trivial. Dessa forma, você pode navegar por todas as suas variáveis no jogo (seja com uma ferramenta de rede, teclado ou joypad) e alterá-las para o conteúdo do seu coração. Ele trabalha para mim, mas todas as respostas acima são igualmente válidas.
Editado para adicionar: este tópico agora é sobre ajustes, não depuração de acordo com o título do tópico.
fonte
Uma solução que eu já vi em vários estúdios é um aplicativo de depuração externa que se conecta ao seu programa usando a rede. Isso mostra aplicativo específico exposto variáveis, e permite que você edite-los em tempo real. Adicionando novas variáveis é uma questão de adicionar alguns macros para o código do jogo.
O set-up inicial do macros do lado do jogo, o protocolo cliente / servidor (as soluções que eu vi apenas serialise xml e para trás), e escrevendo o cliente, é grande. No entanto, é extremamente útil, especialmente quando utilizando a rede de meios de comunicação que você pode trabalhar em qualquer plataforma.
fonte
Bind o carregamento e leitura da variável em um arquivo de texto e aquecê-la usando uma combinação de teclas específica ou comando do console.
fonte