2012-07-27 40 views
5

Mi rendo conto che la domanda di cui sopra è piuttosto ampia, quindi la limiterò. Ho un semplice motore di gioco C++ opengl che vive in una libreria statica (potrebbe essere convertito in una lib dinamica).Il modo migliore per portare il gioco C++ sul web

Ho pensato a modi per farlo funzionare nel web. Da quello che vedo posso usare ActiveX o Google NaCl per eseguire il codice C++ nel browser. Ma queste tecnologie non sembrano facilmente trasversali? O forse ho frainteso.

Un'altra opzione che ho visto è la conversione del motore in javascript e WebGL e l'esecuzione in un canvas HTML5. Sarebbe più lento di C++? Sarebbe molto cross-platform però.

Qual è secondo te l'opzione migliore, o meglio ancora c'è qualche altra opzione che mi è sfuggita?

EDIT: che dire di un plug-in personalizzato simile al webplayer dell'unità?

+0

temo non v'è alcun modo semplice e portatile di farlo. Le tecnologie coinvolte differiscono troppo. So che Quake III è stato "portato su Internet", ma credo che abbiano dovuto riscriverlo molto. – ereOn

+0

Quindi devo scrivere una versione diversa per ogni browser web se dovessi utilizzare le tecnologie di tipo ActiveX? – Constan7ine

risposta

4

In realtà ci sono diverse tecnologie per aiutare in questo. Ecco tre che ho imbattuto, ma non hanno il minimo/no esperienza con:

+0

La marmellata sembra grande! Grazie mille! – Constan7ine

+0

Emscripten sembra interessante - in realtà può compilare codice C++ in Javascript. –

5

C'è una libreria creata da @kripken che è ancora in fase di sviluppo. Prende il codice LLVM e converte in Javascript.

È possibile visualizzare la pagina del progetto qui, con esempi di lavoro. https://github.com/kripken/emscripten/

1

se volete qualcosa di portatile in un browser, allora deve fare affidamento su Javascript (e probabilmente su WebGL, sebbene IE non lo supporti).

ActiveX e NaCL non sono portatili in alcun modo, forma o forma.

Non riesco a dire quale sia più semplice, ma hai la possibilità di riscrivere il gioco in Javascript o utilizzare uno strumento come Emscripten per compilare il tuo C++ in JavaScript.

Si noti che se si utilizza quest'ultimo, non è ancora un proiettile d'argento. Probabilmente dovrai apportare molte modifiche al tuo codice (ad esempio perché le librerie e le API utilizzate nel tuo gioco C++ non saranno disponibili sul browser)

+0

Si prega di notare che PNaCL è perfettamente portatile. Attualmente per X86 (-32, -64) e ARM, ma può essere esteso ad altre piattaforme in quanto basato sul codice bitmap LLVM. Sistema operativo saggio - attualmente funziona sotto: Linux, Mac, ChromeOS, Windows ... E 'solo non è ancora sul cellulare al momento (ma non vedo ostacoli tecnici, sembra questione di tempo). Come questione non è incorniciata se si tratta di desktop/cellulare o semplicemente compatibilità cross-desktop, direi che è è portatile cross-platform - http://stackoverflow.com/a/11685887/544721. –

3

Suggerisco vivamente di eseguire il porting su NaCl.

Vantaggi:

  1. Performance: È possibile utilizzare tutta la potenza della CPU per rendere il vostro gioco. Se il tuo gioco utilizza una buona grafica 3d o fisica, puoi renderlo liscio anche con le vecchie configurazioni di sistema. Le prestazioni di NaCl sono paragonabili alle applicazioni di sistemi operativi nativi, perdono solo dal 5 al 10% di FPS quando ho confrontato lo stesso gioco con la versione Win32.
  2. Ci sono molti esempi già portati, giochi per NaCl che possono aiutarti a farlo facilmente.
  3. È già multipiattaforma. Chrome funziona su Windows, Linux, Mac OSX.

Svantaggi:

  1. potrebbe prendere circa una settimana alla porta. Bisogna porta per OpenGL ES 2.0 (Tuttavia, dovrebbe essere lo stesso con qualsiasi metodo basato su browser, in particolare HTML5) solo
  2. Funziona su Chrome.
+1

Ho porting Irrlicht motore di rendering di NaCl e le prestazioni sono davvero buono rispetto a qualsiasi prestazione di gioco basato su JavaScript. – codetiger

Problemi correlati