3/16/2016 Pedagogical Goal • Your technical skills should not be tied to any particular game engine Game Engines • Just like your programming skills should not be tied to any particular programming language IMGD 4000 • Use best tools for each job • ... or tools you were given 2 Game Engine Definition Buy versus Build • Depends on your needs, resources and Game Engine constraints “A series of modules and interfaces that allows a – Technical needs (e.g., “pushing the envelope”?) development team to focus on product game- – Financial resources (e.g., venture capital?) play content , rather than technical content .” – Time constraints (e.g., 1 month or 2 years?) [Julian Gold, O-O Game Dev.] – Platform constraints (e.g., Flash?) – Other factors (e.g., sequel?) • But this class is about “ the technical content ”! • Most games commonly built today with some sort of “engine layer” 3 4 Why Build? Why Buy? • Need – Technical needs of game not supported by • Financial – don’t have the time/money to existing engines build and engine • Pedagogy – learn specific skill/concept • Support – existing engine has large user • Control – Provide a better understanding of engine- community and/or documentation and/or game interaction when making game – Can extend/adjust engine if needed technical support • Genre – have engine especially fit genre (lightweight, • Robust – existing engine has fewer bugs, tried just features required) and true code base • Licensing – don’t want to pay out royalty fees – Note, simple cost should not be a reason – there are many • Experience – development team has prior excellent cheap/free engines it will “cost” more to build experience with engine an engine! 1
3/16/2016 [ DevMaster.net ] Choices: “It’s a Jungle Out There” Many Evaluation Dimensions/Features • 375 3D engines reviewed at DevMaster.net • IndieDB shows 470 engines – Most popular (left) • We are not going to try to review them all here If there’s a feature term here you don’t know, you should look it up! 7 8 Evaluation by Size – Lines of Code Game Engine Architecture “Measuring software productivity by lines of code is like measuring progress on an airplane by how much it weighs.” - Bill Gates Saucer: hit() Star: eventHandler() GAME CODE Hero: kbd() GameOver: step() Dragonfly (2015) 5k id Tech 1 (1999) 79k DrawCharacter GetKey id Tech 2 (2001) 138k InsertObject DRAGONFLY MoveObject LoadSprite SendEvent id Tech 3 (2005) 329k id Tech 4 (2011) 586k Allocate memory File open/close COMPUTER PLATFORM UE4 v4.6 (2015) 1964k Clear display Get keystroke What are architecture choices for Game Engine layer? • Used cloc • Only counting C, C++ and header files. Types of Engine Architectures Monolithic Engines (Broadly) • “Old style” - typically grew out of specific game • Monolithic (e.g., GameMaker) – e.g., ID Tech for first-person shooters • Tend to be genre-specific • Modular – e.g., GameMaker for arcade-style games – Extensible IDE (e.g., Unity, UE4) • Difficult to go beyond extensions/modifications not anticipated in API (e.g., scripting) – Open Class Library (e.g., C4, UE4, • Proven, comprehensive capabilities or what Dragonfly would be when it grows up ) – Good for original purpose 11 12 2
3/16/2016 Modular Engines Modular: Extensible IDE’s • GUI-oriented development process • “Modern” – often developed by game engine – More accessible for novice/casual programmers company (relatively new category) – M ore “art asset friendly” – e.g., Unity • Comprehensive asset management • Use object-oriented techniques for greater – Integrated with IDE modularity • Limited (or controlled) exposure of internals • Much easier to extend/replace components – Prevents abuse than for monolithic engines – But also prevents some extensions 13 14 Game Engine Architecture Blocks Modular: Open Class Library • Code-oriented development • Carefully layered • Allows maximum modifiability • Often open source – UE4 source available, but not freely distributable • Not as accessible for novices and “casual” programmers 15 16 Game Engine Architecture Blocks Architecture Blocks (complete?) Game Engine Game Engine Architecture, by Jason Gregory, 2009, AK Peters, ISBN: 1-5688-1413-5. 18 3
3/16/2016 Best Engine Choice is Relative to Choice of UE4 for IMGD 4000 Situation • Relatively easy (trivial) for artists • Similar issues of needs, resources and constraints – C4 tough art pipeline, Dragonfly limited (as in buy vs. build) – Comparable to Unity? – Platform, programming language constraints • Programming in C++ – Cost constraints (commercial run $ to $$$) – Still “ gold standard ” for tech game development – Specific technical features required (e.g., MMO) – Need for IMGD majors to do more, get better – Previous experience of staff • Full support of mature IDE – Support from developers, user community (e.g., – Microsoft Visual Studio (Windows), Xcode (Mac) forums) • Source code available – Pedagogical goals (e.g., this course, or even to teach – Aid in debugging interactions yourself) – Future offerings may delve into code 19 20 UE4 in Timeline of FPS Game Engines Feature Comparisons vs vs • C4 & Unity from DevMaster.net • UE4 from UE4 Features and other UE4 docs • Caveats: – Not complete - broad view of main features touched upon in IMGD 4000 – Info is not audited (e.g., DevMaster.net from enthusiasts, UE4 from my knowledge and Epic docs) – Let’s not get bogged down in the details – the idea is (Click below to open browser to image for zooming) to get overall sense of emphasis http://commons.wikimedia.org/wiki/File:Fpsengine.svg 21 22 General Features Physics Object-Oriented Design, Plug-in Architecture, Save/Load System • Clean class hierarchy for scene graph nodes Basic Physics, Collision Detection, Rigid Body • General state serialization support for saving worlds • Separation between per-instance and shared data • Built -in character controller • Built -in projectile controller • External scene graph referencing from within another scene graph • Support for pack files and virtual directory hierarchy • Real -time fluid surface simulation • Real -time cloth simulation • Skinable GUI's Object-Oriented Design, Plug-in Architecture, Save/Load System • Professional FPS controller ready to drop in (and tune) Basic Physics, Collision Detection, Rigid Body, Vehicle Physics • Streamed loading for the Unity Web Player • Powered by the PhysX Engine, which also supports particle physics • Unity asset server / asset source code version control • Cloth simulation • Cross-platform Web player • Standalone executables for both Mac OS X and Windows • Mac OS X Dashboard Widgets • iPhone Publishing is available as add-on product Basic Physics, Collision Detection, Rigid Body, Vehicle Physics • Streaming Asset Bundles: the ability to stream in any asset (terrain, mesh, etc) into the game • Powered by the PhysX Engine, which also supports particle physics Object-Oriented Design, Plug-in Architecture, Save/Load System • Professional FPS controller ready to drop in (and tune) • Multiplatform compilation – Windows, Mac, Linux Mobile • Built -in content and community integration 23 24 4
Recommend
More recommend