I - Phone 3D 3D Spieleentwicklung für's I-Phone



Ähnliche Dokumente
Spiele entwickeln für ipad, iphone und ipod touch

Installations- und Bedienungsanleitung CrontoSign Swiss

FLASH IMAGESLIDER PROFESSIONELL 4

ways2gether ipad App Guide

Unity 4 Teil II. Universität zu Köln Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung Dozent: Manfred Thaller Marvin Busch

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

Der Einsatz von HDRIs in LightWave 7

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Hinweise zum Übungsblatt Formatierung von Text:

Adobe Flash CS4»3D-Tool«

Dieses Dokument beschreibt die Verbindungsherstellung mit dem WLAN-Netzwerk der PHLU auf Smartphones. hotline.hslu.ch Andere

LED WIFI Controller - Bedienungsanleitung

Adobe Encore Einfaches Erstellen einer DVD

Graphic Coding. Klausur. 9. Februar Kurs A

Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt

Ein mobiler Electronic Program Guide

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 4

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Workflows verwalten. Tipps & Tricks

Wärmebildkamera. Arbeitszeit: 15 Minuten

Icon-Grafiken für iphone/ipad-apps

Wie Sie mit einer Website tausend Geräte bespielen und das auch tun sollten

Stapelverarbeitung Konvertieren von RAW-Bildern JPEG-Format

Grafikbausatz Overlays Profi. für iphone/pocket Visu & PC Visualisierungen

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Text Formatierung in Excel


AutoCAD Dienstprogramm zur Lizenzübertragung

SmartHome ENTR - Smartes Türschloss. Kurzanleitung zur Inbetriebnahme

iphone- und ipad-praxis: Kalender optimal synchronisieren

Responsive Webdesign. Schritt für Schritt zum Design für jedes Endgerät

Umfrage. Didaktischer Kommentar. Lernplattform

Sparkasse. pushtan-einrichtung. Nutzungsanleitung pushtan. Leitfaden zur Einrichtung in OutBank für ios. Vorbereitung pushtan aktivieren Banking-App

Computerstammtisch Tegernau, Tutorial Grundlagen, Dateioperationen, Datensicherung (Screenshots und Erläuterungen beziehen sich auf Windows 7)

Installationsanleitung

Vorwort. Thomas Lucka. Spiele entwickeln für iphone, ipad und ipod touch ISBN: Weitere Informationen oder Bestellungen unter

NEU! Für alle, die es wissen wollen. Die GrenzEcho-App bringt Ihre Tageszeitung aufs ipad und auf Android-Tablets: Zu Hause in der digitalen Welt

pushtan-einrichtung Leitfaden zur Einrichtung in Sparkasse+ für ios

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Vektoren mit GeoGebra

Das Blabla des LiLi-Webteams. Browser. HTML-Dateien. Links & Webadressen. ROXEN.

Installationsanleitung

Verarbeitung von ZV-Dateien im Internetbanking. Inhalt. 1. Datei einlesen Datei anzeigen, ändern, löschen Auftrag ausführen...

Perspektiven: Spiele in ios

Terminland Schritt für Schritt

Wichtige Hinweise. Seite 2. Seite 6. Sie verwenden ein iphone oder ipad mit dem Betriebssystem ios?

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Word 2010 Grafiken exakt positionieren

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Advanced Rendering Interior Szene

AKTUALISIERT - Einrichten von imessage auf mehreren Geräten

E-Banking so richten Sie Ihren Zugriff ein

Schützen. 3M Displayschutz für Ihre mobilen Geräte Ultra Clear / Fingerprint Fading / Anti Glare / Blickschutz Displayschutzfolien

Erste Schritte mit

Anleitung zur Installation des EPSON TM-m30 WLAN Moduls

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

WLAN - MUW-NET, MUW-GUEST, eduroam // Howto für APPLE iphone/ipad ab ios8

GSD-Radionik iradionics Android-App

PowerPoint Grundkurs kompakt. Linda York 1. Ausgabe, März inkl. zusätzlichem Übungsanhang K-POW2013-G-UA

Freistellen von Haaren (Für Photoshop CS..)

2 Open BIM Workflow ARCHICAD und DDS-CAD

Bedienungsanleitung für 3D PDF

CASCADING STYLE SHEETS WEBSEITEN-GESTALTUNG MIT CSS

Zwischenablage (Bilder, Texte,...)

icartoon HANDBUCH COMPOSING

Masken-Filter Vol.7 ART EFFECTS 2

C++ Tutorial: Timer 1

Einrichtung der Bankverbindung in der VR-NetWorld-Software mit der HBCI-Chipkarte

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

DVB-T DA2 Hybrid Seite 1 von 10

60 Tipps für kreative iphone-fotografie

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

App mit InDesign Teil I

Online Editor Nachfolgend eine kurze Erklärung unseres Online Editors

OpenGL. (Open Graphic Library)

Webshop Neuerungen von Version 6.14 zu

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand:

