Adventure Game Studio

AGS Support => Advanced Technical Forum => Topic started by: paolo on Sat 05/05/2007 12:39:11

Title: Version control
Post by: paolo on Sat 05/05/2007 12:39:11
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.
Title: Re: Version control
Post by: subspark on Tue 08/05/2007 05:18:50
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.
Title: Re: Version control
Post by: paolo on Tue 08/05/2007 12:02:09
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.
Title: Re: Version control
Post by: subspark on Fri 11/05/2007 00:17:11
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.
Title: Re: Version control
Post by: darkseed on Sat 26/05/2007 18:33:58
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.
Title: Re: Version control
Post by: RickJ on Sat 26/05/2007 20:49:40
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 (http://www.adventuregamestudio.co.uk/yabb/index.php?topic=23083.0)

Title: Re: Version control
Post by: darkseed on Tue 14/08/2007 17:03:35
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.
Title: Re: Version control
Post by: Pumaman on Tue 14/08/2007 18:55:21
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...)