From: Lane S. <dow...@gm...> - 2007-07-04 02:57:20
|
Hi all, I've been starting to implement a TransAmerica-style rails game. As I've been designing the code, I've encountered a couple of interesting issues. I thought I'd mention them, and see if anyone has any thoughts on good approaches to these issues. This game can play 2-5 players. Put another way, players 3, 4, and 5 are optional. The dtd allows players to be optional, but as far as I can tell this is ignored by the engine. To support optional players, it seems that some mechanism is needed in the player selection panel to indicate whether an optional player will be used. Perhaps each optional player could have a checkbox to the left of its pulldown menu. Or, each optional player could have an additional "No one" or "Not used" option in the pulldown menu. Once the game gets going, if any optional players are not used, it seems that they should not be included in the player list. I would think also think that any steps where an unused optional player is the player should be skipped. Another issue involves rounds. Here's how a game of TransAmerica plays: 0) Players each start with a specified number of points (around 10 or 12, I think) 1) Pick a player to start. 2) Starting with the start player, each player draws goal cities. Cities drawn by one player are not available for selection by succeeding players. 3) Starting with the start player, each player plays in turn. Play continues until the someone has connected to all of their goal cities. Play may end after any player plays (in other words, you don't have to wait until after the last player has played for play to end). 4) Players calculate their scores, and each player subtracts their score for the round from their point total. If anyone has zero points, the game ends, and the person with the most points wins. 5) If the game has not ended, clear the board of pieces. The player succeeding the start player becomes the new start player. Go to step 2. I'm not sure how to fit this type of round structure into the TripleA game engine sequence. Or, if it won't fit, how the engine might be (minimally) modified so as to allow this sort of round structure. Interesting things to note here: * The order of play differs from one round to the next. * Phases 0 and 1 are run exactly once. Phase 3 repeats many times per round, and phases 2, 4, and 5 are run once per round. Thoughts and advise would be appreciated. Thanks, Lane -- When a place gets crowded enough to require ID's, social collapse is not far away. It is time to go elsewhere. The best thing about space travel is that it made it possible to go elsewhere. -- R.A. Heinlein, "Time Enough For Love" |
From: Sean B. <sbr...@ya...> - 2007-07-07 20:13:17
|
> Perhaps each > optional player could have a checkbox to the left of > its pulldown > menu. Or, each optional player could have an > additional "No one" or > "Not used" option in the pulldown menu. A not played option in the pull down sounds like the better choice. Could you do everything you need to do if we had a way to change the game sequence? This should be do-able if you want to add that functionality. The way to do it is just add a new type of Change subclass and a new ChangeFactory method. The new change would take a list of GameSteps, and this would be the new game sequence. Sean > > Once the game gets going, if any optional players > are not used, it > seems that they should not be included in the player > list. I would They could still be in the player list, just not used. > think also think that any steps where an unused > optional player is the > player should be skipped. > > > Another issue involves rounds. Here's how a game of > TransAmerica plays: > > 0) Players each start with a specified number of > points (around 10 or > 12, I think) > > 1) Pick a player to start. > > 2) Starting with the start player, each player draws > goal cities. > Cities drawn by one player are not available for > selection by > succeeding players. > > 3) Starting with the start player, each player plays > in turn. Play > continues until the someone has connected to all of > their goal cities. > Play may end after any player plays (in other words, > you don't have to > wait until after the last player has played for play > to end). > > 4) Players calculate their scores, and each player > subtracts their > score for the round from their point total. If > anyone has zero points, > the game ends, and the person with the most points > wins. > > 5) If the game has not ended, clear the board of > pieces. The player > succeeding the start player becomes the new start > player. Go to step > 2. > > > I'm not sure how to fit this type of round structure > into the TripleA > game engine sequence. Or, if it won't fit, how the > engine might be > (minimally) modified so as to allow this sort of > round structure. > > Interesting things to note here: > > * The order of play differs from one round to the > next. > * Phases 0 and 1 are run exactly once. Phase 3 > repeats many times per > round, and phases 2, 4, and 5 are run once per > round. > > Thoughts and advise would be appreciated. > > Thanks, > Lane > > > -- > When a place gets crowded enough to require ID's, > social collapse is not > far away. It is time to go elsewhere. The best > thing about space travel > is that it made it possible to go elsewhere. > -- R.A. Heinlein, "Time Enough For > Love" > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 > express and take > control of your XML. No limits. Just data. Click to > get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Triplea-developers mailing list > Tri...@li... > https://lists.sourceforge.net/lists/listinfo/triplea-developers > ____________________________________________________________________________________ Sick sense of humor? Visit Yahoo! TV's Comedy with an Edge to see what's on, when. http://tv.yahoo.com/collections/222 |
From: Lane S. <dow...@gm...> - 2007-07-08 22:22:09
|
Good idea. Yes, that should allow me to do what I want to do. I'll give that a try. Thanks, Lane On 7/7/07, Sean Bridges <sbr...@ya...> wrote: > Could you do everything you need to do if we had a way > to change the game sequence? > > This should be do-able if you want to add that > functionality. The way to do it is just add a new > type of Change subclass and a new ChangeFactory > method. The new change would take a list of > GameSteps, and this would be the new game sequence. > > Sean > > > > > > > Once the game gets going, if any optional players > > are not used, it > > seems that they should not be included in the player > > list. I would > > They could still be in the player list, just not used. > > > think also think that any steps where an unused > > optional player is the > > player should be skipped. > > > > > > Another issue involves rounds. Here's how a game of > > TransAmerica plays: > > > > 0) Players each start with a specified number of > > points (around 10 or > > 12, I think) > > > > 1) Pick a player to start. > > > > 2) Starting with the start player, each player draws > > goal cities. > > Cities drawn by one player are not available for > > selection by > > succeeding players. > > > > 3) Starting with the start player, each player plays > > in turn. Play > > continues until the someone has connected to all of > > their goal cities. > > Play may end after any player plays (in other words, > > you don't have to > > wait until after the last player has played for play > > to end). > > > > 4) Players calculate their scores, and each player > > subtracts their > > score for the round from their point total. If > > anyone has zero points, > > the game ends, and the person with the most points > > wins. > > > > 5) If the game has not ended, clear the board of > > pieces. The player > > succeeding the start player becomes the new start > > player. Go to step > > 2. > > > > > > I'm not sure how to fit this type of round structure > > into the TripleA > > game engine sequence. Or, if it won't fit, how the > > engine might be > > (minimally) modified so as to allow this sort of > > round structure. > > > > Interesting things to note here: > > > > * The order of play differs from one round to the > > next. > > * Phases 0 and 1 are run exactly once. Phase 3 > > repeats many times per > > round, and phases 2, 4, and 5 are run once per > > round. > > > > Thoughts and advise would be appreciated. > > > > Thanks, > > Lane > > > > > > -- > > When a place gets crowded enough to require ID's, > > social collapse is not > > far away. It is time to go elsewhere. The best > > thing about space travel > > is that it made it possible to go elsewhere. > > -- R.A. Heinlein, "Time Enough For > > Love" > > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by DB2 Express > > Download DB2 Express C - the FREE version of DB2 > > express and take > > control of your XML. No limits. Just data. Click to > > get it now. > > http://sourceforge.net/powerbar/db2/ > > _______________________________________________ > > Triplea-developers mailing list > > Tri...@li... > > > https://lists.sourceforge.net/lists/listinfo/triplea-developers > > > > > > > ____________________________________________________________________________________ > Sick sense of humor? Visit Yahoo! TV's > Comedy with an Edge to see what's on, when. > http://tv.yahoo.com/collections/222 > -- When a place gets crowded enough to require ID's, social collapse is not far away. It is time to go elsewhere. The best thing about space travel is that it made it possible to go elsewhere. -- R.A. Heinlein, "Time Enough For Love" |
From: Sean B. <sbr...@ya...> - 2007-07-12 05:06:31
|
One of the biggest mistakes I made in TripleA (and I made quite a few) was storing a lot of state in the delegates, rather than pushing everything into the game data. State stored in the delegate is not easily available for rendering on the ui, and prevents nifty things like restarting a game from any point in the history. The first step in moving data into the GameData was to make TransportTrakcer stateless. The transport state is associated with a unit (this unit is transporting these other units), so a game can use a subclass of unit. In a&a, units are TripleAUnit. A TripleAUnit currently stores information about who it is transporting, transported by, if it was loaded this round, and the units it unloaded in the round. The game specifies which unit subclass to through the method IGameLoader.getUnitFactory() Changes to a Units properties can be made using ChangeFactory.changeunitProperty(...). Changes made in this way, and added to the game by a delegate through DelegateBridge.addChange(...) will be serialized to all nodes in the network, just as any other change. TransportTracker used to store transporting info in a bunch of maps, but now all that information is stored in the units themselves. This allows a client to simply create and use a TransportTracker, rather than having to make a call to a delegate. You can see these changes in revision, http://triplea.svn.sourceforge.net/viewvc/triplea?view=rev&revision=1841 Sean ____________________________________________________________________________________ Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. http://mobile.yahoo.com/go?refer=1GNXIC |