Samstag, 6. September 2008

XNA

Viele Leute haben mir in diesem Blog Fragen bezüglich XNA gestellt und ich dachte, ich beantworte sie auf der Hauptseite.

XNA ist eine Entwicklungplattform, die angehenden Spielprogrammierern und anderen erleichtern/ermöglichen soll, Spiele zu machen, die sowohl auf auf dem PC wie auch auf der Xbox 360 laufen. Man programmiert in C# und die Shadersprache von DirectX. Für die Programmierung wird Visual Studio benutzt wie auch für jede andere Microsoftplattform. XNA stellt Bibliotheken und Tools zur Verfügung, die von vorne rein für Spielprogrammierung getrimmt wurden.

C# ist grob gesagt, die Microsoft Version von Java. Weil Sun nicht wollte, daß Microsoft Java ins .NET-Framework aufnimmt, hat Microsoft quasi ein Äquivalent gebaut, das sehr viele Gemeinsamkeiten hat. Wenn man Java kann, dann dauert es einen Tag, bis man erste Programme in C# schreibt. Bis zur Shaderprogrammierung bin ich noch nicht gekommen. Die kommt ins Spiel, wenn man aufwendigere Dinge macht. Wenn man 3D-Grafik machen will, sollte man sein Vektor- und Matrizenwissen auffrischen.

Die Libraries machen das Laden und darstellen von Resourcen und das auswerten der Spielereingaben sehr einfach. Der PC wird dafür soweit wie möglich wie eine Konsole betrachtet. Deswegen wird zum Beispiel nur das Xbox Joypad unterstützt. So muß man sich als Programmierer nicht die Mühe machen, abzufragen, welche Bedienelemente das Joypad hat. Der Vorteil ist, man kann Code schreiben, der ohne Änderungen sowohl auf der Konsole wie auch auf dem PC läuft.

Die Features der Libraries und die Tools aufzuzählen hat keinen Sinn, weil dort schneller Sachen hinzugefügt werden als man das Zeug lernen kann. Wenn man sich schon an ein 3rd Party Tool gewöhnt hat, um zum Beispiel seine 3D-Modelle zu machen, dann ist es kein Problem, weil es mit größter Wahrscheinlichkeit ein Format ausspucken kann, das XNA lesen kann. Man kann aber auch Tools wie das Softimage XSI Mod Tool herunterladen. Ich habe es aber noch nicht ausprobiert.

Um das alles auszuprobieren muß man gar nichts zahlen. Bezahlen muß man nur, wenn man seine Sachen auf der Konsole laufen lassen will. Kommenden Winter wird es für jeden (aber erstmal nicht in Deutschland) möglich sein, seine Spiele in einen XNA Marktplatz hochzuladen und zwischen 200 und 800 MS-Punkte zu verlangen. Man kriegt dann "bis zu 70%" der Einnahmen und jeder kann das Spiel kaufen. Solange man einige Regeln einhält, findet keine Kontrolle von Microsoft statt.

Ein paar Links:

http://creators.xna.com/
Hier findet man so gut wie alles, was es von offizieler Seite zu XNA gibt. Downloads, Tutorials, Foren und was man halt so erwartet.

http://creators.xna.com/en-US/education/gettingstarted
Hier ein paar Tutorials in Videoform, um sich ein Bild zu machen, wie das abläuft.

http://blogs.msdn.com/xna/
Das Blog des XNA Teams. Hier erfährt man, was es neues gibt.

Noch ein paar Kommentare zum ganzen. XNA ist ein Produkt von Microsoft, daß die Entwickler dort richtig richtig gut hingekriegt haben, das sehr billig ist und mit dem man bald Geld verdienen kann. Das, was Microsoft damit hauptsächlich verfolgt, ist nicht in ein paar Monaten eine zusätzliche Einnahmequelle zu haben. Wichtiger ist, eine Armee von jungen Entwicklern aufzubauen, die mit Microsoft Entwicklungumgebungen ihre ersten Schritte gemacht haben, daran (und an Windows) gebunden sind und nichts anderes wollen. Microsoft ist seinen Wettbewerbern in dieser Hinsicht, so weit voraus, daß es nicht mehr feierlich ist.

