[GC] Juego en desarrollo ;)

Más de 1000 ofertas en los PcDays de PcComponentes
Hola
Muchos ya me conocereis de tar por aqui bastante :) pues tirarme unas 3 horas por fin he conseguido encontrar todas las herramientas necesarias para programar y compilar para la GC y he conseguido sacar un miniproyecto adelante.
Pero tengo una duda (como suele pasar si es que no es no son doscientas XD!!!!) y la pongo aqui para ver si alguien sabe cual es mi problema por el cual sale mal el tema.
Tambien adjunto una imagen del estado actual de mi proyecto.

Al grano...mi idea es partiendo del pong, como podreis ver si os fijais en la imagen de mas abajo, hacer un space invaders pero a mi estilo [666] y a la hora de crear los enemigos lo mas parecidos a los originales y con ese efecto de cuadraditos separados, me lleva muchas lineas para un solo de ellos. Y he creado una funcion de como se dibuja en pantalla el enemigo, pero en vez de darle un valor concreto para el numero de personaje (que es lo que pasa pasa en el pong, como vereis ahi se crea la barra de dimensiones 8x64 la cual sera el player 0.):
for(y=player[0].y;y<player[0].y+64;y++){
      for(x=player[0].x;x<player[0].x+8;x++)
         fb[x+320*y]=COLOR_RED;
   }
he puesto la variable Z: (que pongo en grande aqui porque al poner las estiquetas CODE casi ni se diferencia de la x)
void Enemigos(){
   #define COLOR_RED         0x4C554CFF
   int x,y,z;
   for(y=player[Z].y;y<player[Z].y+64;y++){
      for(x=player[Z].x;x<player[Z].x+8;x++)
         fb[x+320*y]=COLOR_RED;
   }
}
Y despues en la parte del programa donde se situa en pantalla a cada personaje he hecho lo siguiente que creo que esta bien hecho pero el resultado en pantalla tras compilar no es el esperado.
           player[0].x=140;
   player[0].y=40;
   player[0].points=0;

   player[1].x=150;
   player[1].y=450;
   player[1].points=0;
   
   Z=2;
   Enemigos();
   player[Z].x=100;
   player[Z].y=100;
Como veis en esta foto el resultado de este codigo es que aparecen bien colocados los dos marcianos (players 0 y 1) pero el nuevo creado que seria player2 es la cosa esa roja de la izquierda arriba.
Imagen
Si alguien podria ayudar se agradeceria :-p
...
...
...

XD, lo mio es jugar no programar XD [beer]
Nada pues al final solucione al de un rato el problema, paso que a la hora de poner las coordenadas para situar a los enemigos se me habia pasado aparte de situar en pantalla, el darles una velocidad inicial por lo cual siendo esta cero no se movian de las coordenadas.
Ya estan solucionados casi todos los problemas que me plateaba el proyecto y estoy ams que satisfecho con el resultado porque el codigo base que era el del pong ya no se parece en nada y las ideas que tenia en mente las he conseguido plasmar en funciones y ademas optimizar estas al maximo y ahora mismo el programa es enano y hace todo lo que pense.
Me quedan detalles por pulir o implementar pero para mañana igual ya tengo una demo decente.
Espero que os guste y me deis vuestras opiniones.
Siento mucho no tener la demo del juego terminada pero creo que para dentro de nada ya estara, es que como he querido y quiero plasmar exactamente el juego a como fue el que en su dia deslumbro a mucha gente me han surgido varios problemas a la hora de discurrir el codigo y he tenido que invertarme verdaderos puzzles [idea] porque ademas las librerias que uso (que dicen que son las mejores para desarrollo freeware para la GC) tienen bastantes carencias y por ejemplo es dificilisimo poder crear el proceso que se conseguiria con un delay [mamaaaaa]. Si alguien supiera como poder hacer esa funcion con las OpenGC o alguna libreria que pueda usar para implementar esa funcion lo agraderecia.

