Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder

 
WEITER LESEN
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Game Development
mit der eigenen Engine

                            Philipp Hellmann
              Lead Technical Artist / Founder
              philipp@pipedream-games.com
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Agenda
•   Pipedream Team
•   Der Weg zur Pipedream Engine
•   Allgemeines zur Spieleentwicklung
•   Technisches zur Engine
•   Grafik Pipeline und Optimierungen
•   Ausblicke
•   Aktueller Stand: erste App "Memotion"
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Pipedream Team

      Felix Klakow
      Lead Developer & Gründer

      Philipp Hellmann
      Lead Technical Artist & Gründer

      Tarek Samaan
      Creative Director & Shareholder
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Eine eigene Engine?

                      WHY???
                      WHY GOD,
                      WHY!!!!
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Fremde Engines?
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Pro fremde Engine

•   Kostengünstig
•   Gute Artist Pipeline
•   Feature Set
    (Partikel, Animation, Multiplattform, Asset Store, etc)
•   Bekanntheit
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Pro Eigenbau
•   Source Code
•   Maßgeschneiderte Content Pipeline
•   Entwicklungsgeschwindigkeit
•   Begeisterung und Herausforderung
•   Kostenneutral
•   Modularer Aufbau
•   Vermarktungsmöglichkeiten
•   Devices / Features simulierbar
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Game Development mit der eigenen Engine - Philipp Hellmann Lead Technical Artist / Founder
Säulen des Game Development

                 Engine       2D Graphics
                               3D Models
                Gameplay       Animation
                  Tools         Texturing
                 Shader         Shading
               Optimisation   Optimisation
Gameplay                         Export        Planning
Storytelling                                  Organisation
 Concept                                       Marketing
Mechanics                                      Business       Music
   Level                                          QA         Sound FX
  Design

DESIGN         CODE             ART          PRODUCING       SOUND
Der Weg zur Pipedream Engine
•   Entwicklungsumgebung
•   Programmiersprache
•   Basis Framework
•   Tools
•   Grafik API
OpenGL oder DirectX
•   OpenGL ( ES 2.0 )
    o   Plattform unabhängig!
    o   Komplexer, schwieriger wie...

•   DirectX
    o   Leichtere Entwicklung
    o   nur Windows & Windows Phone
Vorgehensweisen mit OpenGL
Handle = GL.GenTexture()
GL.BindTexture(TextureType, Handle);
GL.TexImage2D(TexImage2DTarget.TEXTURE_2D, i, internalFormat, Width
   >> i, Height >> i, tImgFormat, pixelType, source.GetData(i));
GL.TexParameter(TextureType.TEXTURE_2D,
   TexParameter.TEXTURE_MIN_FILTER,
   (Int32)TextureMinFilterParams.LINEAR_MIPMAP_LINEAR);
GL.TexParameter(TextureType.TEXTURE_2D,
   TexParameter.TEXTURE_MAG_FILTER,
   (Int32)TextureMagFilterParams.LINEAR);
GL.TexParameter(TextureType.TEXTURE_2D, 0x84FE, anisotropicQuality);
GL.TexParameter(TextureType.TEXTURE_2D,
   TexParameter.TEXTURE_WRAP_S, (Int32)wrapS);
GLTextures.TexParameter(TextureType.TEXTURE_2D,
  TexParameter.TEXTURE_WRAP_T, (Int32)wrapT);
Wo fängt man an?
•   Basis-Framework
    o   Shader
    o   VertexBuffer
    o   Texturen
    o   Mathematik ( Matrizen, Vektoren, Quaternions,... )
    o   Dependency Objects
    o   Coroutinen
Vertex shader
attribute vec3 aPosition;
attribute vec3 aNormal;
attribute vec4 aTangent;
attribute vec2 aUV0;
uniform mat4 modelViewMatrix;
varying mediump vec2 vUV0;
varying mediump vec3 vNormal;
varying mediump vec4 vTangent;

void main()
{
    gl_Position = modelViewMatrix * vec4(aPosition, 1);
    vUV0 = aUV0;
    vNormal = aNormal;
    vTangent = aTangent;
}
Pixel-Shader
uniform sampler2D uDiffuse;
uniform sampler2D uAlpha;
uniform vec4 uTeamColor;
varying mediump vec2 vUV0;
varying mediump vec3 vNormal;
varying mediump vec4 vTangent;

