90 likes | 238 Views
Abstraction, Indirection, and Orthogonality Aaron Moore. Building a flexible [Game Engine]. Definitions. Abstraction – Going away from the specific, dealing with things on a higher level Indirection – Loose coupling Orthogonality – Meshing systems without special cases.
E N D
Abstraction, Indirection, and Orthogonality Aaron Moore Building a flexible [Game Engine]
Definitions • Abstraction – Going away from the specific, dealing with things on a higher level • Indirection – Loose coupling • Orthogonality – Meshing systems without special cases
Strengths and Advantages • Eliminates some bottlenecks (Game Development) • Consistency • Exposes properties to designers • Component systems and Metadata
Example: Unreal 3 Engine • What is Unreal 3? • Top-down engine framework • Content pipeline w/realtime preview • Framework • Object Management • Gameplay w/auto memory management • Engine systems • Content
Object Management • Loose coupling of all objects creates a vastly customizable amount of content which can be placed into the code without disruption of other factors. • Inheritance • Gives distinct properties to different objects and still allows them to interact with the other objects
Engine System • Stores explicit metadata for classes • Exposes properties to the designers so everything can be data-driven • Key elements can be changed without having things hard-coded
Gameplay • Actors • Collision • Specialized per instance • Classes • NPCs • Inventory Items
Content • Keeps things consistent yet provides distinct properties • Prevents things such as the combinatorial explosion of light and shadow options • Kismet – Visual Scripting • sequence objects • attach events
Summary • Keeps things specialized per instance • Adding/Changing does not disrupt other teams • Component systems keep things flexible • Keeps things consistent