No hay nada como la rutina de ajustar una variable, compilar código que toma unos minutos, ejecutar el código, darse cuenta de que su ajuste estaba en la dirección incorrecta y repetir el proceso nuevamente.
Me gustaría comenzar a interactuar con la lógica de mi juego mientras hay una sesión en curso. ¿Cuáles son algunas de las formas en que has manejado esto?
Estaría abierto a escuchar soluciones para iOS, C / C ++ y C # / XNA.
fuente
En C / C ++, un simple truco es poner su ajuste en una variable estática, activar un punto de interrupción, cambiar la estática en el depurador y permanece persistente hasta la salida.
fuente
El registro HTTP es de gran ayuda y no es difícil de poner en funcionamiento. Incluso puede usar el motor de aplicaciones de Google como una forma rápida de hacer que esto funcione. Los datos siempre son útiles.
Scripts y XML, estos se pueden volver a cargar sobre la marcha y no requieren reinicio. Permítales fallar sin derribar el juego. Esto le da mucho poder a artistas, probadores y diseñadores.
Menú de depuración en el juego Un menú simple de depuración en el juego que puedes generar de niño y congelar el juego con controles deslizantes del motor y controles deslizantes del juego. Permitiéndole ajustar números clave en tiempo de ejecución y quizás realizar una o dos funciones de depuración o volcados de información.
También me encantan los enchufes ASYNC como se menciona en la respuesta de David
Fácil de usar Su equipo de juegos debe poder agregar a estas herramientas y usarlas muy fácilmente, o simplemente no se usarán.
fuente
Sé que Sean James ya lo dijo . Pero en serio, Visual Studio (específicamente las herramientas de depuración) es excelente para esto.
No uso mucho C ++ en estos días, así que no estoy seguro de qué tan bien se aplican allí. Pero para C # (incluido en C # Express) tiene:
Y esto podría sorprenderlo (me sopló el mío cuando me enteré):
La Ventana Inmediata es realmente difícil de encontrar (está en el menú Depurar / Windows).
El único inconveniente importante de usar el depurador de Visual C # es que no le gusta cambiar los
const
valores. Por lo general, solo hago mis valores relacionados con el juegostatic
mientras los estoy ajustando.(Además: tener dos monitores ayuda mucho).
Ahora debo admitir que el método anterior implica pausar su aplicación, lo que puede ser muy lento para algunas cosas particularmente complicadas.
En estas raras ocasiones, lo que hago (en XNA) es simplemente hackear un poco de código (probablemente usando Editar y Continuar, como se indicó anteriormente) para capturar
Keyboard.GetState().IsKeyDown()
(en realidad tengo un contenedor más fácil de escribir para esto) y ajustar el valor por pulsaciones de teclas. Cualquier cosa más complicada no vale el esfuerzo.En la práctica, lo que generalmente encuentro mucho más importante es poder visualizar (en lugar de modificar) valores en tiempo real. Para esto, tengo una pequeña clase agradable que puede almacenar líneas y texto para dibujar al final del marco. También es útil para la creación rápida de prototipos.
(Y, una vez más, es bueno poder "Editar y continuar" estas visualizaciones en tiempo de ejecución).
(fuente: andrewrussell.net )
( desde aquí )
Me temo que no tengo una fuente "agradable" para publicar en este momento (tal vez más tarde). Pero básicamente es solo una lista de líneas (para esta biblioteca de líneas redondas ) y cadenas (para SpriteBatch incorporado de XNA). Simplemente hágalo en
public static
algún lugar y dibuje todo con una transformación adecuada para que todo aparezca en el "espacio mundial" (y luego borre las listas para el siguiente cuadro).fuente
Escribir un sistema de reflexión simple para C / C ++ es bastante trivial. De esta manera, puede navegar a través de todas sus variables en el juego (ya sea con una herramienta de red, teclado o joypad) y cambiarlas al contenido de su corazón. A mí me funciona, pero todas las respuestas anteriores son igualmente válidas.
Editado para agregar: este hilo ahora trata de ajustes, no de depuración según el título del hilo.
fuente
Una solución que he visto en varios estudios es una aplicación de depuración externa que se conecta a su programa usando la red. Esta aplicación muestra variables expuestas específicas y le permite editarlas en tiempo real. Agregar nuevas variables es una cuestión de agregar algunas macros al código del juego.
La configuración inicial de las macros del lado del juego, el protocolo servidor / cliente (las soluciones que he visto solo serializan xml de un lado a otro), y la escritura del cliente, es grande. Sin embargo, es extremadamente útil, especialmente porque usar la red para la comunicación significa que puede trabajar en cualquier plataforma.
fuente
Vincula la carga y la lectura de la variable a un archivo de texto y enciéndelo usando una combinación de teclas específica o un comando de la consola.
fuente