Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Pepius en 03 de Agosto de 2011, 02:45:18 AM

Título: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 03 de Agosto de 2011, 02:45:18 AM
Hola,

Llevo cerca de un año desarrollando mi propio engine 2D. He llegado a un punto en el que está bastante maduro, funcionando bajo OpenGL, con soporte para scripting con Python, físicas (Box2D), sistemas de partículas, etc, además de una arquitectura extensible (basada en componentes).

El motor en si, recibe como entrada una escena definida en un formato de etiquetas (algo parecido a xml o html, bastante básico). Funciona a la perfección pero es un fuerte cuello de botella en el desarrollo de un juego el tener que editar a mano posiciones, atributos, etc. Hace tiempo ya que pienso en hacer un editor de escenas, donde el usuario pueda crear entidades y posicionarlas sobre el espacio 2D, editar sus atributos, añadir/eliminar componentes, etc, y creo que ha llegado el momento.

Mi pregunta es: Alguna recomendación? Es requerimento que el toolkit tenga soporte para una zona de dibujo de OpenGL y que pueda capturar eventos como clicks del raton y shortcuts para manipular los elementos del espacio 2D, amén de poder navegar por menus, editar atributos, etc.

Programo con C++ y tengo mi experiencia con ello, pero el mundo de las GUIs es totalmente ajeno a mi, y no se si decantarme por QT, GTK, o cualquier otro toolkit. El engine no es multiplataforma, funciona sólo sobre Windows, como dato.

Como podeis ver, voy bastante perdido en este tema, pero solo necesitaría unas cuantas directrices de por donde empezar a documentarme. Por supuesto, cualquier consejo, comentario o información es bienvenido.

Muchas gracias!

