It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.    
Latest game industry news.|Articles about game development.|||||Searchable databases of game development companies, products, and web sites.|Purchase stuff from Gamasutra, Game Developer magazine, the GDC, and more.
Search articles, jobs, buyers guide, and more.

By Richard Evans and Thomas Barnet Lamb
Gamasutra
[Author's Bio]
April 24, 2002

The Case for Activity

The Implementation of Activity

Example Activity

Printer Friendly Version
   

This feature originally appeared in the proceeding of Game Developers Conference 2002


2002 GDC Proceedings
CD-ROM
Price: $150.00 + S&H

Letters to the Editor:
Write a letter
View all letters


Features

GDC 2002: Social Activities: Implementing Wittgenstein

Example Activity

   ScissorsPaperStone(Agent p1, Agent p2, int max_score)
   needs p1, p2
   constructor
   {
          int score1=0;
          int score2=0;
          int NumGoes=0;
          AGENT_LIST Players;
          enum actions
          {
                 scissors,
                 paper,
                 stone
          };
          Players.push_back(p1);
          Players.push_back(p2);
          -> Play
   }
   state Play
   {
          needs score1<max_score && score2<max_score !-> Finished
          requests
                 Players do CHOOSE(scissors, paper, stone) !-> GiveUp
                 ->
                 Evaluate
   }
   state Evaluate
   {
          if (p1.GetChoice() > p2.GetChoice())
          {
                 score1++;
          }
          else
          {
                 score2++;
          }
          -> Play
   }
   state Finished
   {
          if (score1 > score2)
          {
                 => UpdateScoreFromResult(p1) // send message to parent
                 -> WinnerCelebrates(p1, p2)
          }
          else
          {
                 => UpdateScoreFromResult(p2) // send message to parent
                 -> WinnerCelebrates(p2, p1)
          }
   }
   state WinnerCelebrates(Agent winner, Agent loser)
   {
          requests
                 winner do CELEBRATE() !-> GiveUp
                 ->
                 LoserCries(loser)
   }
   state LoserCries(Agent loser)
   {
          needs loser
          requests loser do CRY() -> GiveUp
   }
   state GiveUp
   {
          -> Delete
   }



Conclusion

In this article, we have tried to motivate the introduction of social activities as the next obvious level at which to add content, and we have outlined a working system which makes it very easy to add a new activity (without having to worry about all the book-keeping needed to integrate our new activity with all the others). In our prototype, we already have a large number of activities running simultaneously: various games (both turn-taking games and games with simultaneous-turns), conversations, meal-times, courtship activities, with a moral community activity running in the background.

This work has been inspired by philosophers (Wittgenstein and Dreyfus) who are apparently critical of the very possibility of AI. It is pleasantly ironic that their work, which they might see as precluding the possibility of AI, will result in the next generation of social agents.

References

DeLoura (ed), Game Programming Gems, Volumes 1 and 2
Dreyfus, "What Computers Still Can't Do"
Hacker, "Wittgenstein: Meaning and Mind"
Heidegger, "Being and Time"
Wittgenstein, "Blue & Brown Books"
Wittgenstein, "Philosophical Investigations"
Wittgenstein, "Zettel"

______________________________________________________
[Back To] The Case for Activity


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service