The History Game: Multi-User Shell

Project Proposal by Martin Stacey


The History Game: Multi-User Shell

Software

Java or C++ or Smalltalk or another object oriented language with good GUI facilities

Covers

Interpreters for rule-based languages, GUI building, building network applications

Skills Required

Programming, some understanding of networks, some interest in gaming

Challenge

Conceptual ??? Technical ???? Programming ????

Brief Description

The History Game (idea borrowed from Civilization™): You are a leader of a nomadic tribe at the dawn of history. Your mission is to guide your people to greatness, as your society grows, develops and meets other competing tribes in trade and war. You have to respond to famines, epidemics, climate changes, invasions and technological developments in your quest to achieve ultimate world domination….

The world's tribes develop and interact in different ways though time. A large part of the game is executing sets of rules for development over time, interactions between societies, and responding to random events. Programming and modifying these rules is a fascinating but complex and time-consuming job; it is an incremental task, first for building a first usable version of the game and then exploring variations.

The objective of the project is to develop a shell for the execution of rules governing the development of history according to the decisions of the players (human and machine) and the random geographical and social events they have to deal with. This shell should support a single user playing with/against machine generated tribes, and multiple users playing both with/against machine generated societies and each other. The task includes designing the basic operation of the shell - how rules are written and interpreted, how interactions between different societies are handled, and also how the shell deals with asynchronous actions by human players. The task also includes developing a system structure that enables different users to play the game on different machines. This might involve different users interacting by web with a single program, different copies of the same program on different machines communicating with each other, or different single-user programs communicating with a single coordinating master program. The project should include a demonstration of the effectiveness of the game shell, but need not include a full-scale game implementation.


Back to