21
Technische Universität München Game Development 1 Proseminar Objektorientiertes Programmieren mit .NET und C# Philipp Kaiser Institut für Informatik Software & Systems Engineering

Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Game Development 1

Proseminar Objektorientiertes Programmieren mit .NET und C#

Philipp Kaiser

Institut für Informatik

Software & Systems Engineering

Page 2: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

06.02.2013 Game Development 1 2

Agenda

Allgemeine Spieleentwicklung

XNA: Vereinte Programmierschnittstellen

Entführung in die Praxis

Page 3: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Allgemeine Spieleentwicklung

Geschichte der Spieleentwicklung

Das Rundensystem

Performanz

Programmierschnittstellen

06.02.2013 Game Development 1 3

Page 4: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Geschichte der Spieleentwicklung

Pong (1972)

NES(1983)

Wolfenstein (1992)

Die Sims (2000)

World of Warcraft (2004)

Battlefield 3 (2011)

06.02.2013 Game Development 1 4

Page 5: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Das Rundensystem

06.02.2013 Game Development 1 5

Spieleschleife

Neue Berechnungsrunde

Spielstart Spielende

Initialisierung Inhalte ladenSpieleingabe

abfragenSzene neu berechnen

Szene zeichnen

Inhalte entladen

Page 6: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Perfomanz

Die Spieleschleife muss für jedes Bild (Frame) einmal durchlaufen werden

Für ein flüssiges Spielgefühl werden 30 frames per second (fps) benötigt

Art und Aufwand des Spieles entscheiden über Rechenaufwand der

Schleife

Wahl der Programmiersprache

06.02.2013 Game Development 1 6

Page 7: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Programmierschnittstellen

Entwicklung von Grafik-APIs aufgrund

der enormen Komplexität der Grafikkarte

Einfaches und grafikkartenunabhängiges

Anzeigen von 2D und 3D-Grafik

Die zwei bekanntesten sind OpenGL und DirectX

06.02.2013 Game Development 1 7

Page 8: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

XNA: Vereinte Programmierschnittstellen

Überblick und Geschichtliches

Schnittstellen

Ein neues Projekt

Die Spieleschleife

Die Content-Pipeline

Das Zeichnen

Input

Kollision

2D und 3D

06.02.2013 Game Development 1 8

Page 9: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Überblick und Geschichtliches

XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für

Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie

Windows Phone 7.

XNA Game Studio 1.0 erschien am 11. Dezember 2006

Aktuell: XNA Game Studio 4.0 vom 16. September 2010

06.02.2013 Game Development 1 9

Page 10: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Schnittstellen

Direct3D (Ausgabe in 2D und 3D)

XACT (Audioausgabe)

XInput (Kommunikation mit Input-Geräten)

06.02.2013 Game Development 1 10

Page 11: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Ein neues Projekt

XNA erstellt automatisch:

Eine Game-Klasse

Eine Main-Methode

Ein Content-Verzeichnis

für alle Bilder/Texturen,

Musik, Sound, Schriftarten,

06.02.2013 Game Development 1 11

Page 12: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Die Spieleschleife (1)

berechne

zeichnewarte

06.02.2013 Game Development 1 12

Page 13: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Die Spieleschleife (2)

public class Game1 : Microsoft.Xna.Framework.Game {

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch;

public Game1()[...]

protected override void Initialize() [...]

protected override void LoadContent() [...]

protected override void UnloadContent() [...]

protected override void Update(GameTime gameTime)[...]

protected override void Draw(GameTime gameTime)[...]

}

06.02.2013 Game Development 1 13

Page 14: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Contentpipeline (1)

Ein Asset ist eine Ressource für das Spiel, z.B. 3D Modelle, Audiodateien

oder Grafiken

Die Content Pipeline von XNA ermöglicht es einfach Assets für das Spiel

zu konvertieren

XNA bereitet alle Dateien entsprechend dem Zielsystem auf

(z.B. unteschiedliche Audioformate für Windows und XBox)

Kein Problem mit verschiedenen Formaten

06.02.2013 Game Development 1 14

Page 15: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Die Contentpipline (2)

06.02.2013 Game Development 1 15

[…]

private Texture2D baumTexture;

private Texture2D bottleTexture;

private Texture2D grasTexture;

private SpriteFont scoreFont;

protected override void LoadContent(){

baumTexture = Content.Load<Texture2D>("Texture/Baum");

bottleTexture = Content.Load<Texture2D>("Texture/Flasche");

grasTexture = Content.Load<Texture2D>("Texture/Gras");

scoreFont = Content.Load<SpriteFont>("ScoreSchrift");

}

[…]

Page 16: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Das Zeichnen

06.02.2013 Game Development 1 16

Für 2D Zeichnungen benötigt man die Hilfe des SpriteBatch-Objektes

protected override void Draw(GameTime gameTime) {

GraphicsDevice.Clear(Color.CornflowerBlue);

spriteBatch.Begin();

spriteBatch.Draw(targetTexture, target.position, Color.White);

spriteBatch.Draw(baumTexture, new Vector2(x, y), Color.White);

spriteBatch.DrawString(font, "Level:“, new Vector2(5, 25), Color.Black);

spriteBatch.End();

}

Page 17: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Input

Alle Eingaben müssen extra abgefragt werden!

GamePadState gamePad = GamePad.GetState(PlayerIndex.One);

KeyboardState keyboard = Keyboard.GetState();

if (keyboard.IsKeyDown(Keys.Left) && bunny.position.X > 0) {

bunny.position = new Vector2(bunny.position.X - SPEED * (float)gameTime.ElapsedGameTime.TotalSeconds, bunny.position.Y);

}

if (keyboard.IsKeyDown(Keys.Right)) {…}

if (keyboard.IsKeyDown(Keys.Up)) {…}

if (keyboard.IsKeyDown(Keys.Down)) {…}

if (keyboard.IsKeyDown(Keys.Space)) {

bunny.jump = true;

}

if (keyboard.IsKeyDown(Keys.Escape)) {

ingame = false;

pause = true;

}

06.02.2013 <Footer> 17

Page 18: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Kollision

06.02.2013 Game Development 1 18

XNA bietet eine einfache Art 2D Kollision zu überprüfen.

Rectangle target = new Rectangle(PositionX1, PositionY1, TextureWidth1, TextureHeight1);

Rectangle hindernis = new Rectangle(PositionX2, PositionY2, TextureWidth2, TextureHeight2);

if (hindernis.Intersects(target)) {

[…]

}

Für 3D Anwendungen bietet XNA die BoundingBox und BoundingSphere

Sonstige Kollisionsmodelle müssen selbst implementiert werden

Page 19: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

2D und 3D

XNA bietet eine einfache Möglichkeit für 2D Projekte

3D Projekte benötigen Modelle und Wissen im Umgang mit Vertices

Vertexeigenschaften werden von XNA bereitgestellt

Meist ist ein 3D-Projekt alleine nicht mehr zu bewerkstelligen

06.02.2013 Game Development 1 19

Page 20: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Entführung in die Praxis

06.02.2013 Game Development 1 20

Page 21: Game Development 1 · XNA (XNA's Not Acronymed) ist eine Technologie zur Spieleentwicklung für Microsoft Windows, Xbox 360, Microsofts MP3-Player Zune sowie Windows Phone 7. XNA

Technische Universität München

Fragen?

06.02.2013 Game Development 1 21

Vielen Dank für Ihre

Aufmerksamkeit!