Damian Schmidt AG Softwareengineering, Institut für Informatik Softwaretechnik in der Spieleentwicklung Architektur zur automatisierten Spielweltgenerierung Diplomarbeit Abschlussvortrag 10.05.2012 Damian Schmidt
Einführung und Motivation 70 60 53 Mrd. USD 62 Mrd. USD 68 Mrd. USD 50 42 Mrd. USD 40 30 28 Mrd. USD Weltweiter Videospiele-Umsatz in Mrd. USD, Quelle: PwC 20 24 Mrd. USD 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 Wie stellt man ein gutes Spiel her? Wann ist ein Spiel überhaupt gut? Welchen Stellenwert hat Softwaretechnik bei der Spieleentwicklung? Einführung und Motivation 2
Inhalt Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung Ist Softwaretechnik ein Teilbereich der Spieleentwicklung oder andersherum? Teil 2 - Praktischer Teil: Projekt Spielweltgenerator Modell und Architektur zur automatisierten Spielweltgenerierung Schlussteil Fazit und Ausblick Inhaltsübersicht 3
Spieleentwicklung Definition Tätigkeitsbereich von Spieleentwicklern (engl. Game Developers) und wissenschaftliche Fragestellungen und Forschungsthemen mit Bezug zur Entwicklung digitaler Spiele. Bereiche der Spieleentwicklung Softwareentwicklung, Game Design, Mediendesign Game Design Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 4
Teamgröße Spieleentwicklungsprozess Produktionsprozess und Entwicklerteam (Beispiel): Testen und QA Grafik und Medien Programmierung Design und Management Zeitverlauf Vorproduktion Produktion Alphatest Betatest QA & Abnahme Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 5
Spieleentwicklungsprozess Teilprozess mit möglichen Zyklen: Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 6
Modelle zur Einordnung der Spieleentwicklung Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 7
Modelle zur Einordnung der Spieleentwicklung Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 8
Schnittstelle zwischen Game Design und Softwareentwicklung Gutes Spiel: Spielspaß, Gameplay, und Ästhetik Gute Software: Wartbarkeit Zuverlässigkeit Innovation Wartbarkeit, Zuverlässigkeit.. Effizienz Benutzerfreundlichkeit Wartbarkeit, Zuverlässigkeit etc. erstellt implementiert Game Design Dokument Game Designer Softwareentwickler Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 9
Fazit und Einordnung Fazit: Engineering nicht auf Software beschränken Game Engineering zur Optimierung des Spieleentwicklungsprozesses Teil 1 - Theorieteil: Softwaretechnik und Spieleentwicklung 10
Projekt Spielweltgenerator Zielsetzung: Methode: Modell und Architektur auf hohem Abstraktionsniveau entwerfen und implementieren Nutzen: Zeitersparnis bei der Erstellung von Spielwelten Stand der Technik: Terraingeneratoren, Spezialsoftware und Spieleengines mit Tools Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 11
Spielwelt-Modell Metamodell ( Primärmodell ) beinhaltet Ebenen mit Daten zur Berechnung der Spielwelt-Daten Beispiel (vereinfacht): Domänenspezifische Sprache (Domain Specific Language) Beispiel: WATER := (HEIGHT < 0,0) Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 12
Abstrakte Weltdefinition Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Umgangssprachliche, abstrakte Weltdefinition Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 13
Beispiel Generierungsprozess Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 14
Beispiel Generierungsprozess Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 15
Beispiel Generierungsprozess Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 16
Beispiel Generierungsprozess Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 17
Beispiel Generierungsprozess Parameter: Heightmap = zufällig Parameter: Meerespiegel = 0.0, Material = Grundmaterial Befehl A: Setze bei ebenen Flächen Material = Gras Befehl B: Setze bei steilen Flächen Material = Fels Befehl C: Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 18
Generierung eines Objekts Befehl Füge bei einigen halbwegs ebenen Flächen, die sich auf mittlerer Höhe befinden, Bäume hinzu Kollision mit vorhandenen Objekten? Prüfung auf Kollision und Docking Spielwelt Daten Bedingungsausdruck zur Selektierung: (HEIGHT>(-0,7))&(GRADE<(-0,1))&(HEIGHT<(0,25)) 3D Modelle: {Baum 1, Baum 2, Baum 3} Anzahl: 1000, Auswahl: zufällige Position Kollision Positionsauswahl Wähle zufälliges (x,y) im selektierten Bereich Selektierung des zulässigen Bereichs Auswertung des Bedingungsausdrucks Selektierter Bereich (HEIGHT>-0,7) AND (GRADE<-0,1) AND (HEIGHT<0,25) Nächste Iteration Objektinstantiierung 3D-Modell aus {Baum 1, Baum 2, Baum 3} Größe etc. z. B. zufällige Variation GRADE HEIGHT Spielwelt Daten Neue Bauminstanz Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 19
Architektur Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 20
High-Level Eingangsparameter Bedienschnittstelle zur Parameterkonfiguration Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 21
Beispielkonfiguration: Metamodell Parameter Mountain Height Mountain Size Mountain Roughness Water Zufall Parameter Climate HEIGHT CONTINENT SURFACE GRADE WET TEMPERATURE Ebenen und Beispieldaten im Metamodell Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 22
Beispielkonfiguration: Generierte Spielwelt Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 23
Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 24
Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 25
Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 26
Teil 2 - Praktischer Teil: Projekt Spielweltgenerator 27
Fazit Komplexitätsreduktion gelingt durch Architektur und abstraktes Modell Anwendungsmöglichkeiten in der Spieleentwicklung: Sketching und Artwork Prototyping und experimentelles Game Design Verwendung in Spielen Erweiterungsmöglichkeiten: Features Elemente Modell und Logik Schlussteil 28
Ausblick Studiengänge: z. B. Games Engineering an der TU München (ab WS 2011/2012) Forschung: Projekt SketchaWorld der Delft University of Technology (Niederlande) Schlussteil 29
Vielen Dank für Ihre Aufmerksamkeit! Schlussteil 30