Esityksen kalvot
Download
Report
Transcript Esityksen kalvot
Radiant Raccoon
13.4.2015
Radiant Raccoon
1
Ketä me olemme?
Remo
Työkaluasiantuntija
C++/C#
.NET/WIN32
Timo
3D-asiantuntija
C/C++
OpenGL
Radiant Raccoon
Peliteknologiaan keskittynyt softatalo
6+ työntekijää
13.4.2015
Radiant Raccoon
2
Mitä me teemme?
Peliteknologiaa
Middleware-periaatteella
Moottori jatkokehitykseen
Valmis pohja käyttöön
Tuotteet
3D-moottori
Skriptimoottori
Pelikoodipohja
Työkalut
13.4.2015
Radiant Raccoon
3
Pelimoottorit
13.4.2015
Radiant Raccoon
4
Mikä on pelimoottori?
Pelinkehitysalusta (vrt .NET)
Käytännössä
○ Valmiita kirjastoja
DLL ja/tai LIB
○ Valmiita toteutuksia
Työkalut (Editorit, konvertterit yms.)
Tarkoitus auttaa pelin kehittelijöitä
Keskittyä vain itse pelin tekemiseen
Yhtä monta toteutusta kuin tekijöitä
Suurimpia tekijöitä
Id (Doom)
Epic (Unreal Engine)
Emergent (Gamebryo)
13.4.2015
Radiant Raccoon
5
Pelinkehitysrakenne
Animation Content
Realtime Rendering
Cinematic Content
Lip Sync
Motion Capture
Third Wish Software Magpie
OC3 Impersonator
Biovision
Motion Analysis
Vicon Motion Systems
Offline Renderer
Compositing Editor
Video Playback
Realtime Video Renderer
Realtime Audio Renderer
Pixar PRMan
Mental Images Mental Ray
Splutterfish Brazil
Nvidia Gelato
Adobe Premier
AVID Xpress
Adobe AfterEffects
Discreet Combustion
Newtek Digital Fusion
RAD Game Tools Bink
CRI Sofdec
Factor 5 DivX
RAD Games Tools Pixomatic
ATI Radeon
Nvidia GeForce
Creative Soundblaster
REALTEK AC’97
Nvidia NForce
Animation Editor
Kaydara MotionBuilder
RAD Game Tools Granny 3D
Natural Motion Endorphin
Curious Labs Poser
World/Level Editors
Simulation Technology
World/Level Editors
Physics Engine
3D Editors
Game Asset Conversion
Havok
Criterion Renderware Phyiscs
Novodex Novodex Physics
Game Engines
Game Asset Conversion
3D Editor
Game Engines
Alias Maya
Discreet 3D Studio Max
SoftImage XSI
Newtek Lightwave
Criterion Renderware Graphics
Epic Unreal
NDL Gamebyro (NetImerrse)
Touchdown Entertainment Jupiter
Id Quake/Doom
Valve Half Life 2
Crytek CryEngine
Vicarious Visions Intrinsic Alchemy
Spinor GmbH Shark 3D
Trinigy GmbH Vision
Virtools (Prototyping)
UI Creation/Menus
UI Creation/Menus
Macromedia Flash
Secret Level Flash Player
Anark GameFace
Criterion Maestro
Converters
Converters
AI
Criterion Renderware AI
Biographic AI.implant
Ikuni
Scripting Lang
Voice Recognition
LUA
Python
Java
UnrealScript
Advanced Media OmiVoice
C#, VB, C++
Multiplayer Technology
Right Hemisphere Deep Exploration
Okino Polytrans
Networking
MMOG
Quazal Net-Z
Terraplay
Demonware BitDemon
Butterfly Butterfly.NET
Zona TerraZona
Bigworld Bigworld
Online Services
DirectPlay
Winsock
GameSpy GameSpy
Sega SNAP
Valve Steam
Live
Mesh/Material Content
3D Image Editor
Image Editor
PixoLogic Z-Brush
Interactive Fx Amazon Paint
Right Hemisphere Deep Paint
Right Hemisphere Deep UV
Adobe Photoshop
JASC Paintshop PRO
Corel Painter
Web Technology Optpix iMageStudio
Shader - Composers
Shader - Creation
Face Generation
Nvidia FX Composer
ATI RenderMonkey
Rt/zen RT/Shader
Singular Inversions FaceGen
Virtual Clones
13.4.2015
Process
Audio Content
Audio
Asset Management
Dev Tools
Debugger
Bug Tracking
RAD Game Tools Miles
Creative Labs Sensaura
CRI ADX
Firelight FMOD Sound System
Alienbrain
Metroworks
SN Systems
Compuware SoftICE
BugZilla
XACT
DirectSound
Source Management
Build Tools
Perforce
CVS
Subversion
Xoreax IncrediBuild
JetFrog JetBuild
Audio Editors
Cakewalk Cakewalk Pro
Sonic Foundry Sound Forge
Adobe Audition
Digidesign ProTools
OSS Audacity
Test Tools
Visual Studio
Visual Studio
MS Build
Profilers
Intel Vtune
Sony Performance
Analyzer
PIX
Document Generation
HTML Help
VS SourceSafe
VS Team System
Radiant Raccoon
GamePlay Analysis
OSS Docbook
Doxygen
ndoc
Studio
Criterion Renderware Studio
6
Pelimoottorin rakenne
Yleinen piirtohallinta
Grafiikka
Renderöinti
Fysiikka
Tekoäly
Skripti
Tapahtumat
Pelimoottori
Pelidynamiikka
Actor
Hahmoluokkamääritykset
Static model
Konvertterit
Työkalut
Rakennuspalikat
13.4.2015
Radiant Raccoon
7
Tärkeimmät tekijät
Pelilogiikan järkevä hallinta
Järkevä näyttämön hallinta
Assettien hallinta
Resurssien hallinta
Nopeus ja tehokkuus
Muistivaatimukset
Monisäikeistys
Muunneltavuus
Komponenttien monikäyttöisyys
13.4.2015
Radiant Raccoon
8
Grafiikka
13.4.2015
Radiant Raccoon
9
Graafiset assetit
Näyttämögeometria
Mesh
Particle system
Billboard
Parametriset pinnat
Piirtoassetit
Tekstuurit
Varjostimet
Materiaalit
13.4.2015
Radiant Raccoon
10
Näyttämögeometria
Mesh
Koostuu polygoneista
Verteksit
Verteksi-indeksit (topologia)
Materiaali
Tekstuurit
Rendaajan raakamateriaali
13.4.2015
Radiant Raccoon
11
Näyttämögeometria
Particle system
Koostuu pisteistä (spriteistä)
Verteksit
Materiaali
Tekstuurit
Efektit
Räjähdykset
Pölypilvet
Kipinät
13.4.2015
Radiant Raccoon
12
Näyttämögeometria
Billboard
Periaatteessa kaksi polygonia
Verteksit
Materiaali
Tekstuurit
Käyttöliittymä
Napit
Vivut
Efektit joissa tarvitaan isoja, suuren
alueen peittäviä polygoneja
13.4.2015
Radiant Raccoon
13
Näyttämögeometria
Parametrisoidut pinnat
Pinta määritellään tesseloimalla
polynomiaalipinta
Luodaan edellä mainittu mesh
○ Automaattinen LOD
Tesselointi voidaan suorittaa myöhään
○ Projektion jälkeen
Bézier-pinnat
NURBS (Non-Uniform Rational B-spline
Surfaces)
13.4.2015
Radiant Raccoon
14
Piirtoassetit
Tekstuurit
Bittikartta
Venytetään polygoneiden päälle
Käytetään parametreina varjostimille
Voidaan käyttää monella eri tavalla
13.4.2015
Radiant Raccoon
15
Piirtoassetit
Varjostimet
Toteuttavat itse piirtämisen
Verteksivarjostimet
Käsittelevät yhden verteksin kerrallaan
Geometriavarjostimet
Käsittelevät yhden kolmion kerrallaan
Fragmentvarjostimet
Käsittelevät yksittäiset fragmentit
13.4.2015
Radiant Raccoon
16
Piirtoassetit
Varjostimet
Verteksivarjostin
13.4.2015
Geometriavarjostin
Radiant Raccoon
Fragmentvarjostin
17
Piirtoassetit
Materiaalit
Käytetyt varjostimet
Parametrit
Tekstuurit
Piirron tilan muutokset
Alpha blending
Stencil test
Jne.
13.4.2015
Radiant Raccoon
18
Grafiikka
13.4.2015
Radiant Raccoon
19
Rakenteita
Scene graph
BV-hierarkia
BSP-puu
Octree (Kasipuu)
Portal graph
13.4.2015
Radiant Raccoon
20
Graafisten assettien hallinta
Scene graph
Näyttämö hierarkisesti organisoitu
Node
○ Kinematiikka
○ Bounding volume
Leaf
○ Geometria
Materiaalit
Tekstuurit
○ Valot
Helppo käyttää skinnauksen kanssa
13.4.2015
Radiant Raccoon
21
Graafisten assettien hallinta
BSP-puu
Näkyvyysmäärittely
Lehtisolmut konvekseja polygonisettejä
Valmiiksi laskettu
○ PVS
Dynaaminen
○ Portalit lehtisolmujen välillä
Muistiin lataus vain tarvittaessa
13.4.2015
Radiant Raccoon
22
Graafisten assettien hallinta
Octree
Nopea tapa selvittää näkyvyys
Jos solu näkyy, testataan lapset
Tarvitaanko geometriaa
Voivatko objektit koskettaa toisiaan
13.4.2015
Radiant Raccoon
23
Graafisten assettien hallinta
Portal graafi
Solut minkä muotoisia tahansa
Portalit solujen välillä
Käsin koottu
Laajentaa BSP-puita
13.4.2015
Radiant Raccoon
24
Grafiikka
13.4.2015
Radiant Raccoon
25
Yleisesti
Piiretään näyttämön geometria
Materiaalit
Varjostimet
Tekstuurit
Meshit
Efektit
Ei yhtä oikeaa toteutusta
13.4.2015
Radiant Raccoon
26
Renderöinti
Syöte näyttämöltä
Pre-Process
• Materiaali
• Mesh
• Optiot
•
•
•
•
Luokittelu
Lajittelu
Jonotus
Vaativin
Process
• Jonon tyhjennys
Valmis kuva
13.4.2015
Radiant Raccoon
27
Renderöinti
13.4.2015
Radiant Raccoon
28
OpenGL
Periaatteet
Tilakone
Objektit
○ Kiinnitykset
○ Parametrit
Kutsuperiaate
○ Vrt. DX OO-lähestymistapa
Yksinkertainen
Laajennettavissa
Alustariippumaton
13.4.2015
Radiant Raccoon
29
OpenGL
Miksi käytämme?
Ei erityisiä syitä
Mukana teknologian kehityksessä
Alustariippumaton
GLSL
13.4.2015
Radiant Raccoon
30
OpenGL
Initialisointi
Luodaan ikkuna
Haetaan DC
Luodaan renderkonteksti (RC)
Liitetään RC aktiiviseksi DC:llä
Sample
13.4.2015
Radiant Raccoon
31
OpenGL
Vertex Buffer
Verteksidatan tallennuspaikka
OpenGL hallitsee muistia
○ Missä verteksidata sijaitsee
Vid mem
System mem
Nykyään myös stream out target
○ Verteksi-/Geometriavarjostimen output VB:hen
Voidaan myös tallentaa indeksidataa
Sample
13.4.2015
Radiant Raccoon
32
OpenGL
Tekstuurit
Sample
13.4.2015
Radiant Raccoon
33
OpenGL
GLSL
Varjostintoteutus
Korkean tason ohjelmointikieli
Ällistyttävän helppo käyttää
Sample
13.4.2015
Radiant Raccoon
34
OpenGL
Infoa
www.opengl.org
13.4.2015
Radiant Raccoon
35
Työkalut
13.4.2015
Radiant Raccoon
36
Komponentit
Yleisesti
Peruskäsitys
Osa jotain suurempaa
Itsenäinen
Osaa keskustella
Esimerkiksi
Microsoft Windows/.NET
○ Nappi, Valintaboksi, Ikkuna
○ Forms, Button, PictureBox
Kaikki peritty Control:ista
13.4.2015
Radiant Raccoon
37
Komponentit
Ohjelmoinnin kannalta
Forms
Button
Control
13.4.2015
Radiant Raccoon
38
Komponentit
Pelimoottorissa
Peliobjektit = komponetit
Helppo hallita
○ Lisäys, muokkaus ja poisto
Yleensä hidasta
○ Muistia ja prosessointiaikaa kuluu hallintaan
○ Vaikea piirtää
Riippuvuudet
Ympäristö
Käytetään hybridia
○ Komponentti
○ Proseduraalinen
13.4.2015
Radiant Raccoon
39
Komponentit
Ongelmana
Komponenttimaisuus
Tehokkaasti
13.4.2015
Radiant Raccoon
40
Työkalut
13.4.2015
Radiant Raccoon
41
Yleiset tehtävät
Fysiikka
Animaatiot
Pelilogiikka
Skripti
Ääni
Verkko
Sisällöntuotanto
Käsikädessä moottorin kanssa
13.4.2015
Radiant Raccoon
42
Pelimoottorityökalut
Fysiikka
Objektien parametrit
Paino
Voimat
Olomuoto (esim. vesi, tuli)
Ympäristön määrittelyt
Avaruus, vesi, maapallo yms.
13.4.2015
Radiant Raccoon
43
Pelimoottorityökalut
Animaatiot
Käyttö
Sekvenssit
Animoitu tapahtuma
○ Kävely
○ Juoksu
Sekoitukset
Animaatioiden miksaus
○ Juoksua ja nyrkillä lyöntiä
Hallinta
Mitä missäkin ja miten
13.4.2015
Radiant Raccoon
44
Pelimoottorityökalut
Pelilogiikka
Tekoäly
Reaktiot
○ Näkee jotain
○ Joku osuu
Skriptaus
Tekoäly
”Käsikirjoitus” pelille
”Syy ja seuraus” -hallinta
Yleiset toiminnot
Toimintojen hallinta
Ohjaimen toiminta
○ Näppäimistö
○ Hiiri
○ Ohjain
13.4.2015
Radiant Raccoon
45
Pelimoottorityökalut
Ääni
Hallinta
Nimeäminen
Linkkaus
○ huuda = ukon_huuto.wav
Miksaus
Äänen tasot
Päällekkäisyydet
Ympäristön simulointi
Ympäristöäänet
3D-äänet
Äänen suunnat
13.4.2015
Radiant Raccoon
46
Pelimoottorityökalut
Verkko
Moninpeli
Pakettien hallinta
Päivitykset
Patchit
Lisäosat
Virheen raportointi
Alustaongelmat
Laitteistotuki
13.4.2015
Radiant Raccoon
47
Pelimoottorityökalut
Sisällöntuotanto
Kentän suunnittelu
Hahmot
Parametrisointi
○ Ominaisuudet
○ Tekoäly
○ ”Identity”
Lisäys
Muokkaus
Peliobjektit
Kukka, seinä yms
Lisäys, muokkaus ja poisto
13.4.2015
Radiant Raccoon
48
Pelimoottorityökalut
Käsikädessä moottorin kanssa
Tehokkain hyötysuhde
Spesifisiä toteutuksia
Optimaalisin
Ominaisuudet aina tiedossa
Varjostimet
Rendaajat
13.4.2015
Radiant Raccoon
49
Työkalut
13.4.2015
Radiant Raccoon
50
Esimerkkejä työkaluista
Epic: Unreal Engine
13.4.2015
Radiant Raccoon
51
Esimerkkejä työkaluista
Id: DOOMEdit
13.4.2015
Radiant Raccoon
52
Esimerkkejä työkaluista
Emergent: Gamebryo
13.4.2015
Radiant Raccoon
53
Esimerkkejä työkaluista
Yleisiä vikoja
Liian komponenttimainen
Ei helppoa siirtoa osasta toiseen
○ Jokainen oma ohjelmansa
○ Käyttöliittymät eroavat toisistaan
Ei selvää sääntöä toiminnoissa
Yksinkertainen
Suunniteltu vain tarkoitukseen
○ Ei ajateltu kehitystä
○ Vain kyseiseen versioon
○ Uusi kun uusi moottori
Käyttöliittymä ei pysy samana
13.4.2015
Radiant Raccoon
54
Esimerkkejä työkaluista
Lisätietoja
www.unrealtechnology.com
www.idsoftware.com
www.emergent.net
13.4.2015
Radiant Raccoon
55
Pelimoottorit
13.4.2015
Radiant Raccoon
56
Pelimoottorit
13.4.2015
Radiant Raccoon
57
Kiinnostaako?
Pelin tekeminen
Peliteknologian tekeminen
Osallistua uuden teknologian
kehitykseen
Graafinen suunnittelu
Muuten vaan koodaaminen
Ota yhteyttä
13.4.2015
Radiant Raccoon
58
Lisätietoja
www.radiant-raccoon.com
[email protected]
[email protected]
13.4.2015
Radiant Raccoon
59