Making A Game Engine Is Easier Than You Think

Gorm Lai
Gorm LaiSenior Creative Technologist, Contractor (iOS/Android, OSX/Windows - C++/C#/Unity) em Kotori Studios Ltd
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
Making A Game Engine Is Easier Than You Think
Prototyping Tools
Survey Answers
• Pen & Paper
• Cardboard
• Powerpoint
• Unity
• Index Cards
• Action Script / Flash
• Construct
• Basic C++ & OpenGL
• Blender
• …
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
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!
Making A Game Engine Is Easier Than You Think
Commercial Components
• Granny 3D
• PhysX
• Havok
• Bink
• FMOD
• WWISE
• Miles Sound System
• Beast
• Enlighten
• FBX SDK
• Elephant
Survey
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
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
1 de 51

Recomendados

Game Jams & Hobbyists por
Game Jams & HobbyistsGame Jams & Hobbyists
Game Jams & HobbyistsGorm Lai
1.7K visualizações67 slides
Pong por
PongPong
PongSusan Gold
917 visualizações10 slides
Habitat Indie Game Development Pre-Post Mortem por
Habitat Indie Game Development Pre-Post MortemHabitat Indie Game Development Pre-Post Mortem
Habitat Indie Game Development Pre-Post MortemCharles Cox
2.9K visualizações39 slides
PRESENTATION ON Game Engine por
PRESENTATION ON Game EnginePRESENTATION ON Game Engine
PRESENTATION ON Game EngineDiksha Bhargava
5.4K visualizações28 slides
What Is A Game Engine por
What Is A Game EngineWhat Is A Game Engine
What Is A Game EngineSeth Sivak
9.3K visualizações18 slides
Unity - Game Engine por
Unity - Game EngineUnity - Game Engine
Unity - Game EngineGeeks Anonymes
3.2K visualizações13 slides

Mais conteúdo relacionado

Mais procurados

Choosing your Game Engine (2009) por
Choosing your Game Engine (2009)Choosing your Game Engine (2009)
Choosing your Game Engine (2009)Mark DeLoura
5K visualizações76 slides
Game engine introduction and approach por
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approachDuy Tan Geek
1.3K visualizações9 slides
Introduction to android (and mobile) game development por
Introduction to android (and mobile) game developmentIntroduction to android (and mobile) game development
Introduction to android (and mobile) game developmentRuslan Novikov
3.5K visualizações23 slides
Introduction to Unity3D Game Engine por
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game EngineMohsen Mirhoseini
2.3K visualizações28 slides
Introduction to Game Development por
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game DevelopmentShaan Alam
2.3K visualizações19 slides
Indie Game Development Intro por
Indie Game Development IntroIndie Game Development Intro
Indie Game Development IntroJuan Zamora, MSc. MBA
2.7K visualizações23 slides

Mais procurados(20)

Choosing your Game Engine (2009) por Mark DeLoura
Choosing your Game Engine (2009)Choosing your Game Engine (2009)
Choosing your Game Engine (2009)
Mark DeLoura5K visualizações
Game engine introduction and approach por Duy Tan Geek
Game engine introduction and approachGame engine introduction and approach
Game engine introduction and approach
Duy Tan Geek1.3K visualizações
Introduction to android (and mobile) game development por Ruslan Novikov
Introduction to android (and mobile) game developmentIntroduction to android (and mobile) game development
Introduction to android (and mobile) game development
Ruslan Novikov3.5K visualizações
Introduction to Unity3D Game Engine por Mohsen Mirhoseini
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
Mohsen Mirhoseini2.3K visualizações
Introduction to Game Development por Shaan Alam
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
Shaan Alam2.3K visualizações
Indie Game Development Intro por Juan Zamora, MSc. MBA
Indie Game Development IntroIndie Game Development Intro
Indie Game Development Intro
Juan Zamora, MSc. MBA2.7K visualizações
Game engines and Their Influence in Game Design por Prashant Warrier
Game engines and Their Influence in Game DesignGame engines and Their Influence in Game Design
Game engines and Their Influence in Game Design
Prashant Warrier4.9K visualizações
game development por umair khan
game  developmentgame  development
game development
umair khan524 visualizações
Mobile Game Development in Unity por Hakan Saglam
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in Unity
Hakan Saglam1.7K visualizações
06. Game Architecture por Amin Babadi
06. Game Architecture06. Game Architecture
06. Game Architecture
Amin Babadi1.5K visualizações
Game dev process por Yassine Arif
Game dev processGame dev process
Game dev process
Yassine Arif4.8K visualizações
A Brief Guide to Game Engines por David Parsons
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game Engines
David Parsons1.5K visualizações
Unity 3D VS your team por Christoph Becher
Unity 3D VS your teamUnity 3D VS your team
Unity 3D VS your team
Christoph Becher2.4K visualizações
Game Architecture and Programming por Sumit Jain
Game Architecture and ProgrammingGame Architecture and Programming
Game Architecture and Programming
Sumit Jain9.6K visualizações
Introduction to Game Development por Sumit Jain
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
Sumit Jain11.9K visualizações
Unity introduction for programmers por Noam Gat
Unity introduction for programmersUnity introduction for programmers
Unity introduction for programmers
Noam Gat2.2K visualizações
Design phase of game development of unity 2d game por Muhammad Maaz Irfan
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 Irfan1.4K visualizações
Game development pipeline por GAME Studios
Game development pipelineGame development pipeline
Game development pipeline
GAME Studios1.2K visualizações
Introduction to game development por Gaetano Bonofiglio
Introduction to game developmentIntroduction to game development
Introduction to game development
Gaetano Bonofiglio840 visualizações
The Basics of Unity - The Game Engine por OrisysIndia
The Basics of Unity - The Game EngineThe Basics of Unity - The Game Engine
The Basics of Unity - The Game Engine
OrisysIndia5.7K visualizações

Destaque

Design your 3d game engine por
Design your 3d game engineDesign your 3d game engine
Design your 3d game engineDaosheng Mu
8.2K visualizações47 slides
Game Engine Architecture por
Game Engine ArchitectureGame Engine Architecture
Game Engine ArchitectureAttila Jenei
14.7K visualizações30 slides
Tips & Tricks that every game developer should know por
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should knowGorm Lai
1.4K visualizações53 slides
Game Engine Overview por
Game Engine OverviewGame Engine Overview
Game Engine OverviewSharad Mitra
12.2K visualizações52 slides
[Ubisoft] Perforce Integration in a AAA Game Engine por
[Ubisoft] Perforce Integration in a AAA Game Engine[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game EnginePerforce
5.1K visualizações17 slides
Marginal costing por
Marginal costing Marginal costing
Marginal costing student
3.5K visualizações13 slides

Destaque(7)

Design your 3d game engine por Daosheng Mu
Design your 3d game engineDesign your 3d game engine
Design your 3d game engine
Daosheng Mu8.2K visualizações
Game Engine Architecture por Attila Jenei
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
Attila Jenei14.7K visualizações
Tips & Tricks that every game developer should know por Gorm Lai
Tips & Tricks that every game developer should knowTips & Tricks that every game developer should know
Tips & Tricks that every game developer should know
Gorm Lai1.4K visualizações
Game Engine Overview por Sharad Mitra
Game Engine OverviewGame Engine Overview
Game Engine Overview
Sharad Mitra12.2K visualizações
[Ubisoft] Perforce Integration in a AAA Game Engine por Perforce
[Ubisoft] Perforce Integration in a AAA Game Engine[Ubisoft] Perforce Integration in a AAA Game Engine
[Ubisoft] Perforce Integration in a AAA Game Engine
Perforce5.1K visualizações
Marginal costing por student
Marginal costing Marginal costing
Marginal costing
student3.5K visualizações
Pop up! a manual of paper mechanisms - duncan birmingham (tarquin books) [pop... por eme2525
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...
eme2525531.9K visualizações

Similar a Making A Game Engine Is Easier Than You Think

Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka... por
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
1.1K visualizações47 slides
Delta Engine @ CeBit 2011 por
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Karsten Wysk
1.5K visualizações27 slides
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t... por
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
12.7K visualizações138 slides
Creating Casual Games for Windows 8 por
Creating Casual Games for Windows 8Creating Casual Games for Windows 8
Creating Casual Games for Windows 8SmartyPantsCoding.com
2.1K visualizações41 slides
Being a game developer with the skills you have por
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
114 visualizações26 slides
Maximize Your Production Effort (English) por
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)slantsixgames
806 visualizações67 slides

Similar a Making A Game Engine Is Easier Than You Think(20)

Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka... por gamifi.cc
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.cc1.1K visualizações
Delta Engine @ CeBit 2011 por Karsten Wysk
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
Karsten Wysk1.5K visualizações
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t... por Gerke Max Preussner
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 Preussner12.7K visualizações
Creating Casual Games for Windows 8 por SmartyPantsCoding.com
Creating Casual Games for Windows 8Creating Casual Games for Windows 8
Creating Casual Games for Windows 8
SmartyPantsCoding.com2.1K visualizações
Being a game developer with the skills you have por Johan Lindfors
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
Johan Lindfors114 visualizações
Maximize Your Production Effort (English) por slantsixgames
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)
slantsixgames806 visualizações
From Web to Mobile with Stage 3D por Jean-Philippe Doiron
From Web to Mobile with Stage 3DFrom Web to Mobile with Stage 3D
From Web to Mobile with Stage 3D
Jean-Philippe Doiron2.1K visualizações
Building an educational game (Momentum DevCon) por Johnny Hooyberghs
Building an educational game (Momentum DevCon)Building an educational game (Momentum DevCon)
Building an educational game (Momentum DevCon)
Johnny Hooyberghs44 visualizações
Confrontation Pipeline and SCons por slantsixgames
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
slantsixgames1.6K visualizações
GameMaker:Studio and Windows por Lee Stott
GameMaker:Studio and Windows GameMaker:Studio and Windows
GameMaker:Studio and Windows
Lee Stott3.3K visualizações
BiowareDesignDoc.ppt por HonggangMan
BiowareDesignDoc.pptBiowareDesignDoc.ppt
BiowareDesignDoc.ppt
HonggangMan4 visualizações
Console Development in 15 minutes por Sperasoft
Console Development in 15 minutesConsole Development in 15 minutes
Console Development in 15 minutes
Sperasoft501 visualizações
Brewing Your Own Game Engie eng por Coconut Island
Brewing Your Own Game Engie engBrewing Your Own Game Engie eng
Brewing Your Own Game Engie eng
Coconut Island709 visualizações
Moving from boxed title Game Development to F2P | Ralf C. Adam por 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
Ralf C. Adam467 visualizações
Why Flutter.pdf por Randal Schwartz
Why Flutter.pdfWhy Flutter.pdf
Why Flutter.pdf
Randal Schwartz228 visualizações
NetWork - 15.10.2011 - Applied code generation in .NET por Dmytro Mindra
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 Mindra318 visualizações
TiConf 2014 Game Dev with Titanium and Platino 5/10/14 por gouldjw13
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
gouldjw13577 visualizações
Mallory game developmentpipeline por KarynNarramore
Mallory game developmentpipelineMallory game developmentpipeline
Mallory game developmentpipeline
KarynNarramore342 visualizações
Rapid Game Development with RUby and Gosu – Ruby Manor 4 por benko
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
benko15.2K visualizações
Making HTML5 Games with Phaser por IndieOutpost
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
IndieOutpost6.3K visualizações

Último

Deutsch Crimping por
Deutsch CrimpingDeutsch Crimping
Deutsch CrimpingIwiss Tools Co.,Ltd
25 visualizações7 slides
DevOps-ITverse-2023-IIT-DU.pptx por
DevOps-ITverse-2023-IIT-DU.pptxDevOps-ITverse-2023-IIT-DU.pptx
DevOps-ITverse-2023-IIT-DU.pptxAnowar Hossain
8 visualizações45 slides
Object Oriented Programming with JAVA por
Object Oriented Programming with JAVAObject Oriented Programming with JAVA
Object Oriented Programming with JAVADemian Antony D'Mello
107 visualizações28 slides
SNMPx por
SNMPxSNMPx
SNMPxAmatullahbutt
15 visualizações12 slides
Codes and Conventions.pptx por
Codes and Conventions.pptxCodes and Conventions.pptx
Codes and Conventions.pptxIsabellaGraceAnkers
7 visualizações5 slides
Saikat Chakraborty Java Oracle Certificate.pdf por
Saikat Chakraborty Java Oracle Certificate.pdfSaikat Chakraborty Java Oracle Certificate.pdf
Saikat Chakraborty Java Oracle Certificate.pdfSaikatChakraborty787148
15 visualizações1 slide

Último(20)

DevOps-ITverse-2023-IIT-DU.pptx por Anowar Hossain
DevOps-ITverse-2023-IIT-DU.pptxDevOps-ITverse-2023-IIT-DU.pptx
DevOps-ITverse-2023-IIT-DU.pptx
Anowar Hossain8 visualizações
Object Oriented Programming with JAVA por Demian Antony D'Mello
Object Oriented Programming with JAVAObject Oriented Programming with JAVA
Object Oriented Programming with JAVA
Demian Antony D'Mello107 visualizações
SNMPx por Amatullahbutt
SNMPxSNMPx
SNMPx
Amatullahbutt15 visualizações
Codes and Conventions.pptx por IsabellaGraceAnkers
Codes and Conventions.pptxCodes and Conventions.pptx
Codes and Conventions.pptx
IsabellaGraceAnkers7 visualizações
Saikat Chakraborty Java Oracle Certificate.pdf por SaikatChakraborty787148
Saikat Chakraborty Java Oracle Certificate.pdfSaikat Chakraborty Java Oracle Certificate.pdf
Saikat Chakraborty Java Oracle Certificate.pdf
SaikatChakraborty78714815 visualizações
Effect of deep chemical mixing columns on properties of surrounding soft clay... por AltinKaradagli
Effect of deep chemical mixing columns on properties of surrounding soft clay...Effect of deep chemical mixing columns on properties of surrounding soft clay...
Effect of deep chemical mixing columns on properties of surrounding soft clay...
AltinKaradagli6 visualizações
_MAKRIADI-FOTEINI_diploma thesis.pptx por fotinimakriadi
_MAKRIADI-FOTEINI_diploma thesis.pptx_MAKRIADI-FOTEINI_diploma thesis.pptx
_MAKRIADI-FOTEINI_diploma thesis.pptx
fotinimakriadi7 visualizações
Investor Presentation por eser sevinç
Investor PresentationInvestor Presentation
Investor Presentation
eser sevinç23 visualizações
CHEMICAL KINETICS.pdf por AguedaGutirrez
CHEMICAL KINETICS.pdfCHEMICAL KINETICS.pdf
CHEMICAL KINETICS.pdf
AguedaGutirrez8 visualizações
SPICE PARK DEC2023 (6,625 SPICE Models) por Tsuyoshi Horigome
SPICE PARK DEC2023 (6,625 SPICE Models) SPICE PARK DEC2023 (6,625 SPICE Models)
SPICE PARK DEC2023 (6,625 SPICE Models)
Tsuyoshi Horigome17 visualizações
LFA-NPG-Paper.pdf por harinsrikanth
LFA-NPG-Paper.pdfLFA-NPG-Paper.pdf
LFA-NPG-Paper.pdf
harinsrikanth40 visualizações
Machine Element II Course outline.pdf por odatadese1
Machine Element II Course outline.pdfMachine Element II Course outline.pdf
Machine Element II Course outline.pdf
odatadese18 visualizações
DESIGN OF SPRINGS-UNIT4.pptx por gopinathcreddy
DESIGN OF SPRINGS-UNIT4.pptxDESIGN OF SPRINGS-UNIT4.pptx
DESIGN OF SPRINGS-UNIT4.pptx
gopinathcreddy18 visualizações
MK__Cert.pdf por Hassan Khan
MK__Cert.pdfMK__Cert.pdf
MK__Cert.pdf
Hassan Khan10 visualizações
Performance of Back-to-Back Mechanically Stabilized Earth Walls Supporting th... por ahmedmesaiaoun
Performance of Back-to-Back Mechanically Stabilized Earth Walls Supporting th...Performance of Back-to-Back Mechanically Stabilized Earth Walls Supporting th...
Performance of Back-to-Back Mechanically Stabilized Earth Walls Supporting th...
ahmedmesaiaoun12 visualizações
What is Whirling Hygrometer.pdf por IIT KHARAGPUR
What is Whirling Hygrometer.pdfWhat is Whirling Hygrometer.pdf
What is Whirling Hygrometer.pdf
IIT KHARAGPUR 11 visualizações
MSA Website Slideshow (16).pdf por msaucla
MSA Website Slideshow (16).pdfMSA Website Slideshow (16).pdf
MSA Website Slideshow (16).pdf
msaucla58 visualizações
Activated sludge process .pdf por 8832RafiyaAltaf
Activated sludge process .pdfActivated sludge process .pdf
Activated sludge process .pdf
8832RafiyaAltaf8 visualizações

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
  • 30. Prototyping Tools Survey Answers • Pen & Paper • Cardboard • Powerpoint • Unity • Index Cards • Action Script / Flash • Construct • Basic C++ & OpenGL • Blender • …
  • 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!
  • 41. Commercial Components • Granny 3D • PhysX • Havok • Bink • FMOD • WWISE • Miles Sound System • Beast • Enlighten • FBX SDK • Elephant
  • 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.