P.D: El proyecto es open-source, podeis visitar la página de google code al respecto: http://code.google.com/p/alegria-engine/
En la página principal hay un par de videos de pruebas, teneis todo el código hasta el momento y la wiki está en proceso (guia de usuario wip aqui http://code.google.com/p/alegria-engine/wiki/UserGuide (http://code.google.com/p/alegria-engine/wiki/UserGuide)). Si consigo tirar adelante el editor pronto tendreis más noticias mias!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: fjfnaranjo en 03 de Agosto de 2011, 04:07:52 AM
Hola Pepius.

Yo más que ha darte un consejo vengo a añadir aun más opciones a la lista que ya tendrás :P

Una cosa que puedes hacer, es introducir el interfaz en el juego, y no el juego en el interfaz. Es decir, en lugar de programar con GTK, etc.., lo que haces es mostrar los controles de una interfaz de usuario dentro del juego, con OpenGL. Esto te permite hacer un editor WYSWYG.

Por supuesto, no te voy a recomendar que te pegues el curro de hacerte un sistema de GUIs tu solo. ¡Hay muchos ya hechos en Internet que son libres!

Ala, coso añadido :P
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 03 de Agosto de 2011, 12:44:32 PM
Hola fjfnaranjo!

El tema es que no busco una interfaz para el juego en si, sino hacer un editor. Esto implica que voy a necesitar modelos de árbol y similares, y me parece un curro tremendo :D

Realmente es una opción y no la descarto (¿más opciones? ¡maldita sea!), pero creo que no es lo que estoy buscando.

Porcierto, pongo aqui un bocetillo que hice con el Gimp y GTK de más o menos por donde quisiera que fuera el editor:

http://i.imgur.com/Qyhu3.jpg

Un saludo!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: The_Dragon_Ladis en 05 de Agosto de 2011, 09:21:33 AM
Qt no es sencillo, es lo siguiente. Y viene preparado para OpenGL (incluso trae ejemplos de su uso) aparte de trabajar con C++.
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: nsL en 05 de Agosto de 2011, 10:24:42 AM
youtubeando un poco (verbo hermano de googlear), y basandome en la respuesta de The_Dragon_Ladis he visto este video http://www.youtube.com/watch?v=o2HCS2jCVZo para que te hagas una idea de que se puede hacer con Qt.

Ademas he visto que tiene un menu arriba de Engine -> Run. curioso :D
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 05 de Agosto de 2011, 01:25:11 PM
Justo me habiais pillado mirando tutoriales de QT, ahora me acabais de convencer :D.

Me parece que es lo que voy a elegir porque es bastante sencillo e intuitivo, con todo el tema del QT Creator, y los signals/slots que me parece la repera. Me he mirado como comentais el QGLWidget y es muy sencillote, de similar uso a GLUT, y me vendrá de perlas. Además, el tema ModelView no parece nada complicado y ya tengo en mente más o menos como organizar las estructuras de datos, así que, a no ser que pasara algo raro, me quedo con QT!

Mi idea inicial es hacer algo muy light, que me permita posicionar entidades y editar atributos y poco más, para así tener una herramienta con la que acelerar la creación de la primera demo (que llevo hechas a mano algunas partes ya y es un infierno) y además tantear el terreno. A posteriori ya haré algo más currado.

Sea como sea iré comentando cosas por aqui. Muchas gracias por vuestras respuestas y un saludo!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Mars Attacks en 05 de Agosto de 2011, 07:25:21 PM
Buena elección. Además, tienen un baile y todo: http://www.youtube.com/watch?v=NbTEVbQLC8s
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 05 de Agosto de 2011, 08:41:13 PM
...

Me pregunto si aun estoy a tiempo de usar GTK.  |:|

:D
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 30 de Septiembre de 2011, 12:14:49 AM
Buenas :D

Nada, me paso por aqui para decir que estoy ahora metido de lleno con esto de programar el editor de mi engine, con QT como comenté que iba a hacer, y la verdad me está gustando mucho. Ahora mismo estoy en una parte un poco tediosa, que es la de crear Widgets para todos los atributos de una entidad y tal (y aun me quedan...) y aun no me he metido con la integración de OpenGL, pero la verdad es que QT me está gustando un montón, pues es muy potente y fácil de utilizar, asi que lo recomiendo.

Os dejo un par de screenshots de el dialogo de edición de entidades, aun por terminar.
(http://i.imgur.com/urwwB.png)
(http://i.imgur.com/3HBGk.png)
Título: Re: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: josepzin en 30 de Septiembre de 2011, 07:26:33 AM
Ese Pepius! Desde 3dpoder que no te leia!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 30 de Septiembre de 2011, 03:34:38 PM
Hey josepzin :D Cuanto tiempo! Si, aun sigo por allí aunque más que nada porque conozco a la gente, pues no hago nada de 3D ya, solo programo :)  Y me acordé que había abierto este hilo y digo, voy a dejar constancia de que aun estoy con ello y que todo va viento en popa ^^

Un abrazo!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: josepzin en 30 de Septiembre de 2011, 04:19:46 PM
Yo tambien he dejado las 3D, la verdad es que tendría que visitar de vez en cuando 3DPoder, sigo teniendo mucho aprecio a la gente del foro.

¡Me alegra saber que sigues en accion!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Mars Attacks en 02 de Octubre de 2011, 10:23:22 PM
Ja, ja, ja, un recator :D

Cuánto tiempo ;)
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: josepzin en 02 de Octubre de 2011, 10:30:20 PM
Cita de: Mars Attacks en 02 de Octubre de 2011, 10:23:22 PM
Ja, ja, ja, un recator :D

Cuánto tiempo ;)

JAjajajaj!! Sólo falta el frotimars!!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 03 de Octubre de 2011, 03:32:52 PM
Jajaja! No me había dado ni cuenta, es el nombre que suelo utilizar cuando tengo que poner nombres random  ^_^'
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 03 de Noviembre de 2011, 10:22:19 PM
Buenas!

Sigo posteando aqui las actualizaciones. He terminado ya el dialogo de edición de arquetipos con todas las componentes. He cambiado también el aspecto y la manera de navegar, optando por usar iconos (por ahora provisionales, son ridículos, lo se! xD). Aqui os pongo una imagen:
http://i.imgur.com/JvL4x.png (http://i.imgur.com/JvL4x.png)

