A language for defining game systems