Version control

Started by paolo, Sat 05/05/2007 12:39:11

Previous topic - Next topic

paolo

I hope this is not too off topic.

Does anyone have any advice on version control when two or more people in different geographic locations are working on a game at the same time?

In the game I am helping someone with at the moment, he makes his changes to his copy and sends the file to me, and then I make mine and send it back. This is fine, but it would make things quicker if we could develop the game in parallel.

To do this, I'm suggesting that at any one time, one of us (say A) has the master version and the other (B) makes changes to his copy of the master, but keeps a record of what he does. When B receives the master version, he makes the changes to it that he recorded, and then continues to work on it. Meanwhile, A continues to work on the version of the file that he sent and keeps a note of what he changes, until B sends the master version back to him. The file ping-pongs back and forth in this way.

This works fine provided there is no overlap in the changes. This is unlikely if one person works on the art and the other on the scripting (as is the case in the game I am working on).

Does anyone else who has worked on a game this way have any tips on managing version control?

Thanks for any feedback.

subspark

Sure. We use TortoiseSVN for our version control.

A much heavier tool is PerForce.

I suggest you google the above and read into it.

Cheers mate,
PW.

paolo

Thanks. I use Tortoise at work actually so I don't know why it didn't occur to me.

As it happens I'm being charged with keeping all the files and updating them, so the need doesn't arise at the moment, but using something like Tortoise in future would be a good idea.

subspark

Yeah as CJ has recently brought to our attention, Perforce crashes AGS 2.8.

So you might want to hold off on that one until Chris has a workaround or a fix.
Sorry. I didn't know that at the time.

Cheers,
Paul.

darkseed

#4
Hmm, I need a better explanation of how to use AGS inside a version control tool. The room scripts stay in the .CRM file, right? That means only one person can handle a room art/code per time? If that's possible, two scripters can handle a room different/same scripts at the same time? If I use the TortoiseSVN merge, will the CRM still works? I guess that probably it won't, considering the CRM is compressed (and I don't know the format effectively stores the art/scripts).

If my theory that only one person can handle a CRM file per time is correct, the only way I could parallelize the game development would be to organize the team so that only one member has a CRM or script module per time?

Thanks in advance.

RickJ

#5
Quote
If my theory that only one person can handle a CRM file per time is correct, the only way I could parallelize the game development would be to organize the team so that only one member has a CRM or script module per time?
This is essentially correct and, I believe, would pretty much be the case regardless if any (or what) version control was used.   Since only a portion of the CRM file is in a human readable format (i.e. text) I can't imagine how one would go about merging non-textual changes submitted from multiple developers?

At this point I would advise you to institute some kind of manual version control system,  Come up with a file naming convention that incorporates a version number, document it in a text file and insist that everyone use it.  Come up with a release procedure where developers submit new versions of files they have been assigned to work on.    Have a maintainer (with a big hard drive  ;)) keep a copy of every version of every submission.

The only wrinkle in this kind of scheme is that sprites, animation loops,  etc are stored in the main game file.  I once suggested that room objects and characters should own their animation loops, associated sprites, and possibly their interactions, making it possible to store the asprites and views of objects in the room in which they are used.  The idea never generated enough interest to go anywhere.  In AGS 2.8 there seems to be some effort to distribute some more of the game content into individual files but I am not sure how far this will go towards facilitating  multi-developer projects.

Btw, you may find some of the DemoQuest documents to be of interest and/or helpful to your project.   

http://www.adventuregamestudio.co.uk/yabb/index.php?topic=23083.0


darkseed

Thanks a lot for the info, RickJ. I've checked the docs some months ago, but I want to review the programming conventions docs and the links are broken... Could you fix them or send me a copy?

Thanks in advance.

Pumaman

In AGS 2.8, all the room scripts are in separate files so they can easily version-controlled. You can't really merge the CRM files themselves or the sprites, but as of 2.8 the scripts can be, and additionally the main game.agf file is XML and could be merged in source control (but I'd be very careful if you attempt to do so...)

SMF spam blocked by CleanTalk