Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Framework WebGL

Iniciado por Gallo, 28 de Junio de 2012, 04:26:48 PM

« anterior - próximo »

Gallo

Hola, estoy trabajando en un proyecto de HTML5 con Canvas y WebGL. El proyecto consiste en un framework para hacer juegos 2D aprovechando la aceleración por hardware y el acceso a la api de OpenGL ES 2.0 que brinda WebGL. La implementación marcha bien pero no se muy bien como llevarlo como proyecto comercial, es decir, ha de servir a otras personas y a mi para crear juegos pero, ¿se le puede sacar partido de alguna manera?

Demo con boxd2 here: http://virtualcraft.net/wgl/

Las features por el momento son:

- Compatible con Chrome, Firefox, Safari (modo desarrollo) y testeado en UIWebView del framework de iOS, en el cual funciona con un hack que activa WebGL pero no oficialmente (por ahora).

- Gestión de la escena: agregar una imágen es tan facil como ejecutar
var aImage = new Smasher.TexturedQuad('imagen.png');
aStage.addChild(aImage);

- Animación de propiedades: Se puede animar cualquier propiedad numérica en el tiempo con una sola llamada sin actualizar manualmente en cada frame.
ej:
var tween = new Smasher.Tween(sprite, 0.5, Smasher.Transitions.easeInOutBack);
tween.scaleTo(1.7);
tween.animateProperty(sprite.$unapropiedad, 7);
juggler.addObject(tween);
Escalará el objeto sprite y sus hijos a 1.7  y animará la propiedad sprite.unapropiedad hasta que alcance el valor 7 durante 0.5 segundos con el efecto easeInOutBack.

- Llamadas a métodos con timers: permite crear una llamada a un método con una serie de valores y el tiempo que debe tardar en llamarse. Estos timers no son los de javascript, si no que usan el game loop creado por el framework, si el juego se pausara, la llamada también.
ej:
juggler.delayInvocation(aObj, aObj.doAnything, 63, 2.5);
llamará aObj.doAnything(63); al cabo de 2.5 segundos

juggler.delayInvocation(aObj,[aObj.doAnything,aObj.doOther],[[3,[4,8]],'abs'], 4.2);
llamará a aObj.doAnything(3,[4,8]); y  aObj.doOther('abs'); al cabo de 4.2 segundos

- Input transparente: Fácil lectura del input usando el mísmo código en cualquier navegador o dispositivo iOS.

- Colisión/hit-test básico.

- Interfaz amigable para agregar shaders y buffers propios, el actual Smasher.TexturedQuad hace uso de ello como si de un añadido externo al framework se tratara.

- Construido sobre google closure library y compatible con el builder, cualquier aplicación compatible con google closure builder puede ser compactada a un solo bloque de código optimizado, comprimido y ofuscado.

- Salvo google closure no tiene ninguna otra dependencia.

- Ya hay creados una serie de .bat/.sh para facilitar la construcción del archivo "compilado" así como un prototipo de interfaz web que sirve como front-end para gestionar y compilar proyectos sin pasar por consola.


El proyecto empezó como un port de Sparrow Framework a javascript (de Objective-C), y el resto de features planeadas son más o menos las mismas que posee dicho framework, sonido, sprites animados, sistema de partículas, render to texture, text rendering, etc... además de algunos añadidos como el tema shaders y aprovechar los elementos de html5 para hacer parte de la interfaz y no cargar tanto al renderizar.

La idea como ya he dicho a parte de para hacer juegos es sacarle algún partido, ni que sea reconocimiento. Creo que el usuario ha de tener acceso al código si o si, no lo digo por que sea un impedimento, ya que podría ponerlo como un servidor y compilar contra el, pero creo que es mejor para el usuario del framework si puede tener acceso al código fuente para comprender que hace aquello que está utilizando así que u open source o licencias de código.

Otra posibilidad que había pensado es crear un editor de niveles o una serie de herramientas que sean de pago mientras el código del framework es open source, yo he sido usuario de cosas así y es bastante cómodo ya que pagas por lo que necesitas y puedes probar el framework e incluso publicar cosas hechas con el sin pasar por caja, es bastante más atractivo, gana popularidad más fácilmente si es open y estás más dispuesto a pagar por algo que ya has podido comprobar que funciona.

Sugerencias de como llevar el proyecto en términos de si open source, licencias, servicios o que y de como mejorarlo o críticas de cualquier tipo son bienvenidas, me hubiera gustado enseñar una demostración más completita pero de momento es lo que hay, lanzo la sonda a ver que tal.

XÑA

Pues está muy chulo!!! Enhorabuena!  :D






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.