Häufig gestellte Fragen
Organisation
Ich würde gerne wegen X mit Y in einer Gruppe arbeiten, geht das?
Nein.
Was soll dieser Fragebogen? Verkauft Ihr unsere Daten an Microsoft oder wozu der Zauber?
Eure Daten will keiner. Der Fragebogen dient lediglich dazu, möglichst gerechte Gruppen zu bilden und zu verhindern, das Gruppe A aus Programmiergenies besteht, während sich in Gruppe B niemand etwas unter dem Begriff IDE vorstellen kann. Eure Daten werden selbstverständlich nur von uns intern verwendet und nach dem Softwarepraktikum vernichtet.
Als Abgabe sind nur PDF-Dokumente zugelassen, wie kann ich diese erstellen?
Es gibt relativ viele Wege dafür, am besten du verwendest eines der Werkzeuge aus unserer PDF-Tool Übersicht.
Entwicklung
.NET und C#
Wo finde ich eine Übersicht über die ganzen (teils sehr nützlichen) Tastenkürzel für die C# Programmierung in Visual Studio?
In der Liste der Tastenkombinationen.
Ich will Objekte in einer Liste speichern, habe aber keine Ahnung was für eine Liste ich nehmen soll.
Das .NET Framework stellt verschiedene Datenstrukturen für verschiedene Anwendungen bereit. Am besten du überlegst dir für welches Szenario die Liste sein soll und schaust dann in der Datenstrukturen-Übersicht welche am Besten passen würde.
XNA 3.0
Gibt es Features die schwer umzusetzen sind (auch wenn das vielleicht nicht unbedingt direkt den Anschein macht)?
Ja da gibt es durchaus ein paar Themen mit denen man vorsichtig sein sollte. Allerdings bedeutet das nicht dass ihr diese Sachen zwangsweise vermeiden sollt! Ihr solltet euch diese Gebiete lediglich im Voraus ansehen, und Umsetzung sowie Integration gut planen. Ihr könnt euch auch hier über ein paar dieser kniffligen Features informieren.
Wen ich eine nicht-XNA Library einbinde kann diese nicht geladen werden
Das passiert normalerweise dann, wenn Du auf einem 64-Bit Windows entwickelst. XNA unterstützt nur 32-Bit, .NET versucht aber, die Library mit 64-Bit zu laden. Abhilfe gibt es bei selbstkompilierten Libraries, die kann man auf 32-Bit einstellen
Sound
Wie bekomme ich Soundeffekte ins Spiel?
Um Sounds ins Spiel zu bekommen, solltest du das X Audio Creation Tool benutzen. (s.h auch XNA Audio Programming Guide ) Außerdem macht es Sinn, dir einen Überblick über die XNA Audio Klassen zu verschaffen. Für reine 2D-Sounds, z.B. für Menüs ist auch die SoundEffect-Klasse interessant, die ohne XACT auskommt.
Wie bekomme ich Hintergrundmusik ins Spiel?
Der einfachste und vermutlich beste Weg führt über die MediaPlayer-Klasse. Artikel dazu mit Sample
Wie bekomme ich 3D-Sound? (d.h. Stereo entsprechend der Position eines Objekts z.B. zur Kamera)
XNA stellt sogenannte Audio Emitter und -Listener zur Verfügung, damit geht alles ganz einfach - Ein Sample für 3D-Sound.
Wir haben Performanceprobleme (eventuell besonders bei bestimmten Aktionen), kann das am Sound liegen?
Das kann sein, ja. Für jeden abgespielten Sound wird ein neues Objekt, eine sog. Cue, erstellt. Wenn dein Spiel in jedem Update-Zyklus erneut einen oder mehrere von diesen Objekten erzeugt, dann kann das die Framerate sehr schnell sehr stark drücken. Typischerweise passiert so etwas zum Beispiel, wenn ein Sound immer abgespielt wird, wenn eine bestimmte Taste gedrückt ist. Falls der Benutzer dann diese Taste hält (z.B. MG-Feuer), wird in jedem Update (falls die Implementierung entsprechend schlecht ist) eine Cue erzeugt.
Wie verhindere ich, dass bei jedem Update eine neue Cue erzeugt wird?
Es macht Sinn, zwischen Sounds zu unterscheiden, die einmalig abgespielt werden sollen und solchen, die geloopt werden (z.B. ein Motorengeräusch). Dann muss zwar wegen der eventuellen Positionsveränderung trotzdem geupdated werden, aber man könnte z.B. eine Methode implementieren, die die eine zu einem Objekt gehörende Cue nur dann neu instanziert, wenn sie zu Ende gespielt hat und sonst nur die Position updated.
Was sind gute Einstiegspunkte, wenn ich mich in das Thema Sound unter XNA einlesen will?
Am besten schaust du dir mal die Klassen auf MSDN an, dann hast du schon einen Überblick und dann ein Sample. Hier einige Links:
- Ein Sample für 3D-Sound
- Formate, XACT & MediaPlayer & SoundEffect
- Programming Guide für XNA Audio
- Klassenübersicht für XNA Audio
- kurzer Artikel zur MediaPlayer-Klasse
Ich habe im Code alles richtig gemacht, aber der Sound wirkt nicht 3D-mäßig. Wo klemmt's?
Möglicherweise hast du in deiner Soundbank den Sounds nicht die entsprechenden RPCs gegeben. Füge im XACT Distance Curve und eventuell Doppler Curve hinzu. Dann könnte es gehen.
Content Pipeline
Was ist die Content Pipeline?
Die Content Pipeline von XNA ermöglicht es einfach Assets für das Spiel zu konvertieren, damit sie zur Laufzeit geladen werden können. XNA stellt bereits einige Content Processors zur Verfügung, bietet jedoch auch die Möglichkeit die Content Pipeline zu erweitern und eigene Content Processors zu implementieren.
Was ist ein Asset?
Ein Asset ist eine Resource für das Spiel. Dabei kann es sich um eine Vielzahl verschiedener Resourcen oder Dateiformate handeln, wie beispielsweise 3D Modelle (z.B.: .x, .fbx), Audiodateien (z.B.: .wav, .mp3) oder Grafiken (z.B.: .jpg, .png) etc.
Was für Standard Importer und Prozessoren stellt XNA 3.0 zur Verfügung?
-> Standard Importers and Processors
Wie kann man die Content Pipeline erweitern und für was sind solche Erweiterungen gut?
Die MSDN beinhaltet einen sehr guten und ausführlichen Artikel zur genauen Funktionsweise der Content Pipeline und auch darüber wie sie erweitert werden kann. Zum MSDN Artikel "Content Pipeline".
Die Erweiterung der Content Pipeline kann für eine Vielzahl von Aspekten genutzt werden, im Folgenden ein paar Beispiele:
- Man kann einen neuen Content Importer schreiben um neue Dateiformate in XNA nutzen zu können die standardmäßig nicht unterstützt werden (beispielsweise die 3D-Modell-Formate .mdl oder .obj).
- Man kann einen neuen Content Processor schreiben der eine Grafik nicht als Textur läd, sondern daraus ein 3D-Modell erstellt welches als Heightmap für ein Terrain verwendet werden kann.
- Man kann eigene Prozessoren dazu verwenden das Leveldesign zu gestalten, Ideen hierzu sind im Vortrag Building Worlds with the Content Pipeline vom GameFest 2008 festgehalten.
Ich habe einen eigenen Content Processor geschrieben und will ihn jetzt Debuggen, jedoch hält Visual Studio nicht an den Breakpoints an, was kann ich tun?
Content Pipeline Importer und Prozessoren werden von Visual Studio als Teil des Build-Vorgangs eines Projektes ausgeführt. Deswegen können sie nicht wie normaler Spielcode gedebugged werden. Wie man das Problem umgehen kann um innerhalb der Content Pipeline zu debuggen, kann man im Blog von Shawn Hargreaves nachlesen: Debugging the content pipeline.
Physik
Was ist eine Physik-Engine und was für Physik-Engines stehen für den Einsatz in XNA zur Verfügung?
Alle Informationen hierzu sind im Artikel zu Physik-Engines zu finden.
Welche Physik-Engine empfehlt ihr, bzw. für welche könnt ihr den besten Support geben wenn es Probleme gibt?
Die Open-Source Physik-Engine JigLibX (komplett in C# geschrieben und für die Nutzung mit XNA entwickelt).
Anderes
Was ist Versionsverwaltung?
Der Wikipedia-Artikel Versionskontrolle erklärt das für uns. Im SoPra verwenden wir als Versionsverwaltung Subversion (kurz SVN).
Was ist SVN?
SVN ist ein Akronym für Subversion.
Was ist Scrum?
Scrum ist ein Vorgehensmodell, an das der Ablauf im SoPra lose angelehnt ist. Mehr dazu unter dem Artikel Scrum.
Grafik, 3D Modelling, Blender
Mit welcher 3DSuite Software kann ich die 3D Modelle für unser Spiel modellieren, texturieren und exportieren?
- Blender (Support durch Tutor, Open Source, Alle folgenden Grafik-Tutorials beziehen sich auf Blender)
- Autodesk Softimage Mod Tool (Frei verfügbar für nicht-komerzielle Spieleentwicklung und Modding, integrierter XNA 3.0 Export, Free Softimage-XNA Integration Tutorial)
- Cinema4D
- Autodesk 3D Studio Max
Wo kann ich Blender downloaden und was muss ich bei der Installation beachten?
- Auf Get Blender gibt es Versionen für alle Plattformen
- Bei der Installation muss nichts beachtet werden, solange man keine bestimmte ältere ATI-Grafikkarte hat.
- Hat man doch so eine ATI-Karte und Probleme mit der Performance des User Interfaces: BlenderATIIssue
Game Mechanic
Mein Spiel soll Spass machen, was muss ich beachten?
Eine schwierige Frage, die sich schon viele vor dir gestellt haben und auf die es keine eindeutige Antwort gibt. Am Besten man schaut sich zuerst Spiele mit einem vergleichbaren Inhalt/Theme an (z.B. in der Historie der Fliegerspiele). Außerdem haben wir noch eine Übersicht von brauchbaren Weblinks, die sich mit dem Thema Game Mechanic beschäftigen.
Entwurf
Wie schreibt man ein GDD und was muss da alles drin sein?
Das GDD soll einen Überblick geben wie das fertige Spiel später aussehen wird. Ein kleiner Leitfaden dazu ist im GDD-Artikel zu finden.