2010-08-10 11 views
7

Robię trochę badań, zanim zamierzam napisać własny silnik 2D (i może trochę 3D). Zrobiłem silnik przed użyciem C# i XNA, ale chcę tym razem przejść na platformę, robiąc mój nowy silnik w C++ przy użyciu opengl itp.Napisz w C++ i wystaw na C# lub napisz bezpośrednio w C#?

Ale ... Nadal chcę mieć szybki czas iteracji od C# i mam dostęp do silnika gry.

Mam tutaj kilka opcji.

  1. Napisz silnik oraz owijkę CLI w C++
  2. Napisz całość bezpośrednio w C#, C++
  3. pisać w C++ i używać Mono załadować C#/kod zwoje do silnika.
  4. C#
  5. ... Pewnie coś zrobił myślę jeszcze

Chyba potrzebują prędkości do uboju, scenegraph rzeczy, obliczenia Matrix, systemy cząsteczkowe itp

Wat są zalety i wady? Co sugerujesz?

+0

Prawdopodobnie głupie pytanie, ponieważ nie wiem zbyt wiele o C#: Czy można napisać coś takiego w języku GC, takim jak C#, czy GC zatrzyma się przy życiu? – dsimcha

+0

Jest to wykonalne, a wydajność jest do zaakceptowania. C++ jest i zawsze będzie (nie powiedziałem tego!) Szybciej. Istnieje już kilka silników do gier C#. Płaska Czerwona Kula na przykład. – WoutervD

Odpowiedz

2

Jeśli chcesz korzystać z wielu platform, nie możesz używać C++/CLI. Nie jest to obsługiwane na platformach innych niż Windows.

Powiedziałbym, że w przypadku platformy wieloplatformowej użyłbym albo C# with Tao, albo C++, aby silnik był biblioteką, a użycie Platform Invoke do "użycia" biblioteki z twojego kodu C#. Zapewni to szybkość i kontrolę potrzebną w rdzeniu silnika (C++), z elastycznością projektowania gier w języku C#.

Zapewnia to czyste, wieloplatformowe rozwiązanie polegające na opracowaniu silnika gry, który może być wystawiony na działanie C#.

+1

Hmm Tao jest trochę przestarzały (brak aktualizacji w ciągu 5 lat!), A ich domena (http://taoframework.com) została przejęta przez squatter ... Czy jest nadal aktualny, czy jest już nieaktualny? – FrustratedWithFormsDesigner

+0

Jeśli podzielisz kod silnika na C++, upewnij się, że nie robisz niepotrzebnie "rozmownych" połączeń przez natywną/zarządzaną granicę. –

+0

@FrustratedWithFormsDesigner: Teraz jest w rdzeniu mono. Ponieważ jest to bezpośrednie opakowanie OpenGL i jest bardzo stabilne, nadal jest dobrym rozwiązaniem. W przeciwnym razie możesz użyć OpenTK, ale zawiera również inne rzeczy (które mogą być przydatne dla silnika gry). –

1

Tao ramy jest martwy, spróbuj OpenTK zamiast

1

Zoptymalizowany kod C++ będzie znacznie szybciej (20% w moim przypadku dla ODE jest w wersji 32-bitowej, a prawie 40% w wersji 64-bitowej; C# jest wolniejszy w 64 -bit niż C# w 32-bitowym, ale to kolejny wpis). Korzystałbym z ciężkiej matematyki w bibliotece C++ (integracja, równania różniczkowe itp.).