Diese Prozesse und noch viele andere Tricks werden in der Digitalfotografie mit Hilfe von Bildbearbeitungsprogrammen, wie z. B. Gimp, bewältigt.

PhotoFiltre: Fotokorrektur schnell und einfach

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Sunet. Kurzanleitung. Schadenmeldung UVG

Das kleine 1x1 der Fotografie

Divergenz 1-E1. Ma 2 Lubov Vassilevskaya

Statuten in leichter Sprache

Drucken von Webseiten Eine Anleitung, Version 1.0

Grundlagen von Corel Draw

SPEZIALEFFEKTE IN CINEMA4D:

Der neue Mitgliederbereich auf der Homepage des DARC e. V.

POP -Konto auf iphone mit ios 6 einrichten

Mit dieser App können ebooks im epub-format auf allen Smartphones, ipodtouchs und Tablets mit dem ios ab Version 3.2 genutzt werden.

MPDS4 MODELLE IMPORTIEREN

F. Keim (kiz, Universität Ulm) SOGo Kurzreferenz 1

Elektronische Sicherheit Einfach & schnell installiert

Teiltransparente Bilder

Erstellen und Bearbeiten von Inhalten (Assets)

WinVetpro im Betriebsmodus Laptop

Transkript:

I - Phone 3D 3D Spielentwicklung für das I-Phone

Gliederung Allgemein Open GL ES Arbeitsschritte / 3D Grafik Ein Spiel entsteht Ein Beispiel

Vorgehensweise Allgemein Erzeugen von Modellen Komplexe Modelle in externen Programmen Positionierung dieser Modelle im Raum Bewegung / Animation der Modelle Kollisionsprüfung untereinander Positionierung der Kamera (Blickwinkel des Betrachters) >>> egal ob Rennspiel oder Egoshooter

Open GL ES Open Graphics Library for Embedded Systems Vereinfachte Version von Open GL für mobile Systeme Khronos.org Apple, Sony, Google, Nokia, Samsung,... Für 3D Spiele absolut notwendig 3D Koordinatensystem (x, y, z) Bei 2D Spielen wir z = 0 gesetzt Hardware und Open GL ES arbeiten über spezielle Schnittstelle zusammen EGL (Bei ios EAGL)

Open GL ES MyGameAppDelegate initiallisiert MainView, startet Spielschleife MainView initiallisiert OpenGL, GameManager, leitet den Touch-Input an den GameManager weiter GameManager Perspektive, "drawstateswithframes"- Methode (Rendern des Spiels), Verarbeitung > Touch-Input, Koordinierung OpenGLES Framework nicht vergessen!