Aqui adjunto una captura del proyecto en proceso.
Como vereis no tiene fondo y los malos aun no estan coloreados porque aunque vaya a hacerlos con ese estilo que recuerda a los pixels de los pcs antiguos (y en realidad son pixels dibujados uno a uno) quiero darles color y no que sean como estan ahora [jaja].
Y tambien decir que el prota que dispara no seran solo eso cuatro pixels. En la demo ya hare que dispare el prota y la deteccion de colision. Ahora mismo solo me falta eso y algunos detalles mas para conseguir calcar el original.
Muchas gracias.

Imagen

Pd:Txurrito no soy tan bueno, si lo fuera esto ya estaria acabado XD pero muchisimas gracias tio [oki]
oye KFR, he estado siguiendote y veo que estas haciendo homebrew.. tengo un hermano que le gusta un montón el tema este y con la advance ya ha echo varios hackroms.. estoy seguro que si me dices más o menos que programas necesito para empezar a trastear, puede que podamos echar una mano en lo que se pueda [fumando]
Saludos y hasta la próxima
si necesitas ayuda contacta conmigo ;) un saludo.
Hola.
Primero decir que me encuentro un poco atascado por problemas de codigo y falta de recursos con estas librerias.
Ayudas que necesitaria:
*Si alguien sabria con las librerias OpenGC o GCC hacer un random que devuelva valores entre dos rangos determinados. (en las OpenGC esta la lib. Random.h pero no llego a entender su funcionamiento)
*Algun funcion como "delay" que permita detener un proceso durante determinado espacio de tiempo. Aunque sea mediante algun lib. de time etc...

A ver para mota..voy a intentar explicar los medios que puede usar.
Principalmente los programadores mas avanzados suelen hacer uso de Codewarriors de Metrowerks el cual es un software de uso oficial y sus plugins no se pueden usar sin la licencia de Nintendo por lo cual igualmente tendrias que usar las librerias gratuitas.
Luego tambien puedes optar por una de las mejores opciones y mas completas, esta es el proyecto DevkitPro alojado en sourceforge
http://sourceforge.net/project/showfiles.php?group_id=114505
donde te tienes que bajar el archivo "devkitPro Updater 1.2.1" y al ejecutar este podras elegir que programas descargarte e incluso si quieres que se autoinstalen.
En si Devkitpro no tiene gui por lo cual en el paquete viene incluido un buen editor hexadecimal del estilo de bloc de notas.
La siguiente opcion es mas facil y comprensible ademas de igual de potente dado que esta basada en la misma arquitectura de la serie devkit pero mas especializada para GC y homebrew y sin tanto lio de diferentes programas y carpetas, es para lo que es, nuestro cubito [amor].
Me refiero a la ultima opcion (bueno tambien puedes hacer uso de linux pero creo que para la mayoria esa opcion sobra) que es la de bajarse estos tres archivos:
DevkitCube r-1: (es la ultima version salida de este compilador)
http://www.dextrose.com/files/gc/compiler/devkitcube-r1.zip
Librerias OpenGC: (no es la ultima version pero hay pocas diferencias y es la mas fiable ademas de ser la unica que incluye el mini.programa bin2dol que se necesita para compilar y convertir a *.dol)
http://www.dextrose.com/files/gc/source/libogc-2003-06-22.zip
Dolwin 0.10: (emulador que viene de perlas para probar los *.dol)
http://dolwin.emulation64.com/downloads/Dolwin010.rar

Y para cualquier caso recomiendo descargar un muy buen ejemplo en el cual basarse: El pong de DesktopMan:
http://www.dextrose.com/files/gc/source/gc/pong.zip
-----------------------------------------------------------------------

