World of Foo: Readme -------------------- This document contains information on how to run the game, change the set of species used by the game, and how to configure the common game options. The git repository for the game code is available through the "git submit" system for CSCI 330 students using ssh csci fork csci330/wofoo csci330/$USER/wofoo git clone csci:csci330/$USER/wofoo The code and documentation is also available through url csci.viu.ca/~wesselsd/courses/WorldOfFoo/ Running the game ---------------- The repository includes all the files necessary to run the game, but assumes you are running it on a linux system that has gcl (gnu common lisp) installed in /usr/bin. Customization of the path is discussed in the following section of the Readme. The game only runs in console mode - navigate to the repository containing the game code and enter the command ./controller.cl The default configuration displays a report at the end of the first turn (turn 0) and the end of the last turn (turn 1000). There may be a lag of up to several minutes between these two reports on the default settings. (Setting customization is discussed below.) Customising the game -------------------- A number of aspects of the game are easily customized, the most common revisions are discussed here. Basic fluency in common lisp is assumed for some of these changes. (1) Changing the in-game species: Each species in the game is implemented through a lisp file matching the species name, e.g. cow.cl for cow. To add/remove one of the pre-built species, edit the CompetitorNames and CompFiles lists in controller.cl. Creation of new species is beyond the scope of this readme, but is discussed in the game description at url csci.viu.ca/~wesselsd/courses/WorldOfFoo/ (2) Changing the population size: A fixed number of critters of each species is created at the start of the game, this value is controlled by variable SpeciesPopSize in controller.cl (3) Changing the points and stat limits available for critter traits: The upper limit on the value of critter traits is determined by macro EstablishTraitMax in controller.cl. The number of points critters are given to start the game is determined by local function (Points) in controller.cl (4) Changing the map size: The map size is automatically generated to produce a specific density of critters per hex - more critters per hex means smaller maps for the fixed population. The relevant variable is CrittersPerHex, in controller.cl (5) Changing the farming and mining resource levels and distribution: The default resource levels can be scaled up/down by changing the ResourceLevels variable in controller.cl. For example, setting this variable to 2 will double the resources available, setting it to 0.5 will cut available resources in half, etc. The default distribution of resources creates lots of map hexes with farming/mining limits approximately half of the TraitMax value, extreme values (high or low) are rarer. This can be changed to a distribution with mosty poor quality hexes and a small number of very good hexes by setting the SparseVariant variable value to t. (6) Changing the reporting intervals: There are two forms of reporting for the game: the encounter logs and the report summaries, each of which runs at fixed intervals. The frequency of encounter logs is set by the AutoLog variable in controller.cl, while the frequency of reports is set by AutoReport The encounter logs detail every single critter-vs-critter encounter in a given turn, and can be quite lengthy. Setting AutoLog to 0 will completely disable the encounter logs. (7) Allowing a human-playable character: By default the assumption is that all critters are AI-controlled, but there is an option to create a single critter of species "human" whose actions and choices are user controlled. To enable this, set the HumanPlayer variable to t. At the start of the game the user will be asked to pick a stats allocation for the human, and during each encounter involving the human the user will be given a set of menu options to pick their actions/choices. (8) Changing the health boost from eating: By default, eating will increase health by 3, up to the critter's endurance level. The value can be altered by changing the EatAdj variable in controller.cl Questions/comments ------------------ Questions and comments can be directed to David.Wessels@viu.ca