Seit die erste Xbox erschienen ist, habe ich in Foren immer "Xbox = Verluste LOL" gelesen. Leute, die sowas schreiben sind kurzssichtig. Microsoft ist eine Softwarefirma und ihre Hardware dient nur dazu, ihre Software und inzwischen auch ihre Dienste zu verkaufen. Die Verbindung ihrer Plattformen dient dazu, daß eine Killer Application auf einer Plattform einen dazu bringt, die anderen Plattformen auch zu nutzen. Mit Xbox Live auf dem PC haben sie sich verrechnet, mit XNA werden sie Erfolg haben. Jetzt braucht man Windows, um auf der 360 zu programmieren, bald kommt auch Zune dazu.

Mit Developers, Developers, Developers, die Visual Studio, DirectX und XNA mögen, bewegt sich Microsoft langsam gegen das Monopol zu. Und es soll mir keiner mit Nintendo kommen, es sei denn, er glaubt unerschütterlich daran, daß nach dem kommenden Zelda noch eins erscheint. Nintendo wird in 5 Jahren vermutlich keine Videospiele mehr machen sondern Spielzeug, in dem oft ein Bildschirm auch eine Rolle spielt.

9 Kommentare:

Anonym hat gesagt…

Vielen Dank schon mal vorab, das klingt alles recht spannend und die Links scheinen das gröbste zu erklären, allerdings habe ich die Videos noch nicht gesehen.
Für mich ist der spannenste Punkt erst mal der Bezahlfaktor: Wenn ich Dich recht verstehe, könnte man das Programm, das man erstellt, auch auf dem PC laufen lassen, wenn man es nur testen will. Erst wenn man auf die 360 wechselt (um es zu verkaufen oder mit Freunden zu spielen), muss man die Lizenz kaufen?
Kann ich die Wireless-Controller per USB-Kabel am PC betreiben oder wird dafür ein spezieller Controller (IIRC gibt es ja einen extra Win360-Pad?!) gebaucht?

Dann noch ein paar Fragen zur Programmierung in c#: Hier wird es ja sicherlich, da es eine OO-Sprache ist, eine ganze Armada an Basisklassen geben. Gibt es allerdings ebenso so etwas die API in Java, also eine explizite Auflistung aller zur Verfügung stehender Klassen plus Erklärungen zu Methoden sowie kleine Beispiele?
In den XNA-Community-Boards sehe ich schon, daß hier viel geholfen wird, aber für grundlegende Fragen will ich keinen derart nerven.
Und, gibt es gewisse Libraries, die zur Verfügung gestellt werden und dann einfach nur noch als Tools verwendet werden können? Ich denke hier an KI, Scrolling, Steuerungseingaben etc. Oder ist davon vieles schon in c# verankert?

Pasco hat gesagt…

Man kann das Programm, das man erstellt, auf dem PC laufen lassen - Punkt. Es geht nicht unbedingt ums testen, es könnte auch dein Ziel sein, ein PC Spiel zu machen mit Maus und Tastatursteuerung.

Wireless-Controller per USB-Kabel geht nicht. Es gehen nur kabelgebundene Controller und dabei spielt es meines Wissens keine Rolle, ob man die in der Xbox oder PC Packung gekauft hat, weil die Pads identisch sind.

Referenzdokumentation der API ist vorhanden. Codebeispiele sind reichlich vorhanden. Die letzte Frage verstehe ich nicht aber ich habe das Gefühl, daß du dir ein viel besseres Bild machen kannst, wenn du die Videos anschaust. Viel Spaß!

Anonym hat gesagt…

Zu Absatz 1: Ah, ok, das ist ja dann schon mal die Möglichkeit, das ganze vollkommen kostenfrei anzutesten. Also wenn ich davon absehe, daß ich für den neuen iMac latzen muss... :)

Zu Absatz 2: Aktuell werden die kabelgebunden für die 360 aber gar nicht mehr produziert, jedenfalls liegen der Arcade (falls die noch so heißt) auch die Wireless-Controller bei. Worüber verbindet man denn dann einen Wireless-Controller mit dem PC?
Btw: Wie machst Du das?

Zu Abschnitt 3: Klingt alles schon mal erbaulich, leider habe ich aktuell zu viel um die Ohren, um die Videos gesehen zu haben, ich hole es aber in Bälde nach.
Mit der Frage meinte ich, ob Scrolling, KI und Co schon (überschreibbare/erweiterbare) Basisklassen sind oder als Library extra eingebunden werden müssen.

Dann final (für diesen Kommentar) noch die Frage: Wenn man XNA-Entwickler mit Lizenz ist, kann man aber die Sourcen und Programme mit anderen Usern tauschen, auch wenn diese noch nicht durch diesen Veröffentlichungsprozess gewandert sind? Also ich könnte Dir was schicken und Du mir, was noch nicht fertig ist und Du könntest mir Verbesserungsvorschläge machen, wie etwa "60 fps einbauen, Du Arsch!", mal platt gesagt?

