This talk discusses three core techniques which are vital to building a flexible game engine: abstraction, indirection, and orthogonality. The presentation starts with high level theory, but quickly delves into real world application, using the Unreal Engine as an example. The talk ends with a discussion of why these techniques are crucial for creating next-generation games.