39 comments Monday, August 18, 2008

This was the final week of GSoC. I was out of town for most of the week with limited internet access, so I don't have a ton of updates. I spent the week cleaning up and commenting code. I also did some more testing as I went.

Even though GSoC is ending, I plan to continue to test the game and I may add some new features too. Overall, I had a great time coding this summer. Hopefully I made a worthwhile contribution to TP!

0 comments Saturday, August 9, 2008

This week I worked on testing and documentation. I completely revamped the wiki page for Tigris and Euphrates into a much shorter and clearer walkthrough of the rules with screenshots. I removed a few of the sections in the wiki because I felt that they were excessive and didn't really help the reader understand the game.

I also continued to test the game, and fixed bugs as I found them. Most of the bugs were relatively minor. I fixed a bug where regions were not being correctly merged if they were joined but no combat occured. I also fixed a bug where leaders were not being removed when they no longer border a scientist colony. And I fixed a bug where colonist ships which were generated the previous turn were not being flagged for combat.

Next week I'll be doing final testing and bug fixes.

0 comments Friday, August 1, 2008

This week I completed the combat turn. This means that TaE is now fully playable from start to finish. All the features that were originally planned at the beginning of the summer are now implemented.

Here is an overview of my commits for this week: I completed the final cleanup for external combat which removes all the losing combatants and awards points to the winner. I added a function to look over the regions after all the losing combatants have been removed and make sure that it is still a region. If it is not still one region, the function rebuilds it into multiple regions. I added code to check for any more instances of combat after the current combat is resolved. Finally, I added the code executed when a game ending condition is reached. It tallies the points and announces the winner to all the players.

Later today (hopefully) (UPDATE: The combat overview is up! you can see it here) I will be adding a writeup explaining exactly how combat works in the game. It will be done in the same style as the "Tour of TaE" post.

Next week I plan to work on testing and documentation. My goal is to make sure there aren't any lingering bugs in the game and to make the documentation good enough so that anyone who can install TP can play TaE.


Now that combat is implemented into TaE, I'm going to run through the rules behind it and what it looks like both in TP and on the physical board.

First off, there are two different types of combat in TaE: Internal and External.

Internal combat is when there are two or more leaders of the same type in a single region, as shown below:

Physical Board

TP: Normal View

TP: Resource View

External combat is when there are two or more regions which have just been connected and contain leaders of the same type, as shown below:

Physical Board. The different regions are highlighted in red and green.

TP: Normal View

TP: Resource View

Once combat is initiated, each side's initial strength is calculated. For internal combat the initial strength is the number of scientist colonies bordering your leader. For external combat the initial strength is the number of colonies of the same type as your leader in your region. For the internal example above, the "pot" has an initial strength of 1 and the "bow" has an initial strength of 2 (the red tiles are represent the scientist colonies). In the external example above, the "pot" has an initial strength of 1 (one green tile) and the "bow" has an initial strength of 0.

During the next turn (the combat turn) each player involved in the combat my "reinforce" their leaders. To do this they select an appropriate colonist ship (scientist for internal, the same type as the leader for external) and select "Reinforce" as shown below:

For each reinforcement added, the strength of that side increases by one. After the turn is over, the side with the highest strength is declared the winner.

For internal combat, the losing leader is removed from the board and the winner is awarded one technology point. If in the example above, no reinforcements were added, then the "bow" would win and the board would look like this after combat:

Physical Board

TP: Normal View

TP:Resource View

For external combat, the losing leader is removed, and all of the colonies of the same type as the losing leader in the losing leader's region are removed. In the example above, let's say the "bow" adds two reinforcements and the "pot" adds no reinforcements. This makes the final strength 2 to 1 with the "bow" winning. The "pot" leader is removed as well as the green tile in his region. The "bow" player receives 2 points of the same type as the leader (green). The board looks like this after combat:

Physical Board. After removing the losers, the area is split into two regions, outlined in black.

TP: Normal View

TP: Resource View

That's all there is to combat in TaE. After the combat turn is complete, if there are still two or more leaders of the same type in one region, another combat turn will occur. Otherwise, the game resumes with normal turns.

0 comments Friday, July 25, 2008

This week I worked on getting the combat turn system implemented. I planned to have a fully playable version of the game done today, but unfortunately I wasn't able to meet that goal. I ran into several bugs as I worked on the combat turn which slowed my work. A couple of these bugs were in previously written code but just didn't surface until I had written the combat code. The other thing that slowed down my progress was the time it took to setup each combat test case. I had to go through a couple turns of the game just to get to the point where I could test out each new feature. This caused significant slowdowns when hunting down a segfault.

I started this week by finishing work on the fleet object so that it holds a set of normal orders and combat orders. I added a toggle which sets whether the fleet is a combatant in the combat turn (and should have combat orders enabled). I then added the reinforce order which is the only order used in combat.

Then I began work on implementing the combat turn into taeturn. It first determines which fleets should have their combat orders enabled. Then it determines the initial strength of each side. Then processes all of the orders. Then determines the winner of the combat and awards points to the winner.

What I have left to do is award points for the winner of external combat. Remove the losing side of external combat. Rebuild the region after removing the losing fleets, and then doing one final check to see if there needs to be another turn of combat to resolve all the conflicts. I'm going to try to get some work done on this during the weekend, and I should have it done early next week. After that I will do a writeup with screenshots to show how the combat works, and then start cleaning up and testing everything in the game.

0 comments Friday, July 18, 2008

I started off this week by taking a look at the TaE wiki page. I wrote up a getting started guide for people who want to try out TaE. I'll be making improvements to both pages soon.

I then began planning everything out for the second half of the summer. I think the comparison photos between the actual board and it's implementation went well so I will continue to post those as the project continues. I will incorporate these photos into the wiki page and make sure that anyone who wants to play the game needs to only visit the wiki to get all the info they need.

