Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Generic Game Engine (video)

Iniciado por adrigm, 14 de Febrero de 2012, 01:31:00 AM

« anterior - próximo »

adrigm

Hola, os presento el proyecto en el que estoy trabajando. Se trata de un Game Engine para juegos 2D genérico, la idea es que sea un Engine genérico para todo tipos de juegos 2D. Estoy Porgramandolo en C++ sobre la biblioteca gráfica SFML, por la idea es que sea multiplataforma.

La idea es hacer un diseño Modular con modulos para lo gráficos, IA, física, etc y según las necesidades se carguen unos módulos u otros.

No lo hago por revolucionar el mercado, ni para que lo use todo el mundo hay engines por ahí ya acabado y mucho mejores. La idea es aprender haciendolo.

Ficha

- Nombre: Generic Game Engine
- Licencia: GPL
-  Web: http://razonartificial.com/GGE/
- Repositorio: https://github.com/adrigm/Generic-Game-Engine
- Lengua: C++
- Bibliotecas: SFML, Box2D, PugiXML, etc. (todas libres).


Características

- Modular. Diferentes módulos según necesidades
- Multiplataforma. Windows, MacOS, Linux.
- Gestión de Escenas. Se puede cambiar de un menu a un mapa del juego con una simple línea
- AssetManager. Carga fácil de recursos, por ahora estan implementados los siguientes:
   - Imágenes. png, bmp, gif, jpg, etc.
   - Sonidos. mp3, ogg, wav, etc.
   - Fuentes tipográficas TTF
   - Archivos de configuración. .ini, .cfg.
   - Mapas TMX - Del Tiled Map Editor -> http://www.mapeditor.org/
- Scroll Parallax
- Dibujado de Mapas
- Clases de Actores y Sprites

Aún hay muchas cosas en pañales pero aquí tenéis una demostración de uso. Se muestra el funcionamiento de los mapas y el scroll. Aconsejo verlo en HD y a pantalla completa para ver los comentarios que voy poniendo en el código.

http://www.youtube.com/watch?v=tudPj9tqPgE

La idea es implementar muchas otras cosas como física a través de Box2D, un módulo de IA con clases de Pathfinding, Modolo de GUIs, etc

Colabora

Hay varias formas de colaborar en el proyecto, no solo desarrollando el engine sino haciendo test de las funciones, escribiendo juegos de ejemplo o simplemente desarrollando un proyecto. Si te interesa alguna de ellas por favor, mandame un correo a: adrigm.admin@gmail.com o escribeme por el foro.

Conviértete en desarrollador

Si sabes programar en C++ a un nivel aceptable y dispones de tiempo y ganas tienes todo lo necesario para convertirte en desarrollador.

Los desarrolladores trabajamos codo con codo en desarrollar el engine, tendrías apoyo de los demás y sería una buena forma de aprender. Puede ser no solo escribiendo código sino escribiendo documentación haciendo test en otros Sistemas Operativos y depurando y encontrando fallos.

Crea tu proyecto con GGE

Si vas a empezar un proyecto y te ha interesado la biblioteca SFML o estás buscando un framework fácil de usar nuestro proyecto es una opción, estas son las ventajas.

  - Documentado totalmente en español.

   - Ayuda por parte de los desarrolladores. Como es una framework aún en desarrollo queremos trabajar codo con codo con gente que use el framework en proyectos reales para ir añadiendo funcionalidades que vayan haciendo falta y ver las rutinas más necesarias.

   - Fácil e intuitivo. Tu preocúpate de la lógica que de las tareas engorrosas se encarga el framework.

Crea ejemplos y aprende a programar

Si te estás iniciando en el desarrollo de videojuegos este framework te ayudará a dar los primeros pasos. Los desarrolladores te ayudaremos en todo lo que necesites en tus primeros juegos simples como Pongs, Space Invaders, etc. Así nosotros vamos añadiendo juegos de ejemplo a la web que puedan servir a los demás para aprender. Todos ganamos.
http://razonartificial.com/ - Blog personal sobre desarrollo de videojuegos

XÑA

¡Me ha encantado el vídeo!  :D
Super claro, conciso....¡una pasada! ¡Buen trabajo!

Cuando he visto el código en C++, me ha recordado un montón a los tiempos de antes!!!

Sigue así, que está genial!!!  :o

adrigm

