   Crowd Expectation Model... or something
  I have no idea what to call this so if you know what it is called please tell me.I'm working on a scoring system for my arena-type game and I want the scoring system to be dependent on the crowds expectations.For example:I have a standard arena with the main attendees being from the middle class population with the following "attributes"-not easily impressed-favors big stunts/moves over destruction/violence-favors <player or AI>-favors <move-type>I'll obviously make the crowd more noisy when good stunts are performed and make them quieter when stunts are repeated or sub par stunts are performed.But I want to try model anticipation into the crowd where they will give a louder ambience noise and then greater final cheer if the stunts that are being pulled off are prolonged or increasingly get harder and harder or if the stunt nearly fails after being prolonged. (kind of playing with the crowd).On top of this I need to make sure the crowd doesn't just change it's opinion of player just because they fail a stunt.Anyone have any ideas on what would be good to include in this or how to approach the design?   
  If your goal is to very closely simulate a crowd, I'd start by breaking it down into it's real-life elements, or classes (not necessarilly a C++ class) and start thinking about their responsibilities (things they do), and collaborators (other classes they send messages too), assuming you're using OOD...For example, a list of possible classes:stunt, crowd, crowdMember, performerThe performer goes up a ramp and begins a flip.  The crowd's members notice this, and individually they determine if they get excited and give feedback or not.This could be implemented in such a way:(player hits key sequence to begin a flip)player.begin_stunt(flip);for each member in crowd:    member.view(player)    member.determine_likes_stunt()    crowd.add_to_feed_back_volume(member.get_feedback_volume())How an individual determines if it likes a stunt is irrelevant to the larger design, so you could create CrowdMemeber sub-classes that were as simple or complex as you desired, tracking patterns in stunt types or only paying attention to the player doing the same stunt repeatedly.A fanOf attribute seems appropriate.  Then the crowd member could get excited if a performer other than his fan wrecked, or got upset and let down by his performer wrecking.  But again, these things are all irrelevant.  Some members may not be a fan, and instead may be some jerk in the crowd just there to see anyone eat dirt.[Edited by - zerothrillz on May 18, 2010 1:53:30 AM];  That's an excellent idea.I could randomly create different classes of audience members and then assign a percentage of that class to the crowdLikes the player 0.5%Hates the player 0.1%Likes crashes 0.4% etc, etc.That will also let me integrate some sort of reputation, the crowd may begin to like the player so their fan base increases based on the percentage of the crowd liking the player at the end of an event compared to when he started it.Also lets me calculate whether a mexican wave or team specific chant is performed by the crowd. More members enjoying themselves + loyal fanbase = greater chance of team/player specific cheering.In case anyone was wondering why I'm putting this much effort into the crowd... You'd be amazed how much difference hearing a cheer after you do something cool makes you feel good, even from a game.   