2010-08-10 14 views
7

Je fais un peu de recherche avant d'écrire mon propre moteur de jeu 2D (et peut-être 3D). J'ai fait un moteur avant d'utiliser C# et XNA mais je veux aller cross-platform cette fois en faisant mon nouveau moteur en C++ en utilisant opengl etc.Écrire en C++ et exposer en C# ou écrire directement en C#?

Mais ... je veux toujours les temps d'itération rapides de C# et avoir accès au moteur de jeu là.

J'ai donc quelques options ici.

  1. Ecrire le moteur et une enveloppe CLI en C++
  2. Ecrire tout cela directement en C#, pas C++
  3. écrire en C++ et utiliser Mono pour charger C# Code/assemblées dans le moteur.
  4. N ° C#
  5. ... Probablement quelque chose que je ne pensais pas que d'encore

Je pense que j'ai besoin de la vitesse pour l'abattage, trucs SceneGraph, calculs matriciels, les systèmes de particules, etc.

Wat sont les avantages et les inconvénients? Que suggérez-vous?

+0

Question peut-être stupide puisque je ne connais pas grand chose à propos de C#: Est-il possible d'écrire quelque chose comme ça dans un langage GC'd comme C# ou est-ce que les pauses GC vous mangent vivants? – dsimcha

+0

C'est faisable et la performance est acceptable. C++ est et sera toujours (je n'ai pas dit ça!) Plus vite. Il y a plusieurs moteurs de jeu C# qui circulent déjà. Ballon rouge plat par exemple. – WoutervD

Répondre

2

Si vous souhaitez multiplate-forme, vous ne pouvez pas utiliser C++/CLI. Ceci n'est pris en charge sur aucune plate-forme autre que Windows. Cela étant dit, pour cross-platform, j'utiliserais C# with Tao, ou utiliser C++ pour faire du moteur une bibliothèque, et utiliser Platform Invoke pour "utiliser" la bibliothèque depuis votre code C#. Cela vous fournira la vitesse et le contrôle dont vous avez besoin dans le moteur de base (C++), avec la flexibilité de la conception de jeu en C#. Ceci fournit un moyen propre et multiplateforme de développer un moteur de jeu pouvant être exposé à C#.

+1

Hmm Tao est un peu obsolète (pas de mise à jour depuis 5 ans!) Et leur domaine (http://taoframework.com) a été repris par un squatter ... Est-il toujours actuel ou est-il tombé en désuétude? – FrustratedWithFormsDesigner

+0

Si vous divisez le code moteur en C++, assurez-vous que vous ne faites pas d'appels inutilement "bavards" à travers la limite native/gérée. –

+0

@FrustratedWithFormsDesigner: C'est dans le noyau mono maintenant, cependant. Comme c'est un wrapper OpenGL direct, et très stable, c'est toujours une bonne option. Sinon, vous pouvez utiliser OpenTK, mais cela inclut également d'autres choses (ce qui peut être utile pour un moteur de jeu). –

1

cadre Tao est mort, essayez OpenTK à la place

1

Code optimisé C++ sera nettement plus rapide (20% dans mon cas pour ODE est dans 32 bits, et près de 40% en 64 bits, C# est plus lent en 64 -bit que C# en 32 bits, mais c'est un autre post). Je profite des mathématiques lourdes dans une bibliothèque C++ (intégration, équations différentielles, etc).