An architecture supporting the development of serious games for scenario-based training and its application to Advanced Life Support