2010-08-10 11 views
7

Kendi 2D (ve belki de 3D) oyun motorumu yazmaya başlamadan önce biraz araştırma yapıyorum. C# ve XNA kullanmadan önce bir motor yaptım ama bu sefer C++ 'da opengl vb. Kullanarak yeni motorumun yapımını yapmak istiyorum.C++ 'da yazın ve C#' ya görün veya doğrudan C# 'ye yazın?

Yine de C#' den hızlı yineleme sürelerini istiyorum ve erişimim var. oradaki oyun motoruna.

Burada birkaç seçeneğim var.

  1. , C# doğrudan C++ hiçbir C++
  2. Yazma şeyi yazın C motoru ve bir CLI sarıcı ++
  3. yazın ve C# kod yüklemek için Mono kullanmak/motoruna Meclisleri.
  4. yok C#
  5. ... Ben vs. itlaf, skenograf şeyler, Matris hesaplamaları, parçacık sistemleri vardır

    Wat hızını gerekiyor düşünüyorum henüz

ait düşünmüyordu Muhtemelen bir şey artılar ve eksiler? Önerileriniz nelerdir?

+0

C# hakkında pek bir şey bilmediğimden aptalca bir soru olabilir: C# gibi bir GC'd dilinde böyle bir şey yazmak mümkün mü yoksa GC durakları hayatta kalsın mı? – dsimcha

+0

Bu uygulanabilir ve performans kabul edilebilir. C++ her zaman (bunu söylemedim!) Ve daha hızlı olacaktır. Zaten etrafında yüzen birkaç C# oyun motoru var. Örneğin düz kırmızı top. – WoutervD

cevap

2

Çapraz platform istiyorsanız, C++/CLI'yi kullanamazsınız. Bu, Windows dışındaki herhangi bir platformda desteklenmez.

Çapraz platform için, C# with Tao kullanın ya da motoru bir kitaplık haline getirmek için C++ kullanın ve C# kodunuzun içinden kitaplığı "kullanmak" için Platform Çağrısı'nı kullanın. Bu size C# oyun tasarımının esnekliği ile çekirdek motorda (C++) ihtiyacınız olan hızı ve kontrolü sağlayacaktır.

Bu, C# 'ya maruz kalabilecek bir oyun motoru geliştirmek için temiz, çapraz bir platform sağlar.

+1

Hmm Tao biraz bayat arıyor (5 yılda bir güncelleme yok!) Ve onların etki alanı (http://taoframework.com) bir gecekondu tarafından ele geçirildi ... Hala geçerli mi yoksa güncelliğini yitirmiş mi? – FrustratedWithFormsDesigner

+0

Motor kodunu C++ 'ya bölerseniz, yerel/yönetilen sınır boyunca gereksiz bir şekilde' sohbet 'çağrıları yapmadığınızdan emin olun. –

+0

@FrustratedWithFormsDesigner: Yine de mono çekirdekli. Doğrudan bir OpenGL sarıcı olduğu ve çok kararlı olduğu için hala iyi bir seçenek. Aksi takdirde, OpenTK kullanabilirsiniz, ancak bu da başka şeyler de içerir (bir oyun motoru için yararlı olabilir). –

1

Tao çerçeve öldü, yerine

1

Optimize C++ kod önemli ölçüde daha hızlı olacak OpenTK deneyin (ADD 32-bit ve 64-bit yaklaşık% 40 için benim durumumda 20%; C# 64 daha yavaş 32 bitlik C# daha -bit, ama bu başka bir yazı). C++ kütüphanesinde ağır matematikten faydalanacağım (entegrasyon, diferansiyel denklemler, vs).