While virtual crowds are becoming common in non-real-time applications, the real-time domain is still relatively unexplored. In this paper we discuss the challenges involved in creating such simulations, especially the need to efficiently manage variety. We introduce the concept of levels of variety, then present our work on crowd behaviour simulation aimed at interactive real-time applications such as computer games or virtual environments. We define a modular behavioural architecture of a multi-agent system allowing autonomous and scripted behaviour of agents supporting variety. Finally we show applications of our system in a virtual reality training system and virtual heritage reconstruction