For the combat phase here is what I have planned: I will use a multi-turn structure similar to RFTS. If combat is triggered, then a message will go out to all players and the next turn will be a "combat turn." The players who are involved in the combat will have the applicable orders enabled for their fleets, everyone else will not be able to perform orders until the combat is over. At the end of each combat turn, the board will be checked again to make sure that no further combat needs to occur and then the game will return to normal turns.

To do all of this I will create a function (maybe two: internal and exteral combat) within taeturn which takes the combatants as input and then handles switching the orders on all the fleets and continuing with the combat turn. This function will be called from the move or colonize order after gathering the combatants. I implemented the code to find the combatants this week. I also went ahead added some code to the fleet object which lets them keep two sets of allowed orders, combat and normal. This lets me set up the orders at the beginning of the game and all taeturn has to do is tell the fleet to switch orders.

Next week I am going to be working hard on implementing the combat turn and I'll hopefully have a first fully playable version of the game ready by next weekend!

0 comments Friday, July 11, 2008

The Board:
Here is a picture of the physical board from the game this ruleset is based off of (click on the pictures for a larger view):

The board is composed of 3 different spaces: blank tiles, river tiles, and artifact tiles (marked by the winged creatures).

Here are a couple screenshots of the board in thousand parsec:

In this screenshot, each of the "tiles" of the board is represented as a system. The green and red systems at the bottom of the screen are each of the player's systems. They are used as a spot to hold each player's fleets when they are not in play on the board.

To see the three different tile types represented, we switch to resource view:

Here you can see the "river tiles" represented as small red circles. The "artifact tiles" are the larger red and blue circles. Since this adaptation is set in space, the river tiles are uninhabitable systems which can only be colonized by mining robots, and the artifact tiles are star systems which contain ancient alien artifacts.

Players may also create their own maps.

The Game Pieces:
Each player has a "hand" of 6 random building pieces, 4 leaders (one for each type of colonist), and 2 destruction tiles.

Here are what they look like in the real game:

The building pieces: Temple (red), Settlement (black), Farm (blue), and Market (green).

The leaders: 1 set of 4 for each player. Each set contains 1 leader per building type: Priest (red/temple), Merchant (green/market), Farmer (blue/farm), King (black/settlement).

Destruction pieces: Each player gets two of these. Each can be used once to destroy a tile and render it unusable for the rest of the game.

In the TP adaptation, the game pieces are fleets of ships. Each fleet represents a single game piece. All of your fleets are kept in your home system until you issue an order to them. Here is a sample home system:

Here you can see the player's hand of 6 Colonist fleets (building tiles), set of 4 leaders, and 2 bombers (destruction tiles). To match the setting, the leader's names have changed: Priest is now Scientist Leader, King is now Settler Leader, Farmer is now Mining Leader, and Merchant is now Merchant Leader.

Each colonists' type is hidden from other players, to find out the type of one of your colonists, you click on it and look at the type of ship in the fleet:

The four types of colonists are: Settler (Settlement), Mining (Farm), Merchant (Market), Scientist (Temple).


Each fleet has an order associated with it:

  • Colonists may colonize a system: this consumes the colonist and generates a resource of the colonist type on the system.
  • Leaders may move to occupy a system: this does not consume the leader. This order is used to harvest resources for points.
  • Bombers may destroy a star system. This removes all resources, leaders, and anything else in the system and prevents any further orders from being executed on that system.
All of these orders are performed by clicking on the fleet, selecting new order, and then selecting the star system you wish to perform the order on. If the system is not valid, then it will reset the input dialog and you must choose a different system. Here is a screenshot of the order dialog:

The game board, pieces, and orders are relatively simple. The real meat of the game comes in the rules to when and where you can execute the orders. But first, you have to understand regions...


Regions are a group of colonized or occupied (by a leader) systems. Each system in the region must be adjacent (north, south, east, or west... NOT diagonal) to at least one other system in the region. Here is an example:

Resource View:

Normal view:

In resource view, the red circles are colonized systems (the one with red/blue has an alien artifact). In the normal view, there is a leader in the upper right corner (marked in red). So all of the systems except the one in the bottom left corner are in the same region.

Brief overview of the rules:
  • Each player may execute 2 orders per turn.
  • A system may only be colonized if it is not occupied by a leader and has not yet been colonized.
  • Mining ships may ONLY colonize uninhabitable systems and these systems may not be colonized by any other type of ship.
  • Leaders may only be moved into an unoccupied, uncolonized, inhabitable system which is directly adjacent to a science colony.
  • There are 4 different "points" which each player can receive; one for each of the colonist types.
  • When a system is colonized, the player who owns the leader of the same type in the region of the new colony receives one point of that type. If there is no leader of the correct type then the owner of the Settler leader in that region gets the point. If there is no settler leader, then no one gets the point.
  • If there are two or more alien artifacts in the same region at the end of a turn, then the person with the Merchant leader in that region gets to take one of the artifacts. An alien artifact acts 1 point of a type of the player's choosing.
  • Leaders may not join two regions together.
  • If a leader is placed in a region which already contains a leader of the same type, internal combat is initiated (not yet implemented).
  • If two or more regions are joined and they contain leaders of the same type, then external combat is initiated (not yet implemented).
  • Combat is not yet implemented and is not covered in this rules overview.
  • At the end of each turn, each player's reserve of colonist ships is refilled to 6 randomly from a pool of ships.
  • When the pool of colonist ships is empty, the game is over.
  • When there are 2 or fewer alien artifacts left on the board, the game is over.
  • Each player's score is equivalent to the number of points in the type which they have the fewest points in. (the final score tally is not yet implemented).