The TERENCE Smart Games: Automatic Generation and Supporting Architecture