Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Demo de Megaman

Iniciado por Lustrike, 31 de Enero de 2015, 05:19:32 PM

« anterior - próximo »

Lustrike

¡Hola!

Es la primera vez que expongo algo en esta parte del foro, y en general, a gente que sabe desarrollar videojuegos.

Llevo muy poco tiempo intentando hacer videojuegos, y todo lo que he hecho hasta ahora, está hecho en Java y sin librerías para ello. Por lo que quería pedir opinión sobre lo que he hecho y sobre qué camino tomar ahora. Es decir, he hecho varias cosas en Java que me dan una idea de como funciona toda la mecánica de un juego, y me gustaría dar el salto a algo del estilo de Unity (dado que sé Javascript) o GameMaker, pero no estoy seguro de si debería probar algo más en concreto por mi cuenta antes de dar el paso a uno de estos 2.

Por lo que me gustaría que probaráis la siguiente demo de Megaman que he hecho y me diaráis vuestra opinión al respecto. Soy consciente de que muchas de las cosas hechas, están mal o no son la mejor vía; pero poco a poco iré mejorando.

Para hacer la demo me he basado en la primera pelea de Megaman contra Bass en Megaman 7:


http://youtu.be/PNnIMXfnaFw?t=5m8s


Y aquí está mi resultado haciendo la demo:


http://2.bp.blogspot.com/-fIvvblYv2uo/VMzRRMOjNgI/AAAAAAAAAcw/G6vd2IMveU0/s1600/demo%2B1.png

http://1.bp.blogspot.com/-p4nYXjSxAAU/VMzRRH51FsI/AAAAAAAAAc4/3mkG7MKRJ3U/s1600/demo%2B2.png


Si queréis probarlo y dar vuestra opinión aquí tenéis el .jar (tenéis que tener Java instalado):


https://www.dropbox.com/s/plun81odzn3cabz/Megaman.jar?dl=0


Controles:

- Moverse:     Teclas de dirección del teclado.
- Saltar:          A.
- Disparar:      S.
- Deslizarse:    Abajo y A.


¡Muchas gracias a todo aquel que lo pruebe o me de su opinión!

Lustrike

¿Nadie puede iluminarme un poco? Sería de agradecer.

Gallo

Buenas, está bastante bien para ser un primer jueguecillo, se agradece que hayas hecho algo multiplataforma para el que no tenga windows pueda probarlo, un puntazo, pero como el juego en si tampoco me transmitia mucha informació lo he decompilado para darte algunos consejos de programación.

Parece que el concepto lo has pillado bastante bien, al menos en lo que a actualizar y pintar una escena 2D por lo que he podido ver en el código, y solo usando funciones de pintado de la libreria AWT de Java, muy bien. Como observación, has usado bien la orientación a objetos pero en cierto punto parece que te has rajado y en la clase Juego has roto mucho la encapsulación y es un poco popurrí de todo, cada clase que hereda de Elemento puede contener un método de pintado y saber como pintarse ella misma, de hecho Elemento mismo podría tener una versión genérica ya que la mayoría llaman simplemente al .drawImage de su recurso con propiedades que sacas de esa misma clase.

En cuanto al contenido veo que todos los frames de la animación de los personajes son un png separado. En videojuegos esto se tiende a optimizar utilizando un sprite map, una sola textura que contiene todos los frames, y a la hora de pintar simplemente pasas las coordenadas concretas de la región de la textura que quieres pintar. Te lo menciono no por que hayas cometido un gran error ni nada, solo que creo que es interesante de aprender como utilizar ese tipo de cosas por que son el pan de cada día.

Viendo que ya sabes programar y en mas de un lenguaje, creo que no hace falta que te ciñas a lenguajes que conozcas, pues en esto de los videojuegos todo es aprender, incluido nuevos lenguajes.

En la linea de lo que ya has hecho, yo te recomendaría Cocos2d-x, algo mas complejo y en C++, pero con un funcionamiento similar al que has implementado en esa demo, simplemente dando unos pasos mas. Cocos2d-x además tiene mucha documentación y en si muchas otras librerias y motores funcionan de forma similar. Lo que aprendas con Cocos2d-x te servirá en muchos otros entornos, y C++ es el lenguaje mas utilizado para hacer videojuegos (y aunque no fuera así es mi favorito XD).

Cocos2d-x: http://www.cocos2d-x.org

Te retaría a que intentaras hacer la misma demo exacta en cocos2d-x, a ver si te es fácil o no, intentando usar lo del sprite map como te mencioné :).

Si por otro lado prefieres ir con Unity, bueno es un cambio radical respecto a lo que has hecho, casi empezar de cero, mucho mas controlado por datos y por componentes, otra manera de trabajar vamos, pero también es una muy buena opción para ver cosas rápido.

Lustrike

¡Muchas gracias Gallo!

La verdad es que aún creo que tengo bastante caos mental a la hora de organizar las clases, dónde tiene que ir cada cosa o como hacer todo eso correctamente. Me imaginaba que habría puntos en ese aspecto mal. De hecho, hasta pensé aislar todos los método de pintado en una clase "Dibuja" o similar. Pero bueno, quien no tropieza alguna vez, no aprende tanto como el que tropieza.

Respecto a las animaciones, sí que sabía que usando un sprite map era muchísimo más optimo que lo que yo he hecho. Pero dado que nunca he usado uno, y no sabía por dónde cogerlo, he optado por la solución chapuza (para qué negarlo). En verdad, imaginaba que habría que hacer recortes a esa imagen e ir guardándolas en memoria para su uso posterior; pero también pensaba que era un poco cutre ir metiendo cada coordenada a mano. Pensé en un XML que lo almacenará o un fichero, pero creo que estaba mentiendome en temas un poco pantanosos para mí.

Me alegro que en cierta parte, haya gustado y que ciertas cosas vayan por buen camino. Creo que seguiré tu consejo y haré lo del Cocos2d-x. La verdad es que no tengo mucho tiempo ahora, pero intentaré mejorar los puntos que me has comentado. Cuando acabe iré a Unity.

Muchas gracias otra vez Gallo. Pronto traeré más ;)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.