Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Drumpi on October 04, 2009, 06:13:00 PM

Title: Crear un .bat para depuración.
Post by: Drumpi on October 04, 2009, 06:13:00 PM
Hola a todos:

Duda tonta, pero que no se dónde buscar información.
Siempre he usado los scripts para compilar, sobre todo con windows. El caso es que con Bennu quiero hacerlo de forma distinta, sin tener que copiar el runtime (más que nada, por tener que ir módulo a módulo) y no se cómo hacerlo. No encuentro ninguna página para aprender los comandos del .bat.
Básicamente es para indicarle que compile y ejecute usando los binarios y librerías de otra carpeta, suelo tenerlos en (...)/binarios/(version)/ y luego la estructura normal, las cuatro carpetas bin, externals, libs y modules.

Muchas gracias.
Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 04, 2009, 06:23:56 PM
Joder, sería buen aporte.

Supongo que algunos ya sabéis que yo opto por tener un .bat SEN-CI-LLÍ-SI-MO que accede a las DLL que tiene copiadas en /DLL en su mismo directorio.

Como ventaja yo puedo pasar el juego a cualquiera y le compila, como desventaja tengo por aquí 200+ proyectos todos ellos con sus DLL ocupando su mordisco correspondiente de disco duro.

Sigo con atención este hilo, lo tengo el punto de mira ;)
Title: Re: Crear un .bat para depuración.
Post by: osk on October 04, 2009, 06:55:44 PM
Si quieres saber los "comandos del Bat", y en general, de la consola de comandos de Windows, al menos en el XP vas a "Inicio->Ayuda y soporte técnico" y en buscar le dices "Archivos por lotes". Ahí lo tienes todo.
Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 04, 2009, 07:54:42 PM
Ahí está todo OK... Y con los .bat se pueden hacer maravillas... Pero yo espero que alguien tenga un .bat ya funcionando con lo que decimos, que nos sirva de ejemplo, habrá que enredar con variables de entorno y alguna cosa más y yo de esas cosas hace ya años que no las toco.
Title: Re: Crear un .bat para depuración.
Post by: DCelso on October 04, 2009, 10:17:37 PM
compila_con.bat

set BENNUROOT=c:/devbennu
set VERSION=%1
set JUEGO=%2
set PATH=%BENNUROOT%/binarios/%VERSION%/bin;%BENNUROOT%/binarios/%VERSION%/externals;%BENNUROOT%/binarios/%VERSION%/libs;%BENNUROOT%/binarios/%VERSION%/modules;%PATH%
bgdc %JUEGO%.prg
bgdi %JUEGO%.dcb

se usaría tal que así
compila_con r115 mijuego
O bien lo editas y cambias los valores de bennuroot, version y juego
Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 05, 2009, 02:28:22 AM
Gracias DCelso, mañana lo pruebo, qué horas :o me he despertado porque unos mosquitos me estaban devorando lentamente :'(
Title: Re: Crear un .bat para depuración.
Post by: Drumpi on October 05, 2009, 02:52:52 PM
Genial, muchas gracias, DCelso, es justo lo que me hacía falta.
Con esto, hacer la adaptación a lo que necesito será coser y cantar.
Sólo una duda ¿PATH es algún tipo de variable predeclarada? ¿Por qué hay que poner al final de la linea de nuevo %PATH%?

No te doy dos karmas, porque sólo se puede uno por hora :D
Title: Re: Crear un .bat para depuración.
Post by: DCelso on October 05, 2009, 02:59:51 PM
Sasto. Es del sistema, es donde busca windows para encontrar los ejecutables y librerías a las que no accedes con la ruta absoluta.
La añadimos al final para que primero busque los binarios y librerías en nuestros directorios y si no están allí sigua buscando donde lo haría antes. Para el trabajo que le vamos a dar no es necesario añadirla al final pero tampoco está de más :D.
Title: Re: Crear un .bat para depuración.
Post by: TYCO on October 06, 2009, 01:25:06 PM
PATH=D:\BENNU;%PATH%

