Skip navigation

Monthly Archives: March 2009

Just got a reply from Zeigeist Games that said I got the internship for the summer!!!!!!!!!!!!  This means I’ll be flying out to Orlando, Florida for the summer and doing iPhone programming for these guys.  I can’t express how excited, elated, and anxious I am to be given this opportunity!  I’m “living the dream” as Max said this morning.  This will be a great learning and proving opportunity for me and I hope I make it worthwhile for both parties.  More on this later…

I’ve decided to take another swing at the nation card game from Challenge #6.  I was unable to mock-up all of the cards, but I instead created a percentage table for each card.  My printer has stopped working, so I’ll have to figure out what I’m going to do for the tables and what not.

Basically, I’m planning on implementing the changes I had outlined from the end of the playtesting for Challenge #6 and trying to card balances right.  Also, I’m trying to think of another dimension that I can lay on top of the game.  I was thinking maybe having Government cards that include things like “Democracy”, “Theocracy”, or “Communist” that have specific advantages and disadvantages.  These would help to make the play experience that much more unique and allow for some extra choices.

Adding the Government cards went over really well.  One of my more skeptical playtesters exclaimed that he thought it was “really fun.  The balance was pretty good and the choices felt important.”  Or something like that.  Bottom line, it went over very well.  One thing is clear: cards would have made this playtest a LOT easier, but the percentage chart got the trick done.

The only thing I can think of is perhaps creating some more unique Economic cards to add some more risk and benefit for choosing Economic cards over a simple Resource card.  I’m quite proud of it.

Little late in the week, I meant to post on Friday but that didn’t happen.  Anyway, my ideas for the April Fool’s Day challenge have been sitting on the back burner for most of the break so this is what I’ve got:

For the original games I have two ideas, one of which would take some serious doing, so I’m probably going to go for the easier one (for now).  The easy idea is a prank version of a quiz game, basically asking players what the best move would be on a given pranking situation and award them spaces on a board for correct answers.  The difficult one is a prank version of something like Mouse Trap where the players would move around the board in order to build an elaborate, possibly mechanical, prank that would be set off or reviewed at the end.

As for the revisions, I’m torn between doing the Game of Progress and the Business Venture card game.  I really like both of them so I may have to flip a coin or something if I don’t decide to do a new game.

I’m probably going for the revision, mostly because I don’t feel that my ideas for the new games are solid enough to make really interesting games right off the bat and the games I want to revise have a lot of potential.  With that in mind, I’m off to lay out these options and start getting into the guts of the process.  More later.

Our challenge for the break is to do one of the following: either revamp an old game design or create a themed game based off of April Fool’s Day, which is Wednesday of next week.  I think I’m going to be reviewing one of my old games, but I will certainly be mulling over possibilities for the April Fool’s game.

The playtest of this game showed that there are some issues with wrapping.  I think in the end the wrapping mechanic is necessary, because the game will last way too long otherwise.  Unfortunately, there doesn’t seem to be very many choice opportunities in this game, but that’s OK for such a simple game.  I’ll be figuring out some more opportunities, but for now it’s a decently self-contained, simple board game.

The resulting game for Challenge 7 is a board game with 9 sections of paths and four colored triangles, one in each corner of the board.  The winner is the first player to reach the colored triangle that is diagonally across the board.  I started by using a d10 to determine the number of spaces that a player moves on their turn, but I decided to use a form of random number generation that is rarely used: cards.  So, a player, on their turn, draws a card from the deck.  If the card is a number card, the player may move their marker in either direction that many spaces.  If the card is an ace, the player may rotate any tile they choose in any direction they choose.  After this rotation, the player may move 4 spaces.  If the card is a face card, the player draws a second card.  If the face card is diamond or heart, the tile associated with the second card drawn is rotated clockwise.  If the face card is spade or club, the tile associated with the second drawn card is rotated counter-clockwise.  If the second card is a face card, the player may rotate any tile they choose in any direction they choose.  After this rotation, the player may move 4 spaces.  The edges of the board wrap around to the other side, except for wrapping to colored bases.