Vorgehensweise Allgemein - (void) setoglprojection {... //Set View glmatrixmode(gl_projection); Objekte vor oder hinter znear & zfar nicht sichtbar Ist zfar zu groß gewählt leidet die Performence ZNear = 0.1; // muss größer 0 sein! zfar = 2500; FieldOfViewAngle = 45; // Blickwinkel float top = znear * tan(m_pi * fieldofviewangle / W); float bottom = -top; float left = bottom * W / H; //Seitenverhaeltnis: W / H; float right = top * W / H; glfrustumf(left, right, bottom, top, znear, zfar); // Perspektive d. Spielgeschehens...

Das 3D-Koordinatensystem 0-Punkt liegt in der Mitte Negative Z-Achse läuft in Bildschirm hinein Gegensatz zu DirectX Ein Punkt P(10,30,-20) bezieht sich nicht auf Pixelangaben man spricht von Einheiten Pixel sich erst aufgrund der Perspektive & Kameraposition

Einfache Objekte (void) drawrectangle { GLbyte vertices [ ] = { // Koordinatenpunkte -1, 1, 0, // Vertex 1 // links oben 1, 1, 0, // Vertex 2 // rechts oben -1, -1,0, // links unten 1, -1, 0 } // rechts unten glpushmatrix(); // verschiebt das Koordinatensystem ins Sichtfeld glcolor4f(1, 0, 0, 1); // Zeichenfarbe (Rot, Grün, Blau, Helligkeit) glvertexpointer(3, GL_BYTE, 0, vertices); // Werte pro Eckpunkt gltranslatef(0, 0, -6); // Verschiebung um 6 vor Sichtgrenze static int angle = 0; angle += 2; glrotatef (angle, 1, 0, 0); // Rotation um x Achse gldrawarrays(gl_triangle_strip, 0, 4); // 4 = Anzahl der Eckpunkte glpopmatrix(); }

Formen in OpenGL ES

Objekte importieren Möglich! >> Obj-Format Zum Beispiel mit 3Ds Max, Maya, Blender,... Vertex-Array Eckpunkt eines Dreiecks Normal-Array Rechter Winkel zur Fläche Texturkoordinaten-Array Faces-Array Platzsparende Speichermethode von Punkten, bezieht diese aufeinander

Quellcode Tex *tex = [[GameManager getinstance] gettex: @"asteroid.png" isimage: YES]; textureid = [tex gettextureid]; GLfloat verticesobjdata[ ] = { -0.207126, -0.066316, 23.264721,... }; GLfloat texturecoordsobjdata[ ] = { 0.511933, 0.499667, 0.753190,... }; GLfloat normalsobjdata[ ] = { 0.003697, -0.091516, 0.960635,... }; GLushort facesobjdata[ ] = { 0, 6, 8, 56, 57, 30, 56, 30, 58, 58, 30,... }; glenable(gl_cull_face); // nicht sichtbare Flächen ignorieren glcullface(gl_back); glenable(gl_texture_2d); // alle Flächen werden nun texturiert... gldisable(gl_texture_2d); // nach Abschluss, Clean up gldisable(gl_cull_face);

Licht hinzufügen Verschiedene Lichtarten GL_AMBIENT Richtungsloses Licht GL_DIFFUSE Gerichtetes Licht oberflächenreflektion gering, immer gleich GL_SPECULAR Spot mit klarer Reflektion, super z.b. für Billardkugeln Maximal 8 Lichtquellen GL_LIGHT0,...

Licht hinzufügen Im GameManager > in die (void) setoglprojection glenable(gl_lighting); //Licht ermoeglichen glenable(gl_color_material); //Standard-Material-Reflektion glenable(gl_light0); GLfloat color0[ ] = {1, 1, 1, 1}; //Farbe des Lichts gllightfv(gl_light0, GL_DIFFUSE, color0); //Art des Lichts = "diffus" GLfloat light_position0[ ] = {0, 1, 0, 0}; //Licht kommt von oben gllightfv(gl_light0, GL_POSITION, light_position0); //Lichtquelle positionieren

Kamera / Betrachter Kriterien die wir erfüllen wollen... 1. Kamera soll an jeder Position aufgestellt werden können 2. Von dort soll Blick-Richtung frei veränderbar sein Pro Frame müssen Position und Blickrichtung veränderbar sein Methode: Matrizenoperation > Transformierung der 3D Szene Nicht Kamera wird durch die Szene bewegt, sondern Objekte in Szene werden bewegt Vorgefertigte GLU-Blibliothek wie für OpenGL gibt es für die mobile Variante nicht Folge: eigene Implementierung oder Orientierung an freien Algorithmen

Ein Spiel entsteht Steuerung Bewegungssensor / Touchscreen Spielelemente Spieler, Laser-Geschosse, Asteroiden, Spionagesateliten, Texteinblendungen Aufteilung der einzelnen "Sprites"* unter eine Hauptklasse *einzelne Objekte > z.b.: Positionierungsmethoden Besonderheiten festlegen Behandlung der unterschiedliche States vorbereiten LOAD_GAME, PLAY_GAME, GAME_OVER

Spielzustände / Spielschleife - (void) drawstateswithframe: (CGRect) frame { switch (state) { // Spielstatus wird abgefragt case LOAD_GAME: [self loadgame]; // loadgame wird ausgeführt [self createogltext: @"GOOD LUCK" offsetx: 2 offsety: 2 selfdestroy: YES]; state = PLAY_GAME; break; // Status wird auf "PLAY_GAME" gesetzt case PLAY_GAME: [self playgame]; break; // playgame wird ausgeführt case GAME_OVER: [self gameover]; break; // gameover wird ausgeführt default: NSLog(@"ERROR: Unbekannter Spielzustand: %i", state); break; } }

Kollisionsprüfung - (void) checksprite: (Sprite *) sprite { Player *player = [self getplayer]; if ([sprite gettype] == ASTEROID [sprite gettype] == OBSTACLE) { if ([player checkcolwithsprite: sprite]) { [self createogltext: @"DAMAGED!!" offsetx: 2 offsety: 1 selfdestroy: YES]; [sprite hit]; [player hit]; } } if ([sprite gettype] == OBSTACLE) { for (Sprite *bullet in sprites) { if ([bullet gettype] == BULLET) { if ([bullet checkcolwithsprite: sprite]) { [self createogltext: @"DESTROYED" offsetx: 2 offsety: 1 selfdestroy: YES]; [sprite hit]; [bullet hit];...

Das Beispiel...

Vielen Dank für's zuhören!

Quellenangaben Informationen: Vgl. Spiele entwickeln für ipad, iphone und ipod touch, von: Thomas Lucka, Carl Hanser Verlag, München 2011 http://www.khronos.org/opengles/ http://www.informit.com/articles/article.aspx?p=461848 http://www.qioo.de/projekte/buch/iphonegames/ Bilder: http://www.macazin.de/wp-content/uploads/2009/03/vw-polo-spiel.jpg http://www.prlog.org/11571220-iphone-3d-game.jpg http://www.vitsly.ru/lj-shaken/lj-shaken-obj-export.jpg http://ptgmedia.pearsoncmg.com/images/chap2_0321336798/elementlinks/02fig01.gif