SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Making A Game Engine Is
Easier Than You Think
(maybe)
• SGI Mainframes
• Set top boxes (OpenTV)
• Embedded hardware
• Mobile (iOS / Android)
• Desktop (Windows / Mac /Unix / Linux)
• PS2 / Xbox 360
14+ years in Games and VR @gormlai
Kotori Studios Ltd
gorm@kotoristudios.com
Not an Anti-Talk
Do Not (Try To)Compete!
Benefits of 3rd party engines
• Battle tested!
• Often quick to prototype
• Easier to hire!
• Deploy to X number of platforms with ease
Hidden cost of 3rd party engines
• There is no such thing as cross platform!
• You have to wait for bug fixes
• Idiosyncracies can be hard to understand
• You cannot look inside the black box
• Sharing assets / source code can be hard
• Technical limitations
• You are entirely dependent on success of one
company(!)
Hidden cost of 3rd party engines
There is no such thing as cross-platform
Desktop versus Mobile
• Different input methods
• Requires redesign of UI
• Memory requirements
• I/O is slower on mobile
• GPU Capabilities
• Difference in player demographics
• Configuration options
Hidden cost of 3rd party engines
There is no such thing as cross-platform
iOS versus Android
• Difference in resolution ratios
• Difference in payment patterns
• GPU Capabilities
• Memory Requirements
• Game Center vs. Google Play Services
• Multi-tasking / backgrounding works differently
Hidden cost of 3rd party engines
Technical Limitations
• Engines have a payload that take up space
• Less performant than custom code
• Hard to control memory usage (important on mobile!)
• Hard to control asset loading (important on mobile!)
• Not all functionality may be exposed
• Vender and OS maker doesn’t follow same upgrade
cycle
Building your own tech is hard!
(but may be easier than you think!)
You have to have the right mindset
• Only build what you need!
• Refactor as you go
• Use design patterns
Building your own tech is hard!
(but may be easier than you think!)
You have to have the right skillset:
• You need the right skill set
• Experts at the programming language of your choice
• People who have used several engines
• People who know understand scene graphs
• Don’t be afraid of math
• Understand the production pipeline
It is all about architecture!
• Forget frameworks!
• Build separate libraries that work well together
(the unix idea)
• Use libraries like lego bricks to build an “engine”
pr. game
No frameworks!
• Frameworks lock you in
• Tend to clutter
• Hard to swap out parts
No frameworks
Lock In
• Take over the game-loop
• Forced to do things in a certain way
• Near impossible to swap out components
• Forced to live with bad as well as good components
• Risky for business as everything is dependent on one
thing
No frameworks
Clutter & Dependencies
• Even modular frameworks tend to clutter
• Increases dependencies
• Makes it hard to swap out components that don’t work
Independent libraries
• Decreases individual dependencies
• Minimizes risk by minimizing dependencies
• Easier to on-board new people
• Easier to test
• Components can be swapped out(!)
Libraries @ Kotori
Statemachine
Animation
AssetDisplay
InputMaterial
Math
Rendering
Platform
Scene
Social
Sound Text
Tools
Libraries @ Kotori
• All these compile independently to
a dll / .lib
• Can and have been ported & tested
individually
V0.1
Developing the components
• Design components and libraries
• Design interfaces
• Build wrappers around existing
libraries
• Focus on getting the pipeline up
and running as fast as possible!
V0.2
The Game is Running
• The content team can now start building
• You start to understand your needs better
• Exchange one or two components that are
essential to your game!
• Again, only build what you need
V1.0
1st Game has Shipped
• Libraries have been polished and are more mature
• Reuse, iterate and improve for next game
• Piece together in a new way for a new game!
Modern C++ is not terrible!
auto, lambda, smart pointers, for loops, closures, better
std library, etc
More Book Recommendations
Use open source
(ignore the lawyers!)
• The number of mature and well-tested open source
components have exploded!
• It is white box!
• Easy to avoid GPL / LGPL as they are no longer
trendy
• More permissive licenses are getting more common
place
• Do read the small print!
Use open source
Answers from the survey
LibRocket, ZLib, Nothings Public domain projects, Ogg-Vorbis
(non-stb), SDL, Cocos 2D X, FBX SDK, Cricket Audio, Freetype,
GLEW, GLM, libpng, freetype2, ODE, jingle, Newton Game
Dynamics, Open Asset Import Library, SFML, Ant Tweak Bar, Allegro
5, Mono Game, Pugixml, Box 2D, Geometric Tools, GLFW,
NoiseLib, Bullet Physics, Gl3w, libcurl, rapidxml, rapidjson,
angelscript, Metal, LibGCM, libGDX, Raknet, lwjgl, Opus, Cal3d,
FreeImagePlus, TinyXML, Irrlicht, BGFX, Lua, libjpg, npk,
Berkelium, mysql, Collada, Cryptopp, Gdal, Awesomium, ..
Typedef important classes
Allows you to swap out components more easily!
#include <ExternalMath/Vector.h>
namespace MyMath
{
typedef ExternalMath::Vector3<float> Vector3f;
}
Prototyping
• Don’t mix prototype and production code -> good
development practice
• Prototyping helps you focus on game play
Prototyping Tools
Survey Answers
• Pen & Paper
• Cardboard
• Powerpoint
• Unity
• Index Cards
• Action Script / Flash
• Construct
• Basic C++ & OpenGL
• Blender
• …
Building the Editor
Alternatives to the Swiss Army Knife
• Build game as dynamic / static library OR
• Embed editor in game
• Build editor of reusable components (widgets, etc),
exactly like the game
• Editor can be build using a different programming
language:
• .Net (C# / F#) with WPF / Windows Forms
• Objective-C with UIKit
• C++ using a GUI Library
• etc
Off-the-Shelf Editors
Alternatives to the Swiss Army Knife
• 3D
• Sony Authoring Tools Framework LevelEditor
Off-the-Shelf Editors
Alternatives to the Swiss Army Knife
• 2D
• Tiled
• Overlap 2D
• TexturePacker
• PhysicsEditor
• SpriteIlluminator
• Spine
• Spriter
• Fusion Character Animator
Do You Need A Game Editor?
Alternatives to the Swiss Army Knife
• Data-Driven Design
• Use a mix of tools to drive game changes
• Hard to avoid scripting language
Focus on the Pipeline
How Fast Can The Team Iterate?
• From Photoshop / Audacity to Game
• Open Asset Import Library
• libpng, libjpg, ogg-vorbis,
• Generate derived formats behind the scenes
• From 3D modelling package to Game
• FBX SDK
• Collada
• Open Asset Import Library
Focus on the Pipeline
How Fast Can The Team Iterate?
• Adding GameState
• Exporting state from Visual Design
• UI Layouting
• Design in your favourite tool, using known
conventions (folder structure, layers, xml tags,
etc)
• Hot loading
Focus on the Pipeline
Scripting
• Many scripting language offerings
• Hold long does it take to see my changes?
• .Net / JVM has recompile-on-the-fly built in!
Commercial Components
• Granny 3D
• PhysX
• Havok
• Bink
• FMOD
• WWISE
• Miles Sound System
• Beast
• Enlighten
• FBX SDK
• Elephant
Survey
Comments
positive
Tried all the major engines, they're good for basic
manipulations but once you want to do more
advanced stuff, such as loading a level in a
background thread, there is a huge learning curve
and a huge dependency on the developer
community which sometimes consists of students
responding to forum questions. Absolutely not the
way I'd want to work.
1. performance tuned to game
2. ability to alter code to suit my needs
3. ability to tune load times/etc.. Which i
consider to be massively important on an ios
game. Using <engine name> and making user
wait for ages to load - isnt on.
Independence, control, ability to target emerging platforms
No blackbox portion in my code base. Save a ton of time from debugging and finding out why shit blew up.
Building a game as a service, with a
lifetime of 2+ years it's safer to have
control over your tech.
Workflow, features adopted for your type
of games, not a one size fits all solution.
Possible to adapt and render pipeline to suit project
Comments
negative
Some people never ship games, just keep tweaking the engine.
- Investment ( hours spent creating it, and
keeping it up to date)
- Hires will not know the tech, vs. e.g. many
people know Unity already
- You're not learning a "standard skill" that
might be a wanted one down the road ( e.g.
Unity development skills)
One step forwards, Four steps
backwards ... 80 percent of resources
spent on the pursuit of technological
dead ends, unavoidable consequence
of working outside the conventional
scope
The time to build it!
Tool development is time-consuming, and
good tools = good games.
Overall, we've now found that maintaining
our own engine is too expensive and puts
us at a competitive disadvantage.
Bug fixing and maintenance takes a lot of time which could be spent on games itself
Hard for new hires to learn.
C++ programmers are rare.
?@gormlai
gorm@kotoristudios.com

Contenu connexe

Tendances

Choosing your Game Engine (2009)
Choosing your Game Engine (2009)Choosing your Game Engine (2009)
Choosing your Game Engine (2009)Mark DeLoura
 
Game engine introduction and approach
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approachDuy Tan Geek
 
Introduction to android (and mobile) game development
Introduction to android (and mobile) game developmentIntroduction to android (and mobile) game development
Introduction to android (and mobile) game developmentRuslan Novikov
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game EngineMohsen Mirhoseini
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game DevelopmentShaan Alam
 
Game engines and Their Influence in Game Design
Game engines and Their Influence in Game DesignGame engines and Their Influence in Game Design
Game engines and Their Influence in Game DesignPrashant Warrier
 
game development
game  developmentgame  development
game developmentumair khan
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in UnityHakan Saglam
 
06. Game Architecture
06. Game Architecture06. Game Architecture
06. Game ArchitectureAmin Babadi
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game EnginesDavid Parsons
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and ProgrammingSumit Jain
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game DevelopmentSumit Jain
 
Unity introduction for programmers
Unity introduction for programmersUnity introduction for programmers
Unity introduction for programmersNoam Gat
 
Design phase of game development of unity 2d game
Design phase of game development of unity 2d game Design phase of game development of unity 2d game
Design phase of game development of unity 2d game Muhammad Maaz Irfan
 
Game development pipeline
Game development pipelineGame development pipeline
Game development pipelineGAME Studios
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game developmentGaetano Bonofiglio
 
The Basics of Unity - The Game Engine
The Basics of Unity - The Game EngineThe Basics of Unity - The Game Engine
The Basics of Unity - The Game EngineOrisysIndia
 

Tendances (20)

Choosing your Game Engine (2009)
Choosing your Game Engine (2009)Choosing your Game Engine (2009)
Choosing your Game Engine (2009)
 
Game engine introduction and approach
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approach
 
Introduction to android (and mobile) game development
Introduction to android (and mobile) game developmentIntroduction to android (and mobile) game development
Introduction to android (and mobile) game development
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
 
Indie Game Development Intro
Indie Game Development IntroIndie Game Development Intro
Indie Game Development Intro
 
Game engines and Their Influence in Game Design
Game engines and Their Influence in Game DesignGame engines and Their Influence in Game Design
Game engines and Their Influence in Game Design
 
game development
game  developmentgame  development
game development
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in Unity
 
06. Game Architecture
06. Game Architecture06. Game Architecture
06. Game Architecture
 
Game dev process
Game dev processGame dev process
Game dev process
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game Engines
 
Unity 3D VS your team
Unity 3D VS your teamUnity 3D VS your team
Unity 3D VS your team
 
Game Architecture and Programming
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and Programming
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
 
Unity introduction for programmers
Unity introduction for programmersUnity introduction for programmers
Unity introduction for programmers
 
Design phase of game development of unity 2d game
Design phase of game development of unity 2d game Design phase of game development of unity 2d game
Design phase of game development of unity 2d game
 
Game development pipeline
Game development pipelineGame development pipeline
Game development pipeline
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game development
 
The Basics of Unity - The Game Engine
The Basics of Unity - The Game EngineThe Basics of Unity - The Game Engine
The Basics of Unity - The Game Engine
 

En vedette

Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engineDaosheng Mu
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine ArchitectureAttila Jenei
 
Tips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowGorm Lai
 
Game Engine Overview
Game Engine OverviewGame Engine Overview
Game Engine OverviewSharad Mitra
 
[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game Engine[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game EnginePerforce
 
Marginal costing
Marginal costing Marginal costing
Marginal costing student
 
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...eme2525
 

En vedette (7)

Design your 3d game engine
Design your 3d game engineDesign your 3d game engine
Design your 3d game engine
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
 
Tips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should know
 
Game Engine Overview
Game Engine OverviewGame Engine Overview
Game Engine Overview
 
[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game Engine[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game Engine
 
Marginal costing
Marginal costing Marginal costing
Marginal costing
 
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop...
 

Similaire à Making A Game Engine Is Easier Than You Think

Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Karsten Wysk
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
 
Being a game developer with the skills you have
Being a game developer with the skills you haveBeing a game developer with the skills you have
Being a game developer with the skills you haveJohan Lindfors
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)slantsixgames
 
Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SConsslantsixgames
 
GameMaker:Studio and Windows
GameMaker:Studio and Windows GameMaker:Studio and Windows
GameMaker:Studio and Windows Lee Stott
 
BiowareDesignDoc.ppt
BiowareDesignDoc.pptBiowareDesignDoc.ppt
BiowareDesignDoc.pptHonggangMan
 
Console Development in 15 minutes
Console Development in 15 minutesConsole Development in 15 minutes
Console Development in 15 minutesSperasoft
 
Brewing Your Own Game Engie eng
Brewing Your Own Game Engie engBrewing Your Own Game Engie eng
Brewing Your Own Game Engie engCoconut Island
 
Moving from boxed title Game Development to F2P | Ralf C. Adam
Moving from boxed title Game Development to F2P | Ralf C. AdamMoving from boxed title Game Development to F2P | Ralf C. Adam
Moving from boxed title Game Development to F2P | Ralf C. AdamRalf C. Adam
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET Dmytro Mindra
 
TiConf 2014 Game Dev with Titanium and Platino 5/10/14
TiConf 2014 Game Dev with Titanium and Platino 5/10/14TiConf 2014 Game Dev with Titanium and Platino 5/10/14
TiConf 2014 Game Dev with Titanium and Platino 5/10/14gouldjw13
 
Mallory game developmentpipeline
Mallory game developmentpipelineMallory game developmentpipeline
Mallory game developmentpipelineKarynNarramore
 
Rapid Game Development with RUby and Gosu – Ruby Manor 4
Rapid Game Development with RUby and Gosu – Ruby Manor 4Rapid Game Development with RUby and Gosu – Ruby Manor 4
Rapid Game Development with RUby and Gosu – Ruby Manor 4benko
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with PhaserIndieOutpost
 
Creating great Unity games for Windows 10 - Part 1
Creating great Unity games for Windows 10 - Part 1Creating great Unity games for Windows 10 - Part 1
Creating great Unity games for Windows 10 - Part 1Jiri Danihelka
 

Similaire à Making A Game Engine Is Easier Than You Think (20)

Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
 
Creating Casual Games for Windows 8
Creating Casual Games for Windows 8Creating Casual Games for Windows 8
Creating Casual Games for Windows 8
 
Being a game developer with the skills you have
Being a game developer with the skills you haveBeing a game developer with the skills you have
Being a game developer with the skills you have
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)
 
From Web to Mobile with Stage 3D
From Web to Mobile with Stage 3DFrom Web to Mobile with Stage 3D
From Web to Mobile with Stage 3D
 
Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
 
GameMaker:Studio and Windows
GameMaker:Studio and Windows GameMaker:Studio and Windows
GameMaker:Studio and Windows
 
BiowareDesignDoc.ppt
BiowareDesignDoc.pptBiowareDesignDoc.ppt
BiowareDesignDoc.ppt
 
Console Development in 15 minutes
Console Development in 15 minutesConsole Development in 15 minutes
Console Development in 15 minutes
 
Brewing Your Own Game Engie eng
Brewing Your Own Game Engie engBrewing Your Own Game Engie eng
Brewing Your Own Game Engie eng
 
Moving from boxed title Game Development to F2P | Ralf C. Adam
Moving from boxed title Game Development to F2P | Ralf C. AdamMoving from boxed title Game Development to F2P | Ralf C. Adam
Moving from boxed title Game Development to F2P | Ralf C. Adam
 
Why Flutter.pdf
Why Flutter.pdfWhy Flutter.pdf
Why Flutter.pdf
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
TiConf 2014 Game Dev with Titanium and Platino 5/10/14
TiConf 2014 Game Dev with Titanium and Platino 5/10/14TiConf 2014 Game Dev with Titanium and Platino 5/10/14
TiConf 2014 Game Dev with Titanium and Platino 5/10/14
 
Mallory game developmentpipeline
Mallory game developmentpipelineMallory game developmentpipeline
Mallory game developmentpipeline
 
Rapid Game Development with RUby and Gosu – Ruby Manor 4
Rapid Game Development with RUby and Gosu – Ruby Manor 4Rapid Game Development with RUby and Gosu – Ruby Manor 4
Rapid Game Development with RUby and Gosu – Ruby Manor 4
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
 
Creating great Unity games for Windows 10 - Part 1
Creating great Unity games for Windows 10 - Part 1Creating great Unity games for Windows 10 - Part 1
Creating great Unity games for Windows 10 - Part 1
 

Dernier

Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...RajaP95
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 

Dernier (20)

Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 

Making A Game Engine Is Easier Than You Think

  • 1. Making A Game Engine Is Easier Than You Think (maybe)
  • 2. • SGI Mainframes • Set top boxes (OpenTV) • Embedded hardware • Mobile (iOS / Android) • Desktop (Windows / Mac /Unix / Linux) • PS2 / Xbox 360 14+ years in Games and VR @gormlai
  • 5. Do Not (Try To)Compete!
  • 6. Benefits of 3rd party engines • Battle tested! • Often quick to prototype • Easier to hire! • Deploy to X number of platforms with ease
  • 7. Hidden cost of 3rd party engines • There is no such thing as cross platform! • You have to wait for bug fixes • Idiosyncracies can be hard to understand • You cannot look inside the black box • Sharing assets / source code can be hard • Technical limitations • You are entirely dependent on success of one company(!)
  • 8. Hidden cost of 3rd party engines There is no such thing as cross-platform Desktop versus Mobile • Different input methods • Requires redesign of UI • Memory requirements • I/O is slower on mobile • GPU Capabilities • Difference in player demographics • Configuration options
  • 9. Hidden cost of 3rd party engines There is no such thing as cross-platform iOS versus Android • Difference in resolution ratios • Difference in payment patterns • GPU Capabilities • Memory Requirements • Game Center vs. Google Play Services • Multi-tasking / backgrounding works differently
  • 10. Hidden cost of 3rd party engines Technical Limitations • Engines have a payload that take up space • Less performant than custom code • Hard to control memory usage (important on mobile!) • Hard to control asset loading (important on mobile!) • Not all functionality may be exposed • Vender and OS maker doesn’t follow same upgrade cycle
  • 11. Building your own tech is hard! (but may be easier than you think!) You have to have the right mindset • Only build what you need! • Refactor as you go • Use design patterns
  • 12. Building your own tech is hard! (but may be easier than you think!) You have to have the right skillset: • You need the right skill set • Experts at the programming language of your choice • People who have used several engines • People who know understand scene graphs • Don’t be afraid of math • Understand the production pipeline
  • 13. It is all about architecture! • Forget frameworks! • Build separate libraries that work well together (the unix idea) • Use libraries like lego bricks to build an “engine” pr. game
  • 14. No frameworks! • Frameworks lock you in • Tend to clutter • Hard to swap out parts
  • 15. No frameworks Lock In • Take over the game-loop • Forced to do things in a certain way • Near impossible to swap out components • Forced to live with bad as well as good components • Risky for business as everything is dependent on one thing
  • 16. No frameworks Clutter & Dependencies • Even modular frameworks tend to clutter • Increases dependencies • Makes it hard to swap out components that don’t work
  • 17. Independent libraries • Decreases individual dependencies • Minimizes risk by minimizing dependencies • Easier to on-board new people • Easier to test • Components can be swapped out(!)
  • 19. Libraries @ Kotori • All these compile independently to a dll / .lib • Can and have been ported & tested individually
  • 20. V0.1 Developing the components • Design components and libraries • Design interfaces • Build wrappers around existing libraries • Focus on getting the pipeline up and running as fast as possible!
  • 21. V0.2 The Game is Running • The content team can now start building • You start to understand your needs better • Exchange one or two components that are essential to your game! • Again, only build what you need
  • 22. V1.0 1st Game has Shipped • Libraries have been polished and are more mature • Reuse, iterate and improve for next game • Piece together in a new way for a new game!
  • 23. Modern C++ is not terrible! auto, lambda, smart pointers, for loops, closures, better std library, etc
  • 25. Use open source (ignore the lawyers!) • The number of mature and well-tested open source components have exploded! • It is white box! • Easy to avoid GPL / LGPL as they are no longer trendy • More permissive licenses are getting more common place • Do read the small print!
  • 26. Use open source Answers from the survey LibRocket, ZLib, Nothings Public domain projects, Ogg-Vorbis (non-stb), SDL, Cocos 2D X, FBX SDK, Cricket Audio, Freetype, GLEW, GLM, libpng, freetype2, ODE, jingle, Newton Game Dynamics, Open Asset Import Library, SFML, Ant Tweak Bar, Allegro 5, Mono Game, Pugixml, Box 2D, Geometric Tools, GLFW, NoiseLib, Bullet Physics, Gl3w, libcurl, rapidxml, rapidjson, angelscript, Metal, LibGCM, libGDX, Raknet, lwjgl, Opus, Cal3d, FreeImagePlus, TinyXML, Irrlicht, BGFX, Lua, libjpg, npk, Berkelium, mysql, Collada, Cryptopp, Gdal, Awesomium, ..
  • 27. Typedef important classes Allows you to swap out components more easily! #include <ExternalMath/Vector.h> namespace MyMath { typedef ExternalMath::Vector3<float> Vector3f; }
  • 28. Prototyping • Don’t mix prototype and production code -> good development practice • Prototyping helps you focus on game play
  • 29.
  • 30. Prototyping Tools Survey Answers • Pen & Paper • Cardboard • Powerpoint • Unity • Index Cards • Action Script / Flash • Construct • Basic C++ & OpenGL • Blender • …
  • 31.
  • 32.
  • 33. Building the Editor Alternatives to the Swiss Army Knife • Build game as dynamic / static library OR • Embed editor in game • Build editor of reusable components (widgets, etc), exactly like the game • Editor can be build using a different programming language: • .Net (C# / F#) with WPF / Windows Forms • Objective-C with UIKit • C++ using a GUI Library • etc
  • 34. Off-the-Shelf Editors Alternatives to the Swiss Army Knife • 3D • Sony Authoring Tools Framework LevelEditor
  • 35. Off-the-Shelf Editors Alternatives to the Swiss Army Knife • 2D • Tiled • Overlap 2D • TexturePacker • PhysicsEditor • SpriteIlluminator • Spine • Spriter • Fusion Character Animator
  • 36. Do You Need A Game Editor? Alternatives to the Swiss Army Knife • Data-Driven Design • Use a mix of tools to drive game changes • Hard to avoid scripting language
  • 37. Focus on the Pipeline How Fast Can The Team Iterate? • From Photoshop / Audacity to Game • Open Asset Import Library • libpng, libjpg, ogg-vorbis, • Generate derived formats behind the scenes • From 3D modelling package to Game • FBX SDK • Collada • Open Asset Import Library
  • 38. Focus on the Pipeline How Fast Can The Team Iterate? • Adding GameState • Exporting state from Visual Design • UI Layouting • Design in your favourite tool, using known conventions (folder structure, layers, xml tags, etc) • Hot loading
  • 39. Focus on the Pipeline Scripting • Many scripting language offerings • Hold long does it take to see my changes? • .Net / JVM has recompile-on-the-fly built in!
  • 40.
  • 41. Commercial Components • Granny 3D • PhysX • Havok • Bink • FMOD • WWISE • Miles Sound System • Beast • Enlighten • FBX SDK • Elephant
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. Comments positive Tried all the major engines, they're good for basic manipulations but once you want to do more advanced stuff, such as loading a level in a background thread, there is a huge learning curve and a huge dependency on the developer community which sometimes consists of students responding to forum questions. Absolutely not the way I'd want to work. 1. performance tuned to game 2. ability to alter code to suit my needs 3. ability to tune load times/etc.. Which i consider to be massively important on an ios game. Using <engine name> and making user wait for ages to load - isnt on. Independence, control, ability to target emerging platforms No blackbox portion in my code base. Save a ton of time from debugging and finding out why shit blew up. Building a game as a service, with a lifetime of 2+ years it's safer to have control over your tech. Workflow, features adopted for your type of games, not a one size fits all solution. Possible to adapt and render pipeline to suit project
  • 50. Comments negative Some people never ship games, just keep tweaking the engine. - Investment ( hours spent creating it, and keeping it up to date) - Hires will not know the tech, vs. e.g. many people know Unity already - You're not learning a "standard skill" that might be a wanted one down the road ( e.g. Unity development skills) One step forwards, Four steps backwards ... 80 percent of resources spent on the pursuit of technological dead ends, unavoidable consequence of working outside the conventional scope The time to build it! Tool development is time-consuming, and good tools = good games. Overall, we've now found that maintaining our own engine is too expensive and puts us at a competitive disadvantage. Bug fixing and maintenance takes a lot of time which could be spent on games itself Hard for new hires to learn. C++ programmers are rare.