1 / 46

Hey Indies, It’s a Great time to Build An Engine

Hey Indies, It’s a Great time to Build An Engine. Damián Isla, Moonshot Games. Unannounced. Disclaimers. Goes against history and common sense Not for everyone. You Know You Want To. Build your own game engine!. “I am more emotionally invested when it’s my own tech.”.

reya
Download Presentation

Hey Indies, It’s a Great time to Build An Engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hey Indies,It’s a Great time to Build An Engine Damián Isla, Moonshot Games

  2. Unannounced

  3. Disclaimers • Goes against history and common sense • Not for everyone

  4. You Know You Want To Build your own game engine!

  5. “I am more emotionally invested when it’s my own tech.” “I get total control” Write games, not engines “Reinventing the wheel” “I know exactly how everything works” “We can get on to more platforms faster.”

  6. Observations • You can reinvent as much of the wheel as you want. • The Engine IS the Game

  7. Part 1: Engines are Content machines

  8. What Makes a Great Engine? NOT • rendering • physics • AI The ability of content creators to shovel content into the game as fast as possible ... and to iterate on it.

  9. The Content Problem “Shovel content into the game as fast possible.” • Bitmaps • Audio • Models • Environments • Animations • Objects • Behavior • ... ???

  10. Audio Skeleton FX Dialogue ... Model LOD 1 LOD 2 LOD 3 ... Vertex weights Geometry LOD 1 LOD 2 LOD 3 ... Animations Textures Action logic Color Bump Detail Specular ... Game params (~10 bajillion) AI Behavior Perception Script support ... Ragdoll

  11. CryEngine 2 Sandbox TM / Roads and Rivers Tool

  12. CryEngine 2 Editorfull-featured terrain editor StorageParametric surface RuntimeDynamically tessellated polygon-based terrain

  13. Flexibility vs. Usability Usability Flexibility Universal Principles of Design – Lidwell, Holden & Butler , 2003

  14. Generality vs. Usefulness Your Engine Licensed Engine Bitmaps Usefulness Behavior Generality Universal Principles of Design – Lidwell, Holden & Butler , 2003

  15. The Content Meta-Problem “Shovel content into the game as fast possible.” • Bitmaps • Audio • Models • Environments • Animations • Objects • Behavior • ... Find the Game as fast possible. (i.e. define all of the above)

  16. Part 2: Middleware

  17. The Hard Bits Reinvent as much of the wheel as necessary. • Physics • Animation • Scripting • Pathfinding For the rest, there’s middleware.

  18. The Ideal The best way to build an engine is to assemble it.

  19. Choose your Price

  20. Part 3: Sputnik

  21. Sputnik • Dev Time: ~ 1 year • Team size: 2 • Cost: $0 (excluding labor)

  22. Philosophy Script Clear Loose Maintainable Performant, Game-agnostic Exquisitely Engineered C++ Game-specific Iterable

  23. Sputnik App-Layer Features • AI / A* • 2d physics • Embedded Flash • Layer-based rendering • skeletal 2d animation

  24. Sputnik Core Features • data-reflection • component object-model • data versioning • pervasive scripting • C# Editor Bindings • memory management • performance tools • XML / binary file formats • in-engine Performance tools “High-leverage technologies”

  25. Sputnik Core Features • data-reflection • component object-model • data versioning • pervasive scripting • C# Editor Bindings • memory management • performance tools • XML / binary file formats • In-engine Performance tools

  26. Data Reflection Run-time information about the structure of data types • Do you have a field named “foo”? • What is the offset of that field from the start of the instance? • Is it read-only? Note: • Built into Java/C# • Implicit in C/C++ The Big Advantage: allow type-agnostic code

  27. Versioning Data Reflection Lua Data Serialization s_plane2d::x_s_plane2d_schema_handle= schema_new("s_plane2d", ""); if (s_plane2d::x_s_plane2d_schema_handle.valid()) { s_schema *schema= s_plane2d::x_s_plane2d_schema_handle.get(); schema->set_initialize(s_plane2d_initialize); schema->set_erase(s_plane2d_erase); schema->add_struct_field("normal", "s_vector2d", _read_write, 1); schema->add_struct_field("point", "s_vector2d", _read_write, 1); schema->set_expected_size(sizeof(s_plane2d)); } Run-time Schema C++ Class (file.h) Parse (Python) C# Glue • Note: We DON’T support • multiple inheritence • virtual functions C# Editors

  28. Pervasive Scripting The Goals • Everything you can do in C++, you can do in Script • To Create a Continuity between Prototyping and Production

  29. Pervasive Scripting We use Lua • Runtime recompilation • Dynamic typing Two parts • Component scripts • System scripts Hurray! 2x Productivity Kill me now

  30. Component Scripts Perception/Ray-casting Behavior A* Target selection Squad behavior Animation control Random Script Animation playback Physics

  31. Component Scripts Perception/Ray-casting Behavior A* Target selection Squad behavior Animation control Random Script Animation playback Physics

  32. System Scripts Boids Console I/O Subtitles Missions Achievements Random Script Rendering Effects

  33. System Scripts Missions

  34. A Note on Script Data Script data will need to • Serialize • Version • Interoperate with tools All of this suggests • All script data is schematized • The engine manages all script data • Lua’s memory pool is transient • Ancillary benefit: One lua state per source file, not one per instance.

  35. The Result Systems that don’t exist in Fallen Frontier: • Health / death / damage • Weapons / items / equipment / powers • AI • Behavior • HUD / UI / Menus • Missions / Levels / Objectives

  36. C# Editor Bindings Why C#? The best language for the job • Easy, familiar, elegant • Reasonably performant • Massive availability of dev tools • syntax coloring, intellisense • winforms Organization • Build Sputnik Core as DLL • Reflection Layer in C# • Reflected classes call transparently into DLL

  37. A Word on Editors The two most important workflow /productivity technologies ever invented: Copy / paste Undo / Redo (Hard to start with, very VERY hard to retro-fit.)

  38. Demo

  39. Ideas • The Engine is the Game • Game Concepts are Supported at Every Level • Flexibility vs. Usability • Meta-Content: Finding the Game • Tight Core vs. Loose App Layer • High-Leverage Technology • Data Reflection • Pervasive scripting • Tools

  40. Necessities • Time • Experienced engineering • Data • Serialization • Versioning • Tools • Don’t be afraid to go custom • Optimize the critical pipelines • Undo/redo • Copy/paste

  41. “Write Games Not Engines” Yes. Don’t build in isolation You won’t get your representations right The Engine IS the game

  42. Thanks!

More Related