Video Game Design Foundations: Software Design Guide