Esa linea añade la ruta de D:\BENNU a lo que PATH valga. PATH es una variable de windows, (linux no sé si se llamara así) y como su nombre indica... Camino... Ruta... así cuando escribas un comando... va a buscarlo... si lo encuentra en esos PATH lo ejecuta, o también lo ejecutará si lo encuentra en el directorio en el que estas.

Yo tengo esto en un BAT:

@ECHO OFF
\_DIVGAMES_\Bennu\bgdc -g -c Rally.prg
pause
\_DIVGAMES_\Bennu\bgdi Rally.dcb >Log.txt 2>Error.txt


Y me funciona bien, sin añadir los PATH ni nada... es cierto que están todos los archivos en esa carpeta de Bennu, pero no los del rally, porque ese BAT lo tengo en la carpeta del rally, vamos y a mi me funciona perfectamente desde hace muchos meses.

NOTA: Para cuando da error al compilar... interrumpo a ejecución del BAT con las teclas "Control+C" (para que no se ejecute la siguiente línea.. osea el rally).
Title: Re: Crear un .bat para depuración.
Post by: DCelso on October 06, 2009, 02:20:41 PM
Para eso puedes probar esto otro y evitar el uso del control c.

@echo off
set BENNUROOT=C:\BennuGD\
set JUEGO=%1
set PATH=%BENNUROOT%\bin;%BENNUROOT%\externals;%BENNUROOT%\libs;%BENNUROOT%\modules;%PATH%
bgdc %JUEGO%.prg
if "%ERRORLEVEL%"=="1" bgdi %JUEGO%.dcb
Title: Re: Crear un .bat para depuración.
Post by: Drumpi on October 07, 2009, 12:55:46 AM
Juer ¿Y todo eso donde lo enseñan? jamás vi nada parecido en tutoriales, cursos ni demás ¿En viejas clases de informática de MS-DOS?
Hoy día, las "clases de informática" se basan en "esto es para cerrar windows", "así funciona el paint" o "vamos a aprender a escribir en word" :S
Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 07, 2009, 05:23:43 AM
Eso del errorlevel lo aprendí en su día editando un "juego" que era basicamente un .bat de "elige tu propia aventura". Podias hacer variables leer datos desde teclado sobre ellas, etc.

Un infierno, mas facil programar con Bennu xD
Title: Re: Crear un .bat para depuración.
Post by: DCelso on October 07, 2009, 07:20:25 AM
pues si te explico como funciona el comando choice lo flipas :D.
Title: Re: Crear un .bat para depuración.
Post by: panreyes on October 07, 2009, 07:47:04 AM
Info:
http://es.wikipedia.org/wiki/Batch

Y luego, yo utilizo este método en todos mis nuevos juegos:
@echo off
cd src
echo Compilando...
..\bennu\bgdc -g pixdash.prg
move pixdash.dcb ..
pause
rem AQUÍ ES DONDE VEO LOS ERRORES DE COMPILACIÓN
cd ..
bennu\bgdi pixdash.dcb
pause
exit
rem AQUÍ PUEDO VER LA RAZÓN DE UNA SALIDA ANORMAL DEL PROGRAMA O DE SAYS QUE HAGO PARA DEPURACIÓN
rem REM SIRVE PARA HACER UN COMENTARIO Y QUE NO SE VEA
Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 07, 2009, 08:35:28 PM
Sí, yo también suelo poner pause entre compilación e interpretación para ver los errorcetes. Buena idea lo del pause adicional después de la interpretación para ver salidas subnormales... Digo... Anormales del programa.

En cuanto a choice, el juego del que hablo también tenía choice, era muy peculiar, odiosamente peculiar.
Title: Re: Crear un .bat para depuración.
Post by: Drumpi on October 07, 2009, 10:26:51 PM
Juer, yo, cuando no sabía programar también hice un juego de elecciones... pero yo usé el frontpage sin escribir código. Algún día os lo subo.
Title: Re: Crear un .bat para depuración.
Post by: Rein (K´)ah Al-Ghul on October 08, 2009, 10:51:41 PM
tengo un .bat que permite elegir un archivo de codigo fuente ingresando el nombre

se podria modificar para usarlo para compilar...

