2012-07-27 20 views
5

Me doy cuenta de que la pregunta anterior es bastante amplia, así que la reduciré. Tengo un motor de juego openGL C++ simple que vive en una biblioteca estática (podría convertirse en una lib dinámica).La mejor manera de portar el juego C++ a la web

He estado pensando en la forma de hacerlo funcionar en la web. Por lo que puedo ver, podría usar ActiveX o Google NaCl para ejecutar el código de C++ en el navegador. Pero estas tecnologías no parecen fáciles de cruzar plataforma? O tal vez he entendido mal.

Otra opción que he visto es convertir el motor a javascript y WebGL y ejecutarlo en un lienzo de HTML5. ¿Sería esto más lento que C++? Sin embargo, sería muy cruzado.

¿Cuál cree que es la mejor opción, o mejor aún, hay alguna otra opción que me haya perdido?

EDITAR: ¿qué tal un plugin personalizado similar al de la unidad webplayer?

+0

Me temo que no hay una manera simple y portátil de hacerlo. Las tecnologías involucradas difieren demasiado. Sé que Quake III fue "portado" a la web, pero creo que tuvieron que reescribir una gran cantidad. – ereOn

+0

Entonces, ¿tengo que escribir una versión diferente para cada navegador web si tuviera que usar tecnologías de tipo ActiveX? – Constan7ine

Respuesta

4

En realidad, hay varias tecnologías para ayudar con esto. Esto es tres que he correr a través, pero tienen un mínimo/ninguna experiencia con:

+0

Marmalade se ve genial! ¡Muchas gracias! – Constan7ine

+0

Emscripten parece interesante: realmente puede compilar el código C++ en Javascript. –

5

Hay una biblioteca creada por @kripken que todavía está en desarrollo. Toma el código de bits LLVM y lo convierte a Javascript.

Aquí puede ver la página del proyecto, con ejemplos de trabajo. https://github.com/kripken/emscripten/

1

Si quieren algo portátil en un navegador, entonces tiene que confíe en Javascript (y probablemente en WebGL, aunque IE no es compatible).

ActiveX y NaCL simplemente no son portátiles en ningún modo, forma o forma.

No puedo decir cuál es más fácil, pero usted tiene la opción de volver a escribir su juego en Javascript, o usar una herramienta como Emscripten para compilar su C++ a JavaScript.

Tenga en cuenta que si utiliza este último, todavía no es una bala de plata. Es probable que deba realizar muchos cambios en el código (por ejemplo, porque las bibliotecas y API utilizadas en su juego C++ no estarán disponibles en el navegador)

+0

Tenga en cuenta que PNaCL es perfectamente portátil. Actualmente para X86 (-32, -64) y ARM, pero se puede extender a otras plataformas ya que está basado en el código de bits LLVM. En lo que respecta al sistema operativo, actualmente funciona en: Linux, Mac, ChromeOS, Windows ... Todavía no se encuentra actualmente en el móvil (sin embargo, no veo las barreras técnicas, parece una cuestión de tiempo). Como la pregunta no está enmarcada si se trata de escritorio/dispositivo móvil o simplemente compatibilidad entre escritorios, yo diría que es portátil multiplataforma: http://stackoverflow.com/a/11685887/544721. –

3

Sugiero encarecidamente que se transfiera a NaCl.

Ventajas:

  1. Rendimiento: Puede utilizar toda la potencia de la CPU para procesar su juego. Si su juego utiliza buenos gráficos o física en 3D, puede hacer que se vea uniforme incluso en las configuraciones de sistema anteriores. El rendimiento de NaCl es comparable al de las aplicaciones nativas del sistema operativo, solo pierde casi del 5 al 10% de FPS cuando comparé el mismo juego con la versión de Win32.
  2. Hay muchos ejemplos ya creados, juegos para NaCl que pueden ayudarte a hacerlo fácilmente.
  3. Ya es multiplataforma. Chrome se ejecuta en Windows, Linux, Mac OSX.

Desventajas:

  1. usted podría tomar alrededor de una semana para el puerto. Debe realizar un puerto a OpenGL ES 2.0 (sin embargo, debería ser el mismo con cualquier método basado en el navegador, especialmente HTML5)
  2. Se ejecuta solo en Chrome.
+1

He transferido Irrlicht Rendering Engine a NaCl y el rendimiento es muy bueno en comparación con el rendimiento de cualquier juego basado en JavaScript. – codetiger

Cuestiones relacionadas