CSC152 2004F, Class 24: Project Discussion Admin: * No class Wednesday or Friday * Be responsible to your roommates, show up to class on time! * Homework due. (Email me your stuff.) * Homework assigned. * Today's goal: You talk, I type, we discuss Overview: * UI group * AI "group" (Kevin) * EE group * Last group * New groupings /UI Group/ Once upon a time, a user logged in to our system with id and password [check user name and password against something]. [determine what room the user was in]. [get information on the room]. The user discovered that she was in a gym-like room with a stage to one side. Loud music is playing and there is a keg of non-alcoholic beer in the corner. WHOOPS! NO EVENT MANAGER ANY MORE! User sees a list of events that are happening in this room. Where do you want to go? (Show compass.) * pickBuilding(???) * pickRoom(???) Note: The world is responsible for keeping track of user ids and passwords. * boolean isValid(String userId, String password) Note: The world is also responsible for keeping track of user stats. * ??? getStats(String userId) /EE World/ * No race. Perhaps some background (Savvy east-coast young woman). * Techniques for "levelling-up": * Attend a certain number of classes. * Pass the classes. * Pass classes by going on quests. * We have to write these. * We might write a program to generate quests. * Quest is like a puzzle: * Find the four rabbits on campus * Find Jen Krohn's dog * Currently really vague * Abilities for people * Differ according to discipline * Some standard things (e.g,. "borrow" from Cowles) * Characters have counters * Sobriety * Sanity * Sleepiness * Events can change those counters * Study break improves sanity * Sleep decreases sleepiness * NPCs * Friends (normal students) * Can carry stuff into rooms. * Hookups (beauty, sketchiness) * Profs * Computers: How you find out about things happening on campus. * Room setup: * There are buildings * Within buildings there are rooms * Different rooms have different capabilities * You can't hook up in Noyce * You can't sleep in Bucksbaum * Game clock runs "faster" than normal time. * Things can only happen at appropriate times. * Combat systems: * Hookups * Arguing * Methods: /AI/ * NPCs should respond when other players in the room * Enter the room * Talk (to the NPC or generally) * Pick up something * Initiate combat * Possible responses depend on ... * Ownership of object (If you take Strauber's "Big Box of Political Values" ...) * Can the NPCs grow like regular characters grow? /Other World Group/ * Only three majors * Arguing and DAG-based attacks * "Smack" - a non-damaging attack * Lots of emotes that do things to other users * Observation about people: ints are "permanent" characteristics (change mostly on levelling), doubles are "variable" characteristics (change fairly regularly) * Each room is an object with * Description * Array of objects * Array of people * No world map in which things reside * No neighboring things * How do you figure out where you can go? * No answer * Takes time to go from place to place * Two ways to go places: walking and running * Running is faster, but increases on tiredness * Chances of random encounters * Based on major (Science majors ignore the world around them) * Humanities majors Some quick notes from Sam: * Simplify! Why not just interactWith(String verb, String personobject) throws InvalidActionException, NoSuchPersonException useObject(String what, String how) throws InvalidActionException, NoSuchThingException * There's a reason that lots of these things only let you move to a neighboring space * Design question: Do we tell a person that (s)he should interact with another person, or do we tell the world that two people are interacting? ... interact(String actor, String verb, String target) Homework (everyone): * Design World, Person, Thing, Place with a *few* key methods. Think carefully about the design of those methods. * Decide whether World is the only kind of object we can call methods on, or whether the other objects allow that too. * Think about how we're going to signal one person taht someone else has talked to him/her. /Design Suggestions: Start Simple!/