XNA, direct X , OpenGL
Habe ich gefehlt zu geben, game programming zuvor für eine lange Zeit und nie dazu gekommen es, und ich habe schließlich beschlossen, es vor. Ich habe beschlossen, zu versuchen, und erstellen Sie eine einfache 2D-Plattform-Spiel. Ich habe ein schnelles Spiel mit XNA und ich mag es. Was ich Suche, tho, ist ein Vergleich zwischen XNA, directx, OpenGL. vor allem die stärken und Schwächen zwischen Ihnen. Ich habe schon eine .net-Entwickler für den letzten 4 Jahren und das waren meines Wissens vor allem ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, zu tun, Direct X, sagen Hallo zu Win32 und COM als Ihre neuen besten Freunde. Sie verbringen viel Zeit früh lernen ins und outs der win32-API. DirectX mit Win32 bietet Ihnen alle erforderlichen Funktionen für die sound -, Spiel-input-und Grafik-display. Sie werden auch schreiben in C oder C++, und du wirst erfahren Sie alles über memory-management und die C-Denkweise - nicht etwas, sollten Sie überlegen, aufzugeben, leicht. Lernen und mit C als Sprache für ein großes Projekt kann sehr erhellend, und machen Sie dankbar für eine moderne Programmiersprache, die Funktionen und design-Elemente. Sie sind nicht wirklich gezwungen, in C oder C++ für die Entwicklung hier; es gibt verschiedene .NET-Wrapper und andere Sprache-Wrapper für DirectX, aber wenn Sie haben .NET Erfahrung, Sie könnte genauso gut verwenden Sie die Rahmen gemacht .NET: XNA.
XNA ist eine viel neuere, .NET-basierten tools. Es bietet viele der gleichen Funktionen, dass gerade die Verwendung von Win32-und DirectX funktioniert (sound, input,...), sondern nativ auf einem verwalteten Plattform. Für die meisten Spiele (insbesondere, wenn gerade erst anfangen) können Sie tolle Frameraten mit ein XNA-game (obwohl eine native app kann Ihnen mehr), und ist sehr gut für das erlernen der ins und outs der Entwicklung von spielen-Sie können nicht wirklich schief gehen. Die meisten der grundlegenden Datenstrukturen, die Sie benötigen (quad - /oct-Bäume, Modell-view-controller-Architektur, Abwicklung von Veranstaltungen, Struktur des Programms) werden Sie noch brauchen, um zu lernen und umzusetzen, sich selbst, und tut es .NET wird sicherlich einfacher sein als in C und C++. Als netten Nebeneffekt bonus, wenn Sie eine Xbox 360, XNA community games kann, mit etwas Arbeit, werden demnächst über den Xbox Live-Marktplatz. Grundsätzlich, als .NET-Entwickler, werden Sie wahrscheinlich fühlen sich die meisten wohl hier.
OpenGL ist eine cross-platoform Bibliothek für das zeichnen von Polygonen. Es hat ein anderes framework und der API von Direct X, und nicht auf jedem beliebigen OS-Interaktion-tools. Es gibt Pakete, mit denen Sie das Programm in OGL in vielen verschiedenen Sprachen. Jedoch, wie andere gesagt haben, ist dies wahrscheinlich genauso viel Arbeit wie das schreiben mit Win32-und DirectX. Für andere Funktionen neben der Grafik (Tastatur, Maus, joystick, audio), könnten Sie überlegen, ein framework wie SDL einige der fehlenden DirectX-Funktionen. Es ist eine ziemlich anständige community rund um die Bibliothek, die Ihnen Hinweise und Tipps, wenn Sie diesen Weg gehen.
Mehr Gedanken dazu finden Sie in einem fast identischen Artikel, hier: Vorgeschlagen Gaming-Plattform zu Erfahren, direct-x, C, Open GL, oder XNA.
XNA ist der einfachste/Schnellste Weg zu bekommen ein Spiel und läuft für die 360 oder Windows-Plattformen. Es wird Ihnen erlauben, weiter zu entwickeln in einer Weise, die Ihnen bereits vertraut sind (C#.NET) und es wird Ihnen mit einer ziemlich großen Rahmen, kümmert sich um die Häufig verwendeten Sachen automatisch. Mit dieser Leichtigkeit kommt einige Einschränkungen, aber, wie Sie begrenzt werden, um nur die bereits erwähnten Plattformen und durch, es wird ein großer Rahmen, es wird eine Menge von overhead, gehen noch weitgehend ungenutzte Leistung verursacht hat, jedoch mit einer einfachen 2D-platformer, dies ist wahrscheinlich nicht zu einem Thema sein.
DirectX ist, gehen Sie zu beschränken, in-Plattform, als auch, und ist viel mehr kompliziert, um zu lernen und zu entwickeln. Auch Sie werden wahrscheinlich der Programmierung in C oder C++ hier. Die Vorteile werden in der Leistung, da Sie mit alles, was Sie werden alles im Griff haben und in der Lage zu optimieren alles, was Sie brauchen. Ich würde denken, dass für eine erste Spiel wirst du viel besser dran, beginnend mit XNA und den übergang zu DirectX, nachdem Sie "entwachsen" XNA. Vor allem mit dem Ziel der Schaffung eines einfachen 2D-platformer.
OpenGL wird zulassen, dass dein Spiel läuft auf den meisten Plattformen, sondern werden als kompliziert (wenn nicht noch mehr) als DirectX (obwohl ich sollte erwähnen, es gibt Grafik-engines für OpenGL, die sind ziemlich einfach zu verwenden, wie OGER. Sie werden auch in der Entwicklung in C/C++ für OpenGL. Wieder würde ich denken, XNA wäre die bessere Wahl, bis Sie das Gefühl, du bist bereit für den nächsten Schritt.
Wenn Ihre Erfahrung ist, meistens mit .NET, wie Sie sagen, XNA wäre die kürzeste Barriere zum Eintrag, obwohl Sie nicht get ganz so gut von der Leistung, wie Sie können mit anderen Optionen. Wie Sie sagen, dass Sie planen, machen ein 2D-platformer, jedoch (unter der Annahme, dass die Implikation hier ist "nicht-hardware-intensiv"), dann XNA wäre mehr als ausreichend und wahrscheinlich die am besten geeignete Wahl für Ihr Projekt.
DirectX, bedeutet nicht, Sie haben die Verwendung von nativem code, es gibt mehrere verwaltete Wrapper gibt. Der Leistungsverlust liegt irgendwo im Bereich von 1-3% der nativen DirectX, aber wenn man bedenkt Sie sparen Stunden und Stunden der dev Zeit und wird wahrscheinlich nie brauchen, die letzten 2% jedenfalls geschafft, ist der Weg zu gehen.
Diesem Beispiel sehen: SlimDX - ein vollständig verwalteter wrapper für DirectX in C#
Ist eine option, um schreiben Sie Ihre engine in .Aber NET Implementierung der renderer mit C++/CLI. Ich mache das für eines meiner Projekte. XNA, OpenGL und DX sind alle zu low-level für das, was ich will. Ich will nicht schreiben ein renderer, ich möchte ein vorhandenes verwenden. Die Ogre3D-wrapper, Mogre, scheint ein komplettes Chaos (nicht sicher, ob es das design von Mogre, Ogre3D oder beides), und die meisten anderen Wrapper sind hoffnungslos veraltet. Stattdessen bin ich die Implementierung der renderer mit C++/CLI und Irrlicht, das scheint zu sein, schneller und gut gestaltet ist als Ogre3D.
Können Sie erwägen, etwas wie das zu tun.
Angefangen habe ich mit DirectX hab jetzt aber verschoben auf XNA, vor allem, weil ich möchte in der Lage sein, um den Fokus mehr auf das eigentliche gameplay und weniger auf die Technik hinter dem Spiel. Sicher, du wirst noch einige Motor-Kodierung, aber es hilft viel zu haben, der einen Rahmen liefert vorgefertigte Funktionen, die speziell für game programming.