A good friend of mine, Alex Haase, visited me this weekend and I told him about my idea for an evolution-based game/simulation to expose the mechanics of the evolutionary process and the complexity of homeostasis within a single organism as well as within an entire species. We collaborated to create a very detailed set of rules, environments, and implementations in order to achieve this end. I’m incredibly proud to present the method we came up with.

GENETICS

A given organism’s genetic code will be represented by an array of strings. This array will be arbitrary [8-80] in length, and the strings will also be arbitrary in length [1-256]. This will bring maximum storage for a single genetics table to (256 bytes * 80 / 1000 bytes/kb) 20.48kb. This is quite reasonable and represents a rather large amount of data. However, data in a real gene is not read from end to end. Different genes are spread out over the chromosome, including sections of inert and unused data. Upon generation of the genetics table, a gene map will also be created to determine where each gene sequence begins and ends. This will be represented by an array of arrays containing gene location objects which will hold table index, gene start, and gene end. In this way, the genetics table can be parsed for information dynamically without the possibility of easy user interpretation. Alex had suggested that patterns be evaluated for certain well-known advantageous traits (such as camouflage, cyst stasis, or territorial marking). I agree with a slight modification: the the pattern checking be based not on a specific, static pattern, but by recognition of stepped character differences (more about this later). These patterns will be stored in a dictionary (hash table) of trait expression objects.

So, the way all of these pieces come together is like so:

The genetic table generator will run, generating a table with random properties and values. Keep in mind, the strings will actually be evaluated on their ASCII values in relation to target values. More on this in a few. A simple genetic table might look something like this:

