Hey guys, I just ran into my old Back Door Man production notes where Grundislav and I used Subversion to share the project between us, and so I wrote some notes down about using Subversion with AGS. However, throughout the project it seemed that we had to put out a few fires with SVN, and so I'd like to start this thread as what people have done to share projects with others and what could be improved to make future versions of AGS more revision control friendly.
So on that note, with back door man, here's what we did, and what happened:
- We used AGS 3.1.2
- We didn't use the integrated SCC stuff that comes with AGS. I don't think Subversion supports it (though I think I paid plugin exists that might)
- I checked it the project in svn as /trunk/hustler (instead of the project itself being the root of the trunk). That way we could add documentation and stuff on the side as well, and when the game compiles, it was hustler.exe.
- We added a rule to request a lock acsprset.spr, backup_sprset.spr, and sprindex.dat such that when someone needed to add/change a sprite they needed to get a lock on those files, save them and commit them. That seemed to work fine to let someone know that they couldn't change sprites at the time, but still, it was 3 different files we had to be concerned about.
- We did not add the debug/built executables into the repository
- The one big problem we had is that we started working on things at the same time, and then realized that we couldn't. Eventually what we did was one of us would work on the game while the other would wait, then one person committed all the changes, and the other updated to star working on it. Otherwise we would start getting conflicts on files that couldn't be merged.
As a techie guy, I realized some of the problems that would cause headaches:
- .crm files are a weird source/compiled hybrid. This was a huge issue because if I was working on the script and Grundislav was spicing up the room, we couldn't do it at the same time. It would be nice to split between what's source and what's compiled.
- Global and Module script changes (I think it was the script headers?) would seem to require that all the room recompile.
- To lock/manage the sprites, you needed to handle three files (as mentioned above)
- I wasn't too sure about what seemed to be two project files for the project (game.agf and game.agf.bak) I'm guessing that bak is the backup, but I don't know what would happen in case it would merge.
- We couldn't both add rooms at the same time, obviously because of the numbering... it would cause a conflict.
- It would have been nice to have the characters, guis, and objects mirror a similar system to the rooms where each has their own script, perhaps their own data file as well. And of course the compiled data would be split also.
- No technical details in the help file on what each file is about, and what's generated or not generated and what's important.
Honestly, I think improving some of those things above would make things much smoother!
Has anyone else worked on an AGS game under revision control? What was your experience like? What would you like to improve?