les dejo el codigo fuente del .bat


@echo off
echo Practica de Assembler de Motorola 68HC11
echo ========================================
echo.
echo Ingrese el nombre de archivo a ensamblar (fuente) sin la extension ASM.
echo Para finalizar oprima Enter.
echo Por ejemplo, para ensamblar "suma.asm" ingrese "suma" sin comillas.
echo El archivo .asm debe estar en la carpeta "fuente"
echo El archivo de listado estara en la carpeta "listado"
echo El archivo .S19 (que se produce solo si no hay errores) queda en la carpeta fuente.
echo.
echo Nota: Cada vez que procese un archivo, se mostrara el contenido del
echo archivo de listado con la aplicacion por default que utilice windows
echo para archivos lst. Si no hubiera errores, vera los codigos de operacion
echo y operandos como hexadecimal codificado en ASCII junto a la direccion
echo donde se cargarian.
echo.
setlocal
:loop
::limpiamos la variable de entorno %archivo%
set archivo=
set /p archivo=Ingrese el nombre de archivo fuente
if {%archivo%}=={} goto :end
@echo.
if not exist fuente\%archivo%.asm @echo El archivo %archivo%.asm no existe.&goto :loop
as11 fuente\%archivo%.asm -l > listados\%archivo%.lst
start "Resultado del ensamblado" listados\%archivo%.lst
goto loop
:end
endlocal



en si el bat lo q ace es pasar un archivo *.asm en un ensamblador para generar un *.lst

abria q agregarle las lineas del .bat


@echo off

DLL\bgdc.exe prg.prg

pause

DLL\bgdi.exe prg.dcb


en la semana hago pruebas y subo una version mejor...

EDIT: Lo ideal seria tener el compilador como una variable de entorno del sistema para usar solo bgdc y no el path completo del mismo...

Title: Re: Crear un .bat para depuración.
Post by: Windgate on October 09, 2009, 11:57:39 AM
He maquinado algo:

Si tenemos Bennupack con el Notepad++ se puede compilar y ejecutar pulsando F6, ¿El .bat no queda obsoleto?

Ese es mi caso, y el .bat sólo lo uso para pasarles el jueguito a amigos sin el Bennupack, y en ese caso les paso en /dll tanto los .dll como los .exe necesarios, y el .bat los utiliza para ejecutar, un .bat sencillito.

Con eso quería decir que el .bat que usa variables de entorno y paths y demás frikuras no me resulta demasiado útil... :(
Title: Re: Crear un .bat para depuración.
Post by: Rein (K´)ah Al-Ghul on October 09, 2009, 01:29:32 PM
Si usas una IDE el bat queda obsoleto...

pero si no tienes la IDE, o como dices Windgate pasa algo a alguien mas...

aun asi esto puede ser util...
este ejemplo lo hice sin poner cambiar la variables de entorno

se pueden agregar los parametros si hacen falta...


@echo off
echo Compilacion y ejecucion de fuentes
echo ========================================
echo.
echo Ingrese el nombre de archivo PRG (fuente) sin la extension PRG.
echo Para finalizar oprima Enter.
echo Por ejemplo, para ejecutar "suma.prg" ingrese "suma" sin comillas.
echo El archivo .dcb (que se produce solo si no hay errores)
echo.
echo.
setlocal
:loop
::limpiamos la variable de entorno %archivo%
set archivo=
set /p archivo=Ingrese el nombre de archivo fuente
if {%archivo%}=={} goto :end
@echo.
if not exist %archivo%.prg @echo El archivo %archivo%.asm no existe.&goto :loop
::bgdc %archivo%.prg si tengo a BGDC la ruta del mismo en la variable de sistema PATH
::cambiar por la ubicacion de bgdc.exe
c:\devBennu\bin\bgdc %archivo%.prg
if not exist %archivo%.dcb @echo Se ha producido un error al compilar.&goto :loop
::bgdc %archivo%.prg si tengo a BGDI la ruta del mismo en la variable de sistema PATH
::cambiar por la ubicacion de bgdc.exe
c:\devBennu\bin\bgdi %archivo%.dcb
:end
endlocal