Why you need game engine
What actually is game engine,
and why Unity is so successful ;-)
Disclaimer
• The views expressed here are my personal views and do not necessarily reflect the thoughts, opinions, intentions, plans or strategies of Unity
What is game engine
• Your call
What is game engine
• Let me guess:– Rendering– Physics– even more stuff
• Technology in short
What is game engine
• Welcome to the real world• YOU ARE WRONG
What is game engine
• When talking about technology you forget:– Not so cool-looking technology
• most of people thinks engine=rendering
– How to get meshes/textures/... in there– How much time to wait if texture was changed– How do you create levels– lots more
What is game engine
• Technology• Tools• Infrastructure
– well, nothing lives in isolation– how well pieces fit
What is Technology
• Multiplatform – unless platform holder pays you– unless you don't need money– unless you are doing smth impossible else
• or you are wrong• or platform holder will pay you
What is Technology
• Example:– Rendering
• if you didn't try consoles - you will fail• if you didn't try gl/dx/gles you will fail• if you don't know your hardware you will fail• if you don't read RTR you will fail• if you don't know/have constraints you will fail• you need more? ;-)
What is Technology
• Hidden Technology– What about:
• leaderboards• achievements• saving/loading, checkpoints etc• multiplayer• quick loading• updating and DLC• you name it
What is Technology
• You don't need it – if you create old-school lines/tetris
• you need reality check
• You don't need all of this if you are careful about constraints
• You will need this as you try to scale down from mac to ipad
What is Technology
• We'll be back when talking about infrastructure
• There is more hidden in there– Far more important then you think
What are Tools
• You will need to create your levels– even for something like
• zuma • time-management• non-standard match3• you name it
What are Tools
• You will need to tweak lots of stuff– Asset Pipeline
• conditioning• params
– Materials– Object Properties
• And do it fast and see the results
What are Tools
• You will need a lot of stuff– Managing your content
• where was that texture/shader for this tree
– Creating additional data• achievements• localization
– Reusing stuff• i want this tree in another level
– You name it
What are Tools
• You don't need it – if you use xml/json/inis - just type here
• you need sanity check
– if you hate artists/designers– if you have all the time on earth
• You don't need all this– Until you need it yesterday
What is Infrastructure
• How does it all fit together– iteration time– interoperability– workflow fit– unification– everything else
• the "feel"
What is Infrastructure
• Iteration time– You change something
• texture• mesh location• script• object params (e.g. movement speed)
– How much time is needed to see it in game– This might be the difference between shipping
in one month and in 3 months less-polished
What is Infrastructure
• Interoperability– How well parts works with each other
• DCC tool plugins • Asset importing and Level editing• Conflicts• Coupling
– changing drawed mesh params shouldn't result in physics fidling
– changing texture on tree shouldn't result in whole world re-import/rebuild
What is Infrastructure
• workflow fit– artists vs programmers– sound engineer might look differently
• unification– how much tools/steps is needed for object
• draw params• physics params• scripting
Still want to create in-house?
• Create engine in-house is awesome!– if you have cool experienced programmers– if you have up-front time– if you need specific technology
• you can argue about "specific" part
– if you can do it better• if it is your first game ever - you can't
– if you want to know how engines works• For hobbyist learning project - awesome exp
Still want to create in-house?
• For AAA game - unsolved problem– diff credits for UE3 game and in-house tech– big games have source licence ;-)
Still want to create in-house?
• For smaller games - even more interesting– ios: $0.99
• meaning: you need to be *very* fast
– ios vs android• fragmentation even on ios • on android - almost desktop-like• driver-bugs and harware "features"
Still want to create in-house?
• generally mobile– they *are* underpowered
• unless you know how to use hw
– welcome back FFP tricks• or earlier-days shader oprimizations
– welcome back assembly
Still want to create in-house?
• generally mobile– a lot of stuff to integrate
• different platform api• different features• achievements• leaderboards• in-game purchases• accelerometer/gyroscope• etc
Still want to create in-house?
• More power to you (really)
Unity
• Well, as i am working in Unity... ;-)• Was created to help inexperienced teams
– The very first customer was team of 2 artists• yes, they succeeded ;-)
• The idea is to open gamedev to masses– Lots of platforms
• mac/win/web/ios/android/x360/ps3/others (NDA)
– Lots of guidance
Unity
• Programming: – JavaScript, Boo, C#– Thinking about others
• Art– FBX
• meaning almost everything– Autodesk, Modo, Blender, Sketchup, Cheetah
• and some more [too much to remember]– PSD, JPG, PNG, TGA, TIFF, and more
Unity
• Operates on high level– Components
• MeshRenderer, MeshCollider, etc
– Assets• Mesh, Texture, Sound
– you will get this automagically
Unity
• Prefabs– You can save object at full and reuse
• with components– meaning everything
• Scenes– Level editing
• Meaning one place to place objects and edit props
Unity
• Multiplatform:– Select platform and build
• That's all– almost ;-)
Unity
• Materials/Shaders– All power to you– preset shaders– you can write your own
Unity
• Unity Editor is written on C# mostly– meaning we expose almost everything– meaning - write your own tools if needed– meaning - lots of plugins are already there
Unity
• in-Editor Play button– play your game ;-)– while having all Editor power right here
• change texture and see this• change script, wait for compile, and see that
Unity
• Runtime– we did lots of hard-lifting
• skinning on NEON? Been there done that ;-)• driver bugs on XXX? Ah yes, we have workaround
– once again - lots exposed to c# – plugins: lots
Unity
• Bells & whistles– Beast lightmapping? check– Beast point clouds? working in it– Umbra occlusion? check– cool LOD system? almost there– profiling? check
• run on target hw, collect data in Editor
– random stuff? you will be surprised ;-)
Questions?