Sonntag, 12. Februar 2012 |
Benjamin Nitschke ist Chef-Programmierer der kleinen und noch sehr jungen Spielefirma exDream entertainment und war maßgebend an der Entwicklung des 3D-Spiels Rocket Commander beteiligt, dessen Quellcode Microsoft im Rahmen der Coding4Fun-Initiative zur Verfügung gestellt hat. Der sehr gut kommentierte C#-Code in Verbindung mit den zehn Video-Tutorials bietet einen Einstieg in die Spieleentwicklung. Rocket Commander ist in der Umsetzung auch optisch die wohl beste Open-Source-Referenz im Internet, die bisher zum Thema DirectX entwickelt wurde. Benjamin Nitschke ist auch der Autor der Video-Tutorials, die zum Paket gehören.
Wann und warum fiel die Entscheidung für das .NET Framework?
Anfang 2002, kurz vor Release von Visual Studio .NET. Ich hatte mir schon davor die Beta kurz angesehen und fand das ganze sehr interessant. In 2002 habe ich mit der Entwicklung eines kleinen .NET-Spiels angefangen, welches 2004 als Arena Wars veröffentlich wurde und viele coole Features hatte. Dafür wurde Arena Wars mit vielen Awards belohnt und war somit auch das erste kommerzielle .NET-Spiel.
Hat das .NET Framework die Entwicklung positiv beeinflusst? Was waren die größten Hindernisse, die überwunden werden mussten? Was hätte Microsoft eventuell besser machen können?
Hauptproblem 2002/2003 war, OpenGL oder DirectX unter .NET zum Laufen zu bekommen. Heutzutage ist dies dank Managed DirectX nicht mehr ein so großes Problem. Aber Microsoft hat auch Fehler begangen, insbesondere im Bereich der Spieleentwicklung: In .NET. Managed DirectX herrscht ein Versionschaos sondergleichen und es wird auch nicht automatisch bei einer DirectX-Installation mitinstalliert – der Entwickler darf sich seine eigenen Installationsroutinen schreiben. Tom Miller von Microsoft hat zwar fast im Alleingang großartige Arbeit geleistet, Managed DirectX zu entwickeln, aber Microsoft hätte deutlich mehr Ressourcen in Managed DirectX stecken müssen, damit .NET als spielefähiges Framework akzeptiert wird.
Ansonsten ist die Verbreitung von .NET inzwischen sehr gut geworden und es gibt bei den Anwendern auch keine Ängste, beispielsweise .NET 2.0 installieren zu müssen. Von der Entwicklungszeit hat .NET natürlich viele Vorteile. Oft kann man mit deutlich weniger Code als mit C++ gleiche Probleme mit weniger Aufwand und mit gleicher Performance programmieren. In der Zukunft wird Microsoft mit XNA sicherlich den richtigen Schritt gehen und auch wesentlich energischer rangehen, um Spieleentwickler zu erreichen.
Was sind die größten Performance-Killer bei der Arbeit mit dem .NET Framework und DirectX? Welche Vorgehensweisen sollten vermieden werden?
Im Gegensatz zu Unmanaged Code muss man bei Managed Code nicht auf Speicher-Leaks oder Bugs mit Pointern achten – daher hat man mehr Zeit richtige Performance- und Optimierungsarbeiten zu leisten. In .NET gibt es auch dank Reflection eine Vielzahl von Profilern und Tools, um die Performance zu optimieren. Ansonsten macht es natürlich keinen großen Unterschied, ob man eine C++- oder C#-DirectX-Anwendung optimieren muss. Hier gelten die gleichen Regeln und die Programmiersprache ist eigentlich so gut wie nie der entscheidende Faktor.
Das Interview führte Jens Konerow