¡Gracias! Era lo que pretendía mostras lo que se podía lograr con unas pocas instrucciones, para que el usuario se concentre en la lógica del juego y deje las tareas pesadas de gestión de recurso, dibujado, etc al engine.

¿Los tiempos de antes C++? Jeje será que ultimamente hay mucho Unity, XNA, HTML5... Pero creo que en la industria profesional fuera del Indie C++ sigue estando el primeros.
http://razonartificial.com/ - Blog personal sobre desarrollo de videojuegos

XÑA

Me ha gustado mucho lo del AddDirectory para los Assets. Es lo que yo hacía, y es fantástico.  :o

Gallo

#4
Yo creo que lo de los motores y desarrollo propio de tecnología con C++ está 50/50 en todos los niveles de profesional o indie. Las pequeñas empresas y/o freelance tiran mucho de Unity y pequeños frameworks como cocos2D, los grandes estudios si que desarrollan su propia tecnologia en C++ y en el mundo indie, hay de todo, gente haciendo su motor, usando un framework intermecio o usando motores como Unity o UDK.

A mi me gusta mucho C++ pero es una lacra que no sea managed como C# u Objective-C, y despues está una cosa que se ejemplifica muy bien en tu motor, que cada uno escribe el código como le da la gana, parece que en los otros lenguajes esto no pasa tanto, no hay tantas maneras de hacer las cosas, y suelen ser mas simples en cuanto a código.

Por ponerte un ejemplo me volví mico para intentar reproducir en  C++ lo que en Objective-C son las NSInvokation, esta funcionalidad permite guardar una llamada a un método, con los parámetros y tal, para llamarla mas tarde, muy útil para crear llamadas que se lanzarán en X segundos, o listeners/delegates, pero me fue imposible reproducirlo en C++, encontré una solución en el Gems 7 y era con assembler y tenias que imlpementar el tratamiento de cada tipo que fueras a utilizar, inutil total a noser que vayas a usar solo ints, chars, y floas y los que tengas ganas... Desarollé una solución medio funcional en C++11 que estába limitada a un numero de parámetros en concreto, los variadic template parameter y las std::tuple<> no son tan chachis como parece, y además estaba obligado a ocultarlo todo con varias macros pq el código era aberrante.

La manera normal de hacerlo requiere crear una clase por cada tipo de llamada que se quiera hacer, lo que se traduce en montones de lineas de código para algo que en Objective-C se hace en una linea. Este tipo de cosas muy fáciles en lenguajes modernos siguen sin existir en C++, en este caso que he mencioando se trata de clases de Reflection que al final no fueron introducidas en C++0x, y esa es otra que cada compilador implementa la spec de c++ como le da la gana.


[EX3]

Mola. Hacia tiempo que no aparecia un proyecto de motor/framework por aqui, otro mas a la familia "stratera-motera" :D

Me ha gustado el video demostracion con el codigo a la vista, y un gran acierto no caer en la tentacion de hacerte herramientas propias como mas de uno hemos caido en su momento (yo todavia me tengo que aplicar el cuento :P)

Animo y adelante con ello :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

eglomer

Hola Adrigm! Cuánto tiempo sin verte (desde que creagames desapareció...). Me alegro de que el proyecto de crear un motor gráfico que propusiste lo hayas llevado adelante (y con muy buena pinta :P). Lástima no poder decir lo mismo del juego del granjero.

Saludos y ánimo con esto ;)

adrigm

Gallo, yo creo que la clave está a lo que se quiere dedicar uno. Cada uno debe elegir su campo, en el mundo indie está bien hacer un poco de todo que si trabajo con programación, que si con gráficos, etc. O en equipos mas "profesionales" ya si se dividen roles pero sigue habiendo un grafista que te hace tanto concept art como modelos 3D o un programador que se encarga tanto del Game Engine, como de la IA como de la lógica del juego.

Si te quieres dedicar a esto profesionalmente hay que empezar así tocar todas las áreas un poco, ver cual te gusta más e ir especializándote en ella. Si te quieres dedicar al desarrollo de algún engine no te basta con usar cosas como Unity o Cocos2D, tienes que meterte tu a programar a bajo nivel. Por ejemplo a mi el tema que me gusta es la programación de Inteligencia Artificial en videojuegos, pero quiero aprender un poco de todas las áreas también y conocer los lenguajes y la forma de trabajar de la industria. Actualmente soy estudiante de Ingeniería Informática y la idea es al terminar hacer un master de videojuegos. Me llama el de la Complutense, pero ya se verá llegado el momento.

