Software Engineering for Games in Serious Contexts: Theories, Methods, Tools, and Experiences