[0] -> Ysl74.,34,.9/\]2gg5D25][46

[1] -> IIb,berl3/64654=/+saddhrt9rh-9454y

[2] -> ?>wa/a’QR#M KGLcknw83_+++

The gene map will create an array containing information like this:

(Motility) [0] -> [0] -> {index: 2, start: 6, end: 15}

The trait generator will generate a table of traits looking something like this:

[“Hibernation”] -> {34, 123, 65, 19}

[“Poison”] -> {10, 99, 14, 29, 78, 16, 41}

The numbers in the trait expressions represent the difference from one character to the next. So a gene section with the ASCII difference between it’s first and second letters that is 10 would begin to qualify for the trait at index 1. The more of these sequential differences the gene satisfies, the stronger the trait will manifest. This kind of checking may be quite expensive, but we’ll have to see.

Genes will be evaluated against a randomly determined array of arrays of numbers to determine the organisms resulting fitness. Genes will be read using the gene map to concatenate all of the like genes together, and then the system will begin evaluating each gene based on it’s ASCII value. The randomly determined array works as a standard. The deviation from the standard by each character in the string goes towards the gene’s score. Then the length of the gene, the total score, and the number of standard elements are factored in to get the final score for that gene. So, say our Motility gene standard was 34-198-102, and we had a gene that was translated into ASCII with values 56-202-181-89-30-2-102. Well, 56 is closest to 34 and is off by 22, so the first score is 22. 202 is closest to 198 and off by 4 so the total so far is 26. 181 is closest to 198 and is off by 17, so the total score is 43; and so on. Normally I would do all the math, but I don’t feel like it right now. Let’s just assume that the total score is 116. We then calc the gene potency by dividing the maximum string capacity (255 * 7), 1785, by the total score to get 15.3879. We then divide this answer by the number of standard values (4), to get the final value of 3.8. This is a fantastically good gene value. Most values will have values between 1.2 and 2.8, but it will vary greatly.

SPECIES

Our first plan for the implementation focused on microbial life. It’s a great starting point, so that’s what I will present here and will be working with for a while. However, I hope expand to multi-cellular creatures at some point, because I feel this system has a lot of potential no matter what scale you work at. So, here are attributes used to describe an organisms capabilities and presence within the sim/game:

  • Offense: Determines the amount of damage the organism can deal to it’s target food source. Food sources will only relinquish food (or die) after a certain amount of damage has been dealt.
  • Motility: The speed at which the organism can move about. This value will be guaged on percentage of a maximum value.
  • Defense: The amount of physical damage resistance, representing cell wall composition or hide thickness etc.
  • Sensation: The degree to which the organism is aware of it’s surroundings.
  • Blending: The degree to which the organism can blend into it’s environment.
  • Health: Determines the maximum amount of damage the organism can sustain until it dies.
  • Metabolism: The percentage of energy the organism can glean from it’s food source.  A higher value allows for more energy output.
  • Storage: The amount of food the organism stores for later use.  Stored food also increases the organisms weight, requiring more energy to move.
  • pH Resistance: The range of pH values the organism can survive in.  If the organism is in an environment it is not resistant to, it will begin taking damage at a rate of (|resist – environment|).  This gives them time to move into suitable environs.
  • Radiation Resistance: The amount of radiation the organism can withstand without becoming ill.  Double this value will kill the organism outright.  Radiation always has a chance of damaging DNA, so rad resist is simply for living conditions.
  • Ion Resistance: The range of diluted ions that the organism can live in.  This attribute functions similarly to pH resistance.
  • Thermal Resistance: The heat range in which the organism can live.  This attribute functions similarly to pH resistance.
  • Redundancy: The number of copies of genetic code the organism possesses.  When something effects DNA (such as radiation damage or replication), a random copy will be selected.  This aids in radiation resistance and mutation resistance.
  • Regeneration: How quickly physical wounds and health are healed.
  • Sequencing: The speed and accuracy at which replication occurs.  Levels are stepped, providing more accuracy, then more speed, etc.
  • Diet:  This one’s tricky.  This attribute determines which food sources the organism can eat, which ones it cannot eat, and which ones are poisonous (should it eat it), including poisons from attacks and other biological agents.

ORGANISM

In between each generation cycle, each organism will have active stats that will be taken into consideration while advancing state:

  • Health: The current amount of health the organism has.  If this falls to 0, it dies and can be therefore eaten.
  • Motility Modifier: This is directly effected by the organism’s health, decreasing as the organism is injured, allowing predators to  secure their prey more easily.
  • Energy: This is spent to perform different tasks, such as moving, digestion, attacking, regenerating, or reproducing.  Energy is gained through the eating and digestion of food.
  • Food Stored: The amount of food the organism has stored before it needs to feed again.
  • Health Modifier: This stat is directly effected by the organism’s radiation, pH, ion, and heat conditions.  If this modifier changes the organism’s maximum health to 0 or lower, the organism dies.
  • Conditions: This array stores the amount of ongoing radiation, pH, ion, heat, poison, physical, and other conditions that may be affecting the creature.

ENVIRONMENT:

The ‘test’ environment for this sim/game will be a petri dish.  The environment will be filled with many different species of bacteria, and resources will be pretty readily available, just to make sure the system works.  However, as the scope of this project grows, environments will become much more realistic and interesting.

  • pH Balance: The acidity of the surrounds.
  • Ion Balance: The amount of dissolved ions.
  • Background Radiation: The amount of ambient radiation.
  • Ambient Heat: The amount of ambient heat in the environment.
  • Resource Pockets: These pockets of food will be scattered about randomly.

The environment will change, sometimes slowly, sometimes rapidly.  Many different events will occur to change the environment in one way or another to show how selective pressures change species.

So, that’s the idea for now.  I’m still trying to figure out how to make this into a fun and interesting *game* versus a interesting *simulation*.  Will give more details later.

Ok, yeah, it’s unbalanced.  Some might even say one sided.  But that’s part of the point.  I think it went pretty well.  Some points balancing needs to be done, but I think the message is reasonably clear.  Some of the players were a little put-off by the fact that the game only focuses on the crazy religious zealots, but again, that’s the point.  The focus was to show how blind faith and the abandonment of reason don’t help anyone.  It went well, and I think I will be building on this concept more as I move through the course.

Well, it was only a matter of time.  I’ve created a game that I’m sure will be generating enormous amounts of grief for me.  Still, it’s message is very important and will be presented nonetheless.  Here we go…I present to you, humble viewers of KRGB, the Game of Progress

The Game of Progress

6-10 players, moderate complexity

There are three piles of cards (Science, Faith, and Disasters) around which the players are to be seated.  Each player rolls a d20.  If the roll result is 10 or less, the player is a “True Believer” and will pull cards from the Faith pile.  If the roll is 11 or higher, the player is a “Scientist” and will pull cards from the Science pile.

Once the teams have been determined, each team rolls the d20 to see who goes first.  Whoever gets the higher roll on the d20 goes first.  The team that goes first picks who in their team will start.  A round is completed when play returns to this first person.  At the beginning of the game, flip over the first Disaster card.

Play proceeds clockwise around the circle, each player can play one card per turn on their turn (unless a card they have says otherwise).

Side Specifics:

Scientists draw 3 cards at the beginning of the game.  Scientists keep 3 cards in their hand at all times.  <This signifies the ever-changing and growing world of science and technology that we live in.>  Scientists play cards to build up Progress Points to avert the disasters.  Once a disaster has been averted using Progress Points, the previous True Believer becomes a Scientist, discarding their Faith cards and drawing up 3 Science cards. <This signifies the power of science and reason to solve problems in the real world>

True Believers draw 4 cards at the beginning of the game.  True Believers only draw cards when a card allows them to, or when they are converted.  <This signifies the large of array of unsupported claims that believers use to coerce their followers, which changes very rarely.>  If a True Believer has no cards on their turn, they are forced to skip their turn.  True Believers play cards to increase their Grief Points or to convert Scientists.  At the end of each True Believer’s turn, the player rolls a d20.  On a result of 0f 20, the current Disaster card is discarded, and the previous Scientist is converted.  <This symbolizes the fact that what believers say rarely coincides with reality, and they tout it as a huge success, gaining the attention of the masses.>

Disasters:

Every 5 rounds, a new Disaster card is brought into play, along side any other current disasters.  If a fourth Disaster card is brought into play, the game is over with no winner.  <This represents world-ending disastrous affairs.>

Winning:

If all of the players are converted to Scientists, the game ends with the Scientists as the winning team.  If all of the players are converted to True Believers, they must play for 5 more rounds.  If, at the end of those five rounds, all players are still True Believers and less than four Disaster cards are active, the game ends with the True Believers as the winning team.  <Believers would have nothing to protect them from disasters if there were no science, and scientists would be able to do more faster without the religious right slowing them down.>

Progress Points:

A way of recording Progress Points should be on hand, since the players on each team will shift frequently.  Progress Points are gained by playing Science cards.  Once enough Progress Points have been accumulated for an active disaster, the Disaster card and all of the Science cards played against it are discarded.  Progress Points can be spent for certain effects using cards.  Progress Points can be lost from certain Faith cards.

Grief Points:

A way of recording Grief Points should be on hand, since the players on each team will shift frequently.  One Grief Point per active disaster is given per round.  Grief Points can be gained by playing Faith cards.  Grief Points can be spent for certain effects using cards.  Grief Points cannot be lost by any other means.  <Rarely do people look to science for comfort.  It’s usually to religion and faith that they flock, rarely solving their problems.>

I would like to say that yes, this game is entirely over the top, ridiculous, and rather hypocritical.  But that’s the point.  It’s meant to be abrasive to highlight absurdities.  Other than that, I have no regrets.  Hyenjoy.