I am planning a course on game development. Currently my main problem is how to design the assignments and grade them in a fair and objective manner. In previous courses I taught (like basic programming or algorithms), I could always design homework assignments that had objectively correct solutions. However, in game development it is important to encourage creativity and imagination. Ideally, I would like to have each team of students work on their own game. But how can I assign grades to such assignments? There is no objectively "good" solution: each game can be fun for some gamers and boring for others.
I could try to assign grades by "effort" or "creativity", but I do not have an objective way to measure them. And if I assign grades by my subjective perception of effort/creativity, this will inevitably lead to complaints by students who believe they made a lot of effort.
For background, the course is intended for third-year undergrads in a computer science department, and it will probably involve programming in Unreal engine and C++. But, I think the question is relevant to any course in which the main goal is to encourage creativity. What is an objective and meaningful way to assign grades in such courses?
NOTE: The question is related to https://cseducators.stackexchange.com/q/3656/1873. However, there the problem is that the students lack motivation or ability. In my case they will (hopefully) have motivation and ability, since it is a choice course taken by advanced students. Still, I will have to assign different grades to different students since I cannot give 100 to everyone..