2010-08-10 10 views
7

Estoy haciendo un poco de investigación antes de escribir mi propio motor de juego en 2D (y tal vez en 3D). He hecho un motor antes de usar C# y XNA pero quiero ir a la plataforma cruzada esta vez haciendo mi nuevo motor en C++ usando opengl etc.¿Escribir en C++ y exponer a C# o escribir directamente en C#?

Pero ... Todavía quiero los tiempos de iteración rápidos de C# y tengo acceso al motor del juego allí.

Así que tengo algunas opciones aquí.

  1. Escribir el motor y un envoltorio de CLI en C++
  2. Escribir todo el asunto directamente en C#, sin C++
  3. Escribir en C++ y utiliza Mono para cargar código de C#/ensamblajes en el motor.
  4. no C#
  5. ... Probablemente algo no me pareció el momento

creo que sí necesita la velocidad de sacrificio, cosas scenegraph, los cálculos con matrices, sistemas de partículas, etc.

Wat son ¿los pros y los contras? ¿Qué sugieres?

+0

Posiblemente una pregunta estúpida ya que no sé mucho sobre C#: ¿Es factible escribir algo como esto en un lenguaje de GC como C# o las pausas de GC te comerían vivo? – dsimcha

+0

Es factible y el rendimiento es aceptable. C++ es y siempre será (¡no lo dije!) Más rápido. Ya hay varios motores de juegos C# flotando. Flat Red Ball por ejemplo. – WoutervD

Respuesta

2

Si quieres multiplataforma, no puedes usar C++/CLI. Esto no es compatible con ninguna plataforma que no sea Windows.

Dicho esto, para la plataforma cruzada, utilizaría C# with Tao, o usaría C++ para hacer que el motor fuera una biblioteca, y el uso de la Plataforma Invocar para "usar" la biblioteca desde su código C#. Esto le proporcionará la velocidad y el control que necesita en el motor central (C++), con la flexibilidad del diseño del juego en C#.

Esto proporciona una plataforma limpia y cruzada para desarrollar un motor de juego que pueda exponerse a C#.

+1

Hmm Tao está un poco pasado de moda (¡no hay actualizaciones en 5 años!) Y su dominio (http://taoframework.com) ha sido tomado por un ocupante ilegal ... ¿Sigue vigente o está caducado? – FrustratedWithFormsDesigner

+0

Si divide el código del motor en C++, asegúrese de no realizar llamadas "habladas" innecesariamente a través del límite nativo/administrado. –

+0

@FrustratedWithFormsDesigner: Sin embargo, ahora está en el núcleo mono. Como es un contenedor OpenGL directo y muy estable, sigue siendo una buena opción. De lo contrario, puede usar OpenTK, pero eso incluye también otras cosas (que pueden ser útiles para un motor de juego). –

1

marco Tao está muerto, tratar OpenTK lugar

código
1

optimizado C++ será significativamente más rápido (20% en mi caso de la oda de 32 bits, y casi el 40% en 64 bits; C# es más lento en 64 -bit que C# en 32 bits, pero esa es otra publicación). Aprovecharía las matemáticas pesadas en una biblioteca de C++ (integración, ecuaciones diferenciales, etc.).

Cuestiones relacionadas