Además, he empezado a implementar el visor OpenGL. Ya soporta el pan (movimiento de la cámara) con el botón central del ratón, y muestra las entidades en alambre (aun no he implementado la carga de imágenes). Además muestran también que entidades estan seleccionadas (cambia el color, amarillo más claro). Lo que no soporta aun es la selección desde el visor, que tiene un poco más de miga el tema :) Os dejo otra imagen.
http://i.imgur.com/SzYWT.png (http://i.imgur.com/SzYWT.png)

Me reafirmo en lo de Qt, lo re-recomiendo :)

Seguiré poniendo avances, un saludo!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Gallo en 04 de Noviembre de 2011, 10:24:55 AM
No tengo experiencia en creación de editores pero si he sido usuario de varios y desarrollo mucho en javascript, así que te daré dos recomendaciones que mas o menos conozco:

- wxWidgets: muy usada y recomendada, multiplataforma, personalizable, libre, está en varios lenguajes, en fin, todo lo que necesitas, desconozco como está el tema de soporte, pero con lo extendida que está seguro que hay bastante. http://www.wxwidgets.org/

- Awesomium: este lo conozco por que es la libreria de interfaz gráfica del editor de Overgrowth. Esta libreria te da todo el poder del webkit (motor del chrome y safari) para que la incluyas en tu motor de render, algo similar a lo que hace scaleform con flash. Te permite utilizar html, javascript y css para pintar la interfaz de usuario y gestionar eventos, lo cual desde el punto de vista de alquien que sabe programar webs es genial. No es open source pero si multiplataforma, es de pago para proyectos comerciales y gratuito para proyectos no comerciales, en cuanto a licencias ciertamente no es la mejor opción pero en cuanto a lo "chulo" que te puede quedar todo y lo facil que es hacerlo (ya que seria como una web) si que lo es. Puede ser algo tediosa la parte de C++, lo desconozco. http://awesomium.com/
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 04 de Noviembre de 2011, 03:04:55 PM
Gracias por la respuesta, Gallo, pero hace tiempo que me decidí ya por Qt, por dos cosas: Lo potente a la vez que (relativamente) sencillo, y la enoooorme documentación que hay, es una pasada.

De todas formas guardo tus propuestas por si lo necesitara alguna vez, gracias!
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: Pepius en 30 de Noviembre de 2011, 10:39:51 PM
Sigo poco a poco. Ya están implementadas Rotaciones, Translaciones y Escalados desde el visor OpenGL (a parte de numéricamente), mediante shortcuts (R,G,S, como en Blender). Además ya está implementada la visualización de imágenes. No me queda mucho para terminarlo ya, en cuanto a funcionalidad :) Tansolo arreglarlo un poco (bastante) y terminar unas cosillas.

http://i.imgur.com/ZTavk.jpg

Un saludo
Título: Re: Interfaz gráfica para editor de un engine 2D.
Publicado por: KneDa en 27 de Diciembre de 2011, 04:14:13 AM
Ummm, es interesante todo este tema del interfaz gráfica, porque yo también estoy haciendo alguna que otra chapucilla aquí con Qt.

Y ahora estoy en la dificil parte de lidiar con el tema de sincronizar la parte del cálculo/procesado de datos para visualizarlos el GUI. Me explico, en este programilla se estarán haciendo cálculos intensivos de algunos datos dados unos ciertos parámetros pasados a través del GUI. Y mientras se esté ejecutando la simulación, el GUI no se debería congelar y se deberían de poder cambiar los parámetros en tiempo real... He visto lo que ofrece Qt más o menos pero no se muy bien por donde tirar.

A modo de resumen Qt ofrece:

IPC: TCP/IP, memoria compartida, D-BUS, comunicación de protocolos Qt.
Clases para gestionar procesos/threads.
Timers.

Alguno d vosotros ha tenido que lidiar con esto y me puede aconsejar? Pepius, en ese simulador 2d d físicas utilizas threads?