Como configurar y usar la opcion de Devkitcube con el codigo del juego de ejemplo Pong:
1-Extraer el contenido de devkitcube, libogc-2003-06-22, pong a la carpeta c:\gc\ (sin variar nombre [a menos que no sean igual que estos tres] ni si quiera quitar esa fecha porque sino vais a tener que modificar el make.bat)
2-Ve a la carpeta c:\gc\pong\ y edita de la siguiente manera el archivo pong.c que es el codigo fuente del pong:
Estos ya existen...
#define COLOR_WHITE 0xFF80FF80
#define COLOR_BLUE 0x1DFF1D6B
#define COLOR_RED 0x4C554CFF
pues añade este tambien..
#define COLOR_BLACK 0x10801080

Cambia las librerias por estas que son las que vas a usar. (OpenGC)
#include "..\libogc-2003-06-22\lib\types.h"
#include "..\libogc-2003-06-22\lib\video.h"
#include "..\libogc-2003-06-22\lib\memory.h"
#include "..\libogc-2003-06-22\lib\pad.h"

(Linea79) Cambia...vidInit (VID_MODE_640_480_PAL_60_YUV_16)...por esta...VIDEO_Init (VIDEO_640X480_PAL60_YUV16);
(Linea 80) Cambia...vidSetFrameBuffer((u32)fb)...por esta...VIDEO_SetFrameBuffer (VIDEO_FRAMEBUFFER_BOTH,(u32)fb);
(Linea 98) Cambia...vidWaitRetrace()...por esta...VIDEO_WaitVSync();
Ahora solo falta compilar el pong con nuestras librerias y cambios en la configuracion de modo de video para adecuar el juego a estas.
Para ello crearemos el archivo MAKE.BAT
@ECHO OFF

SET DEVKITCUBE=c:\gc\devkitcube
SET PATH=%DEVKITCUBE%\bin;%PATH%
SET PROGNAME=pong <--NOMBRE DEL DOL QUE SE CREARA AL COMPILAR

powerpc-eabi-elf-gcc -o %PROGNAME%.elf -Wl,-Ttext,0x80003100 -o %PROGNAME%.elf ../libogc-2003-06-22/crt0.s main.c ../libogc-2003-06-22/lib/pad.c ../libogc-2003-06-22/lib/video.c ../libogc-2003-06-22/lib/render.c ../libogc-2003-06-22/lib/audio.c ../libogc-2003-06-22/lib/color.c ../libogc-2003-06-22/lib/debug.c ../libogc-2003-06-22/lib/dvd.c ../libogc-2003-06-22/lib/interrupt.c ../libogc-2003-06-22/lib/random.c ../libogc-2003-06-22/lib/memcard.c
if ERRORLEVEL==1 goto error

powerpc-eabi-elf-objcopy -O binary %PROGNAME%.elf %PROGNAME%.bin
if ERRORLEVEL==1 goto error

"..\libogc-2003-06-22\bin2dol.exe" %PROGNAME%.bin %PROGNAME%.dol
if ERRORLEVEL==1 goto error

goto end

:error
echo [FATAL ERROR]

:end
Ahora yo recomiendo hacer uso del simbolo de sistema o ventana de msdos (aunq en realidad no sea msdos :D por si alguien me salta [looco]) y asi podras ver los errores cuando compiles dado qeu si para compilar pulsas con el raton sobre make.bat tras compilar o dar error no se detiene y se cierra y no puedes ver los mensajes de error etc.

Creo que con esto tienes todo lo necesario y mas para programar para GC, espero que la peña se anime y que ademas asi podamos ayudarnos. Yo si preguntais dudas de como poder hacer tal cosa os ayudare encantado. [oki]

