Merging project files into a single game

Started by dann0330, Wed 18/10/2017 23:29:05

Previous topic - Next topic

dann0330

I feel like this question must have been answered somewhere, but I can't seem to find the right keywords to find an answer.

I will be working on a team project with, ideally, more than one person integrating (scripting, building characters and rooms, etc.)
The scripting part could probably be tackled through the use of modules, but, as standard AGS users/not-that-advanced coder, we'd rather just use the room scripts, etc.

Is there some sort of tool to merge two AGS projects together? (which would allow us to work on the same game through different files and then make it into a single project at the end?)
If not, any other workflow suggestion are welcomed.

Khris

Sorry to disappoint, but AGS is not really built for collaboration like that.

The only way I can see to have multiple people script on a game simultaneously is to divide it into independent chapters. It's possible to start a second game.exe from within AGS, as long as the resolution and the like are the same. The engine will simply load the 2nd .exe's data part and continue seamlessly.
(See Game.RunAGSGame())

Afaik, all collaboration efforts so far were handled by a single scripter at a time.

Modules don't really help, unless the 2nd scripter created a general purpose module.

People can do a lot of work without actually having the editor open though; using a paint program with layers, people can not only create room backgrounds and object sprites but already draw walkable areas, regions, hotspots, walkbehinds. Basic interactions for room scripts can be written in a text editor and later pasted into the game.

Crimson Wizard

#2
The situation is not that dire, in my opinion. Indeed, AGS does not provide built-in means to merge work, but it is still pretty much possible to collaborate with the use of version control systems such as SVN and Git. Even if without them, you can manually merge different variants of scripts using any merge tool like WinMerge or KDiff (latter approach, while seemingly simplier, would require more human's attention).

Addition of an entity in the game project tree, like new character, font, sound, and even new room, is also possible to merge (with care), because game project tree itself is stored in an XML called Game.agf. In case of emergency (like matching entity IDs) things may be fixed by hand.

There are however several parts of the game project that cannot be merged (only overwritten), because are still saved in binary form (for "historical reasons"):
* Rooms (but NOT room scripts, which are separate files). If you modify anything in room editor, like adding an object or changing any of its properties, you'd need to warn others not to change same room(s) until you sync your project versions.
* Sprites. They are saved into one big sprite archive, which is impossible to merge by common means. So if you add new sprite, or delete or change existing sprite, you need to again take precautions to let other collaborators know what you are doing.
* Modifying any existing binary item, such as sound clip, is something one person should do at a time, but I guess that's obvious.

Regarding the special cases mentioned above, I may suggest making sure there is one particular person designated to import sprites into game, and only one person designated to work on particular room at any given time.

With scripts, if you get into a situation where two people tried to script same thing in two different ways, you, of course, will have to choose one of the variants and discard another, but this is the same issue as with any programming project, and is prevented by planning and assigning tasks to collaborators.


To sum up, there are certain pitfalls here, but I think it is possible to work together on same game if you divide tasks well.

Dave Gilbert

My wife and I work together on games all the time. You just have to coordinate and be careful.

The .acs scripts merge pretty painlessly when using stuff like GIT or SVN. Any changes in the editor (like adding sprites, creating a dialog option, or adding a GUI - anything that effects the sprite file, the .ags file, or the room .crm files) will NOT merge. So when you work with your team, make sure it's clear that only ONE person can use the editor at a time, while everyone else just works on scripting.

SMF spam blocked by CleanTalk