Request: Make GD project modular and add Git integration.

To my surprise on GitHub in the issue tracker I got the message to make any feature request here on the forum first and post it on GitHub only if we have discussed the request here . I don’t even know when was the last time I’ve seen a proper “discussion” here but I comply with the rules. Here we go:

The idea occurred to me recently to start an open-source project and share it on GitHub just for fun because it really boring to work alone and would like to work with others on something and GD5 was naturally come up as one of the possible engines to use because it fun, simple and free.
But then I realized, it would be a pain to maintain the project, document it and for others to collaborate.

So I would like to suggest to make GD projects modular. It was a feature in GD4 but I don’t see it coming in GD5 but even if it would, I think the project should be divided in to even more modules.
This is what I recommend, when we export a project:

scenes
scene-event
scene-objects lists
object properties like images, animations, points
resource list like images, sounds
external events
external layouts

be separated files and have a main project file that we would open in GD and it would read all the modules and load the project. Then, if we want to we can import any of the above modules in to our project separately.

So we can import any changes individually:
In case an artist added some new images, sounds to the project we can just copy the resources in to the folder and update the resources module.
In case an artist added a new object to the object list in a scene we can import the new object in to the list without making any changes to the actual scene.
In case a level designer designed some new levels or layouts, or changed an existing one.
In case a dev added new events to a scene or external event.
In case we want to re-use any part of the project and move it to an other project, we can just grab the modules and take it. Images, Scenes, Objects, Events, Layouts…

Obviously if someone made huge number of changes, added new images, created new scene and added new objects to the scene using the new images than added some new events too, it would be up to us to make sure we do import all the changes in order to make it work. I would expect the contributor including all the changes and only the changes that I can just import in to the project one by one to make sure I don’t override anything that I did no meant to be.

Of course we could also simply copy and pate most of this things from project to project once we can open multiple projects in GD5 but the point would be to be able to merge changes coming from multiple sources. Currently if multiple people working on the same project, at the end we have multiple different projects. By storing each feature in separated modules we could import only what changed from multiple sources.

Along with this changes, would be nice to also see Git integration in GD to login to GitHub and commit and push changes directly from GD with a click of a button to GitHub. It would detect any changes in the project folder, new and changed files and we could commit and push any changes to GitHub, also able to sync with the master branch to make sure the project we are working on is up to date.

It would be useful not only for collaboration but it would also simplify greatly the version control of our project and to easily add, update and remove features in our games.

EDIT:// alternatively, to speed thing up instead of having separated import options for each module, when we import changes, we could have only a single option to “import project” then we could simply tick boxes what parts of the project we want to import and merge with our project or simply copy and override the relevant project files too.

I support this proposal.
I’m using git for my Sakawochi project but since everything is glued together in one project file I haven’t dared to work on multiple feature branches simultaneously.
Git integration in general is also I good idea. But personally I wouldn’t couple it with GitHub. A more general approach with a local repository for the project and a configurable remote repository would be better in my opinion since the syntax for pushing and pulling is the same for GitHub, BitBucket and other code hosting services.

EN :
I really like the idea of the modules.
In an older version of Gdevelop we had a way to import bits of events, via an event list to share with the communitie.

Having import/export events is great for sharing and exchanging! I love the idea of collaboration that it allows.


FR :
J’aime beaucoup l’idée des modules.
Dans une version plus ancienne de Gdevelop, nous avions un moyen d’importer des bribes d’événements, via une liste d’événements à partager avec la communauté.

Avoir des événements d’import/export est idéal pour partager et échanger ! J’aime l’idée de collaboration qu’il permet.