Anonym hat gesagt…

@Don Cosmo: in einer der letzten Ct-Ausgaben (letzte zwei Monate) war auch ein Artikel über XNA, wobei sicher nicht viel informativer als die Videos ist.

Zu 2) Doch, die werden noch produziert, obwohl sie der Arcade nicht mehr beiliegen. Gibt es z.B. bei der Grotte für 33€.

Zu final: sollte gehen. Die umständliche Methode kann MS gar nicht verhindern. Ich schick Dir meine Sourcen per Mail, Du schickst sie über Deinen PC auf Deine 360.

@Macher: magst Du ein bisschen was über Deine bisherigen oder aktuellen Projekte preis geben? Finde sowas sehr interessant.
Ich würde selber wahnsinnig gerne was mit XNA machen (das Projekt schwirrt mir seit Jahren im Kopf rum), aber mir fehlt die Muße dazu.
Ach ja, mit dem Blog bitte weiter machen, sehr lesenswert soweit.

Pasco hat gesagt…

>Worüber verbindet man denn dann einen Wireless-Controller mit dem PC? Btw: Wie machst Du das?

Ich mache es gar nicht. Ich habe einen alten Rechner mit einer GeForce FX5200, der die Anforderungen für XNA Spiele nur theoretisch erfüllt. Um vernünftig XNA Sachen auf einem PC laufen zu lassen, müsste ich einen neuen kaufen. Das hat mich unter anderem dazu bewogen, die Creator's Club Lizenz zu zahlen.

>Mit der Frage meinte ich, ob Scrolling, KI und Co schon (überschreibbare/erweiterbare) Basisklassen sind oder als Library extra eingebunden werden müssen.

Du hast Sachen aufgezählt, die in jedem Spiel so unterschiedlich implementiert sind, daß Libraries selten Sinn ergeben. XNA ist übrigens primär für 3D Spiele gedacht.

>Dann final (für diesen Kommentar) noch die Frage: Wenn man XNA-Entwickler mit Lizenz ist, kann man aber die Sourcen und Programme mit anderen Usern tauschen, auch wenn diese noch nicht durch diesen Veröffentlichungsprozess gewandert sind?

Ja. Man kann sogar sowas ähnliches wie jar-files machen, bei denen man in den Source Code nicht einsehen kann. Cedebo hat den anderen Weg gezeigt.

Cedebo kriegt später eine Antwort.

Pasco hat gesagt…

Cedebo:
das einzige Spiel, von dem man behaupten könnte, es wäre komplett
http://arpaschalis.googlepages.com/home

Mehr als die Befriedigung, es fertiggestellt zu haben, hat es mir aber nicht gegeben. Ist in C++, SDL, OpenGL geschrieben

Rennspiedemo, die ich im pp-forum gepostet habe und mal für meine Praktikumsbewerbung genutzt habe:
http://arpaschalis.googlepages.com/ultrakart.zip
Auch C++, DSL, OpenGL

Zweispieler-only Arkanoid-Space-Invaders-Mischung. Vielleicht versuche ich das nochmal auf die schnelle. Readme lesen:
http://arpaschalis.googlepages.com/abp.zip
Ist in C++ und DirectX6 geschrieben.

Ich habe noch nichts neues angefangen aber ich werde erstmal dieses kostenlose Softimage Modellierungstool ausprobieren. Ich habe mich bisher noch nie mehr als ein paar Stunden mit 3D-Modellierungsprogrammen beschäftigt und ich will herausfinden, wie gut ich darin bin, 3D-Modelle zu bauen, bevor ich mich entscheide, ob das nächste Spiel 2D oder 3D sein wird.

Anonym hat gesagt…

Danke für den Überblick.
An die Rennspielgeschichte im PP kann ich mich auch noch erinnern.

Was anderes: weißt Du, ob es freie, gute Libraries für Ballphysik gibt? Oder ist sowas gar bei XNA dabei?

Pasco hat gesagt…

Creator's Club Mitglieder dürfen die Torque X Engine und Tools kostenlos nutzen. Laut Featureliste gibt es da Physiksachen, allerdings habe ich das nicht selbst ausprobiert.

Anonym hat gesagt…

Ding dong, XNA ist tot -> http://www.golem.de/news/microsoft-xna-game-studios-wird-nicht-weiterentwickelt-1302-97317.html