Data Structures and Software Engineering for Games