A lo que iba, muchas vece se ve gente que se quiere dedicar a esto profesionalmente y lo que se dedican es aprender a usar una herramienta en concreto que nos facilita hacer el juego, yo soy de los que cree que eso está bien cuando ya sabes, pero si estás aprendiendo creo que lo ideal es tocar un poco de todo e ir aprendiendo como funcionan las cosas como se cargan y ejecutan a bajo nivel, es importante que un programador sepa que está haciendo la máquina aunque luego use Framework y herramientas que le hagan la carga de recursos y demás transparente. Es como si un animador 3D se mete a usar un programa de animación aprende a usarlo y a hacer animaciones, pero no tiene ni idea de animación clásica.

[EX3] Lo he pensado en hacer mis propias herramientas como editores de mapas y demás, pero por el momento prefiero usar herramientas ya hechas y centrarme en el engine. Cuando esté más maduro quizás pueda añadirle editores propios o algún plugin para editores libres como el Tiled Map Editor que uso actualmente.

Eglomer, cuanto tiempo amigo, sí, yo seguí con el proyecto que propuse en su día en el que todo el mundo decía sí, sí vamos a hacerlo y nadie hacía nada. Una lástima, pero había allí mucha gente que no tenía ni idea de donde se metía. Un saludo.
http://razonartificial.com/ - Blog personal sobre desarrollo de videojuegos

adrigm

Buenas, he desarrollado una pequeña web para el engine, donde poner la documentación características y demás.

http://razonartificial.com/GGE/

La idea del post es mostrar la sección Colabora, por si alguien está interesado en colaborar en el proyecto:

Hay varias formas de colaborar en el proyecto, no solo desarrollando el engine sino haciendo test de las funciones, escribiendo juegos de ejemplo o simplemente desarrollando un proyecto. Si te interesa alguna de ellas por favor, mandame un correo a: adrigm.admin@gmail.com o escribeme por el foro.

Conviértete en desarrollador
Si sabes programar en C++ a un nivel aceptable y dispones de tiempo y ganas tienes todo lo necesario para convertirte en desarrollador.

Los desarrolladores trabajamos codo con codo en desarrollar el engine, tendrías apoyo de los demás y sería una buena forma de aprender. Puede ser no solo escribiendo código sino escribiendo documentación haciendo test en otros Sistemas Operativos y depurando y encontrando fallos.

Crea tu proyecto con GGE
Si vas a empezar un proyecto y te ha interesado la biblioteca SFML o estás buscando un framework fácil de usar nuestro proyecto es una opción, estas son las ventajas.


   - Documentado totalmente en español.

    - Ayuda por parte de los desarrolladores. Como es una framework aún en desarrollo queremos trabajar codo con codo con gente que use el framework en proyectos reales para ir añadiendo funcionalidades que vayan haciendo falta y ver las rutinas más necesarias.

    - Fácil e intuitivo. Tu preocúpate de la lógica que de las tareas engorrosas se encarga el framework.

Crea ejemplos y aprende a programar
Si te estás iniciando en el desarrollo de videojuegos este framework te ayudará a dar los primeros pasos. Los desarrolladores te ayudaremos en todo lo que necesites en tus primeros juegos simples como Pongs, Space Invaders, etc. Así nosotros vamos añadiendo juegos de ejemplo a la web que puedan servir a los demás para aprender. Todos ganamos.
http://razonartificial.com/ - Blog personal sobre desarrollo de videojuegos

Darago_malaga

Cita de: adrigm en 15 de Febrero de 2012, 05:17:32 PM
Eglomer, cuanto tiempo amigo, sí, yo seguí con el proyecto que propuse en su día en el que todo el mundo decía sí, sí vamos a hacerlo y nadie hacía nada. Una lástima, pero había allí mucha gente que no tenía ni idea de donde se metía. Un saludo.

Yo también me acuerdo de creagamers. de vez en cuando sigo metiendome a ver si termina de re-arrancar. Fue una lastima que no fucionara lo del proyecto started. Con tu motor hacer el juego del tractor seria coser y cantar.

Saludos a los dos.






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.