void main()
{
    vec3 n = normalize(vNormal) * 0.5 + vec3(0.5, 0.5, 0.5);
    vec4 diffuse = texture2D(uDiffuse, vUV0);
    float alpha = texture2D(uAlpha, vUV0).r;
    float invAlpha = 1 - alpha;
    gl_FragColor = (vec4(dot(n, vec3(.393, .769, .189)), dot(n, vec3(.349, .686, .168)),
            dot(n, vec3(.272, .534, .131)), 1) * vec4(diffuse.rgb, 1) * invAlpha) + (uTeamColor * alpha);
}
Wo mach man weiter?
•   GUI - Graphical User Interface
    o   Text ( Fonts laden & darstellen )
    o   Event-Handling
    o   Basic-Controls
    o   Button, ListBox, Slider, ToggleButton, Fenster
    o   Container Struktur
    o   Databinding!!
    o   XML-Beschreibungsformat für das User-Interface
GUI in unserer Engine
Unity:
if (GUI.Button (new Rect (Screen.width - 150 - 10, Screen.height - 100 -
    10,150,100),
   "I am a button"))
         {
                  print ("You clicked the button!");
             }

Pipedream Engine:
Engine Demo
1-Tages Demo:
•   GUI Features
•   3D Darstellung
•   XML und UI-Skins
2D Grafik Pipeline
Aktuell:

Zukünftig:
2D Grafik Pipeline
2D Grafik Pipeline
Hürden der Echtzeitgrafik
Hürden der Echtzeitgrafik
2D Grafiken

Speicherverbrauch!
-> Performance Probleme
-> Darstellungsqualität

Mögliche Ansätze:
Wiederbenutzung, Kompression, Mipmaps, Prozedurale Grafik
Optimierungsmöglichkeiten
Mip Mapping
Optimierungsmöglichkeiten
Mip Mapping

links: kein Mipmapping
rechts: mit Mipmapping
Optimierungsmöglichkeiten
Hardwaretexturformate:
ETC1 (Ericsson Texture Compression)

PVRTC (PowerVR Texture Compression)

ATITC (ATI Texture Compression)

S3TC (S3 Texture Compression)
Optimierungsmöglichkeiten
3D Grafik
Vertex, Polygon Faces, UVW Koordinaten, Hierarchien, Shader, etc
-> Export Format (OBJ, FBX, COLLADA, eigenes)
3D Grafik
Optimierungsmöglichkeiten:

•   Polygoncount
•   Texturgröße und Anzahl
•   Shader
•   Batching

Faken:
z.B. Licht mittels Lightmapping
1. UV Kanal für Diffuse Texture
2. UV Kanal für Lightmapping
-> Shader wird benötigt
3D Grafik
Zu meisternde Hürden:

•   3D Format importieren (FBX)
•   Animationen (Morphtargets, Bones/Skin)
•   Materialien / Shader Editor
•   Partikel (auch 2D)
•   Physik (bereits integriert: OpenSource)
3D Grafik als 2D Spiel
3D Grafik als 2D Spiel
Geburt eines Characters
Geburt eines Characters
Geburt eines Characters
Technical Artist Tools
Coder von UI befreit, dank XML Struktur!

Kleine Hilfsmittel im Alltag der Grafiker:

Pipedream Technical Artist Tools
   •   C# PVRTC Command Line Tool
   •   Puzzle Piece Generator
   •   MultiExporter
Probleme bei der Entwicklung
•   Plattform abhängige Unterschiede

    o Unterschiedliche Grafikchips

    o   Plugins (Stores, Werbung, etc)

    o   Unterschiedliche Auflösungen -> komplizierte UI

•   Ausführliches Testen extrem aufwendig

•   Viele weitere Probleme (Apple, Compilerfehler)
Memotion - erstes 2D Game
Memotion - erstes 2D Game
Game Development, Advertisment, Visualisation

Kontakt: mail@pipedream-games.com
www.pipedream-games.com
memotion.pipedream-games.com

                                                Vielen Dank!

"Memotion" iOS App bald kostenfrei verfügbar!
Sie können auch lesen