Programming Game Design Patterns