From: Dagon <da...@da...> - 2007-03-31 02:05:56
|
Hi all. I've been roped into playing (ok, it didn't take much roping) PBEM triplea games with a bunch of friends with whom I played the boardgame years ago (I just checked my rulebook: 2nd edition, printed 1986). Anyway, this is a very nice implementation, and thank you for writing it! There are a few things I'd like to fix up in my spare time, and I'm wondering about the normal dev process. I'll likely be focussing on smallish UI issues unless I get fired or find more time than I expect :) The changes I've made so far have been trivial, and mostly so I can debug and see what's going on in the code while I play the game. These are hacks, but I'm happy to clean them up and submit them if they're worth anything. * added serialVersionUID to classes serialized in save games, so I can load games saved on 0.9.0.2 into my locally-compiled version. * added code to look for a RootDir system property so I can load resources and such from a different location than my compiled classes are. * show unit names and nationality next to icons on Territory tab, as the colors and unit icons (especially for destroyer and battleship) aren't immediately clear to my eye. Mostly this is just an introduction e-mail, and a chance to ask about coding standards, how to submit patches, etc... -- Mark Rafn da...@da... <http://www.dagon.net/> |
From: Sean B. <sbr...@ya...> - 2007-03-31 17:29:34
|
Hello, Thanks for your interest in TripleA. > * added serialVersionUID to classes serialized in > save games, so I can > load games saved on 0.9.0.2 into my > locally-compiled version. This is a good idea. eclipse and javac create different seriaveruids. We don't maintain backwards compatability between different versions, mostly because it is too much work to track and test. > * added code to look for a RootDir system > property so I can load > resources and such from a different location > than my compiled classes > are. Is this needed? Would this only change the behaviour of GameRunner.getRootFolder()? > * show unit names and nationality next to icons > on Territory tab, as the > colors and unit icons (especially for destroyer > and battleship) aren't > immediately clear to my eye. > Sounds good. The small flag icon might fit better. > Mostly this is just an introduction e-mail, and a > chance to ask about > coding standards, how to submit patches, etc... I put a coding standards page on the wiki, http://triplea.sourceforge.net/mywiki/CodingStandards?action=show for submitting patches, make sure to get the latest from svn, and then email the svn patch to me. Sean ____________________________________________________________________________________ Expecting? Get great news right away with email Auto-Check. Try the Yahoo! Mail Beta. http://advision.webevents.yahoo.com/mailbeta/newmail_tools.html |
From: Mark R. <da...@da...> - 2007-04-01 07:32:55
|
> for submitting patches, make sure to get the latest > from svn, and then email the svn patch to me. Ok. I'll move my changes and make sure they work in the SVN trunk tomorrow so I can send patches. Do you want anything other than the output of 'svn diff' as patch format? >> * added serialVersionUID to classes serialized in save games, so I can >> load games saved on 0.9.0.2 into my locally-compiled version. > This is a good idea. eclipse and javac create different seriaveruids. Every version of javac does too, it's very annoying. I've only added it for the classes that failed on my saved games. I could go through and add an arbitrary one for other Serializables, but I won't be able to find the correct 0.9.0.2 value from the official compiler without a sample. > We don't maintain backwards compatability between different versions, > mostly because it is too much work to track and test. I wouldn't change this policy, just make it so that some saved games do in fact work when we're lucky :) >> * added code to look for a RootDir system property so I can load >> resources and such from a different location than my compiled classes >> are. > Is this needed? Would this only change the behaviour > of GameRunner.getRootFolder()? I don't know if it's needed, or only useful to my particular Eclipse setup. The game was failing to find resources because it was looking in the eclipse compile dir rather than the project dir. I added pretty simple code in GameRunner.getRootFolder() - if the property is set, and the File exists, that's returned before going through the process of finding the class file and checking for a jar. Also I needed to make GameParser find the full path to game.dtd rather than just the directory /games/strategy/engine/xml (because there were two: one in the build dir and one in the data dir, and the classloader found the wrong one). >> * show unit names and nationality next to icons on Territory tab, as >> the colors and unit icons (especially for destroyer and battleship) >> aren't immediately clear to my eye. > Sounds good. The small flag icon might fit better. Definitely better. -- Mark Rafn da...@da... <http://www.dagon.net/> |
From: Sean B. <sbr...@ya...> - 2007-04-01 14:39:51
|
> Ok. I'll move my changes and make sure they work in > the SVN trunk > tomorrow so I can send patches. Do you want > anything other than the > output of 'svn diff' as patch format? Just that should be fine. I don't have a lot of experience making diff files, but there should be a way to make sure that the patch is relative to the triplea root folder, and doesn't have absolute paths. > I added pretty simple code in > GameRunner.getRootFolder() - if the property > is set, and the File exists, that's returned before > going through the > process of finding the class file and checking for a > jar. > > Also I needed to make GameParser find the full path > to game.dtd rather > than just the directory /games/strategy/engine/xml > (because there were > two: one in the build dir and one in the data dir, > and the classloader > found the wrong one). > For my eclipse setup, I set src and data as source folders and everything works fine. Sean ____________________________________________________________________________________ TV dinner still cooling? Check out "Tonight's Picks" on Yahoo! TV. http://tv.yahoo.com/ |
From: Mark R. <da...@da...> - 2007-04-04 04:46:31
Attachments:
svn-serialVersion-20060403.patch
|
This makes at least some saved games work on a current development compile of triplea. I only have the values from games I've managed to save on 0.9.0.2 and restore on my local dev version, I'll add more as I find them. Feel free to send me savegames that don't restore, or classname and correct serialVersionUID from the exception. If the (mild) contortions in GameSequence to keep a private transient lock object bug you, it's easy to either drop it entirely and synchronize on 'this', or make the Serializable have a serialVersionUID. I prefer not to serialize objects you don't need, but will do whatever you prefer. I reverted my changes to set an explicit root folder - it seems unneeded if I put the data dir before the src dir. Also, I put some comments on the CodingStandards page of the wiki about setting up Eclipse. I don't have permission to edit Developers, or I'd have changed the instructions to mention that patches should be based on subversion tree, not on the downloaded source tarball. -- Mark Rafn da...@da... <http://www.dagon.net/> |
From: Sean B. <sbr...@ya...> - 2007-04-05 01:51:41
|
Looks good. Checked in with revision, http://triplea.svn.sourceforge.net/viewvc/triplea?view=rev&revision=1739 Sean --- Mark Rafn <da...@da...> wrote: > This makes at least some saved games work on a > current development compile > of triplea. > > I only have the values from games I've managed to > save on 0.9.0.2 and > restore on my local dev version, I'll add more as I > find them. Feel free > to send me savegames that don't restore, or > classname and correct > serialVersionUID from the exception. > > If the (mild) contortions in GameSequence to keep a > private transient lock > object bug you, it's easy to either drop it entirely > and synchronize on > 'this', or make the Serializable have a > serialVersionUID. I prefer not to > serialize objects you don't need, but will do > whatever you prefer. > > > > I reverted my changes to set an explicit root folder > - it seems unneeded > if I put the data dir before the src dir. > > Also, I put some comments on the CodingStandards > page of the wiki about > setting up Eclipse. I don't have permission to edit > Developers, or I'd > have changed the instructions to mention that > patches should be based on > subversion tree, not on the downloaded source > tarball. > -- > Mark Rafn da...@da... > <http://www.dagon.net/> > > Index: > triplea/src/games/strategy/triplea/TripleA.java > =================================================================== > --- triplea/src/games/strategy/triplea/TripleA.java > (revision 1733) > +++ triplea/src/games/strategy/triplea/TripleA.java > (working copy) > @@ -44,6 +44,9 @@ > */ > public class TripleA implements IGameLoader > { > + // compatible with 0.9.0.2 saved games > + private static final long serialVersionUID = > -8374315848374732436L; > + > private static final String HUMAN_PLAYER_TYPE = > "Human"; > private static final String > RANDOM_COMPUTER_PLAYER_TYPE = "Random AI"; > private static final String > WEAK_COMPUTER_PLAYER_TYPE = "Easy AI"; > Index: > triplea/src/games/strategy/triplea/delegate/SubmergedTracker.java > =================================================================== > --- > triplea/src/games/strategy/triplea/delegate/SubmergedTracker.java > (revision 1733) > +++ > triplea/src/games/strategy/triplea/delegate/SubmergedTracker.java > (working copy) > @@ -28,6 +28,9 @@ > */ > public class SubmergedTracker implements > Serializable > { > + // compatible with 0.9.0.2 saved games > + private static final long serialVersionUID = > -8935014766946132204L; > + > private Set<Unit> m_submerged = new > HashSet<Unit>(); > > public boolean isSubmerged(Unit unit) > Index: > triplea/src/games/strategy/triplea/delegate/MustFightBattle.java > =================================================================== > --- > triplea/src/games/strategy/triplea/delegate/MustFightBattle.java > (revision 1733) > +++ > triplea/src/games/strategy/triplea/delegate/MustFightBattle.java > (working copy) > @@ -64,6 +64,9 @@ > */ > public class MustFightBattle implements Battle, > BattleStepStrings > { > + // compatible with 0.9.0.2 saved games > + private static final long serialVersionUID = > 5879502298361231540L; > + > public static final int DEFAULT_RETREAT_TYPE = > 0; > public static final int SUBS_RETREAT_TYPE = 1; > public static final int PLANES_RETREAT_TYPE = > 2; > @@ -740,6 +743,8 @@ > Matches.UnitIsSub); > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 99991L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -749,6 +754,8 @@ > }); > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 99992L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -760,6 +767,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 99993L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -770,6 +779,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = -4316269766293144179L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -789,6 +800,8 @@ > }); > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 1560702114917865290L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -806,6 +819,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 8611067962952500496L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -818,6 +833,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 5259103822937067667L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -839,6 +856,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 6775880082912594489L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -850,6 +869,8 @@ > > > steps.add(new IExecutable(){ > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = -1544916305666912480L; > > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > @@ -859,7 +880,8 @@ > }); > > steps.add(new IExecutable(){ > - > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = -1150863964807721395L; > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > if (canAttackerRetreatPlanes() && > !m_over) > @@ -869,7 +891,9 @@ > }); > > steps.add(new IExecutable(){ > - > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 669349383898975048L; > + > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > { > attackerRetreat(bridge); > @@ -880,14 +904,19 @@ > > final IExecutable loop = new IExecutable() > { > + // compatible with 0.9.0.2 saved games > + private static final long > serialVersionUID = 3118458517320468680L; > + > public void execute(ExecutionStack > stack, IDelegateBridge bridge, GameData data) > === message truncated ===> ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get > the chance to share your > opinions on IT & business topics through brief > surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> _______________________________________________ > Triplea-developers mailing list > Tri...@li... > https://lists.sourceforge.net/lists/listinfo/triplea-developers > ____________________________________________________________________________________ Never miss an email again! Yahoo! Toolbar alerts you the instant new Mail arrives. http://tools.search.yahoo.com/toolbar/features/mail/ |