Pd: Me quedao consolao [fumando]
No, KFR... no estoy en nada!. Como dirían los colombianos: ¡Qué man pa' saber! [tadoramo]
Recomiendo mucho mucho mucho, ahora que lo estoy probando, el uso del editor hexadecimal que puedes descargar como ya he dicho de
http://sourceforge.net/project/showfiles.php?group_id=114505
el cual tiene muchas opciones como lista de etiquetas para diferentes lenguajes, coloreado de texto etc.. pero la mas util que veo yo en mi opinion, es la de que al lado de cada funcion tienes un pequeño icono del tipo de los exploradores de carpetas y puedes cerrar o abrir las funciones para poder centrate mejor en la parte que estes trabajando y como se agradecer no tener que andar subiendo bajando, buscando... [tomaaa] lo recomiendo de verdad.

----------------------------------------------------

Pd: ya que no puedo de momento poner la demo pongo aqui una captura de como va el tema, esta claro que con ello no se ven los adelantos del codigo pero todo llegara. [beer]
Imagen

Pd2: Mis marcianos ya disparan, tras leerme directamente las librerias de OpenGC y buscar un poco de informacion acerca de las formas generales de crear randoms en C# y C++, he conseguido hacerlo y mis marcianos ya disparan, solo me queda perfeccionar la funcion dado que tiene sus problemillas [looco].

Cada vez mas cerca XD!!!
Hola! Me podrías decir si las mismas herramientas o parecidas las hay para linux? Yo hago cositas para la GP32 y ahora para la GP2X y me apaño bien con el gcc y cosas similares, supongo q el devkit será más o menos igual. Si necesitas ayuda en algo de programación aquí me tienes (Aunq aún no se demasiado ;))
Gracias de antemano y un saludo!
Es increible lo que hacemos los herradores :Ð
¿Que fue del juego? Parecia estar bien... ¿se puede descargar de algun sitio? ¿y el source?
Hola [chiu]
Despues de unas peazo vacaciones volvemos a currar con ganas y a atender los hobbies que dan cierta pereza, como programar xD.
Iba a seguir el proyecto que tengo pero me he apuntado a tu concurso 160R y espero quedar bien y no presentar una mierda, por eso mismo como ha de ser para 8 jugadores pues voy a comenzar un proyecto nuevo.

A ver que te parece cuando te lo presente para evaluar :p

Ciao [oki]
Me alegra que la Scene aun no haya muerto...hace tiempo no me pasaba por aqui. [360º]
La verdad es que el Foro de la Scene de Gamecube deberian separarlo en 2 partes....una q sea Scene y otra q se llame Carga de backups. [sati]
Por fin un hilo interesante de Scene entre tanto "me da DREs" "Bajo el pot?" "¿que dvds uso?"...

Yo no tengo mucha idea de programacion y menos de gamecube, pero todo es ponerse. Seria interesante un minituto...
jevilon escribió:Por fin un hilo interesante de Scene entre tanto "me da DREs" "Bajo el pot?" "¿que dvds uso?"...

Yo no tengo mucha idea de programacion y menos de gamecube, pero todo es ponerse. Seria interesante un minituto...


Completamente de acuerdo, o como se dice ahora:

+1
Alguien sabe como hacer para animar los personajes?? me refiero a que moverlos de lado a lado (arriba, abajo, diagonales..) ya se pero no se me ocurre como hacer para que por ejemplo hagan una animacion tan simple como la de los malos de space invaders, que solo tenian dos posiciones. Espero que alguien me puede ayudar.

Gracias de antemano [oki]

Creo que ya se me ha ocurrido un metodo pero tengo que mirarlo mas a fondo xD
En cuanto termine mi juego que voy a presentar, lo pondre a disposicion de todos junto con el codigo fuente y he de decir muy orgulloso de mi mismo [looco] que estoy poniendo la mayor cantidad de explicaciones que creo necesarias, para que cualquiera pueda entenderlo con facilidad y poder usar partes del mismo o modificarlo.

Por cierto, en el hilo "Homebrew,Librerias,Compiladores,Ayuda..." he añadido una lista de manuales que ira creciendo y si quereis colaborar con direcciones, etc.. se agradecera.
20 respuestas