How to use GDevelop as a team (multiple developers or teammates)
Enable multiple files mode
As a team of multiple developers, you probably want to activate the option to save the project as multiple files in a folder (in the project properties). This will save the scenes, external layouts, external events and extensions in different files.
Organize then your project to ensure that as many things as possible can be saved in these different files:
- Make sure to separate your scene events into external events for a good organization.
- Try if possible to make your events into custom extension actions/conditions or custom behaviors.
- Use external layouts for the levels (load them with a scene that serves as the main game scene).
Note
The advantage is that you can now separate the tasks and have some people work on the levels (external layouts), other on some logic in extensions or external events.
Split your game functionalities
External Events, External Layouts and Functions/Behaviors allow better organization and flexibility in your project. With multiple files enabled, they will be saved to separate files, making developers able to work on different parts of the game at the same time, with less chance of conflict.
Handling shared project files
You then have multiple solutions to work with these multiple files:
- Ideally, if you know a bit about version control like git, mercurial or subversion (a.k.a "svn"), it's strongly recommended to use it. A version control system allows you to inspect changes you made on the files (and even only select some to share), then "push" these changes in a common repository.
- Otherwise, you can have a Dropbox/OneDrive/Cloud storage service where you have a "master project" folder. You create a copy of this folder when starting to work. Then you can periodically copy files back to this master project when you're done with some work on a level.
- If using Dropbox, OneDrive, or something like Google Drive, ensure that they are not actively monitoring the project folder. The way these systems sync files constantly can cause file corruption in the project json file, and prevent bundled tools like Piskel from working correctly.
Warning
Be sure not to erase someone else work when copying files! A version control system allows avoiding such mistakes by keeping a history of all files. Whatever your solution is, be sure to do regular backups of your games.
Project-specific editor settings
When working as a team, you may want to ensure all developers use the same editor settings while working on a project. You can create a gdevelop-settings.yaml file in your project folder (next to your .json project file) to define editor preferences that will be applied when anyone opens the project.
Example gdevelop-settings.yaml:
preferences:
autosaveOnPreview: true
eventsSheetZoomLevel: 10
Examples of available settings are:
autosaveOnPreview- Automatically save before previewingshowDeprecatedInstructionWarning- Show warnings for deprecated actions/conditionsthemeName- Editor theme nameeventsSheetZoomLevel- Zoom level for the events sheet
These settings override personal preferences only while the project is open and do not permanently change each developer's preferences. This file works with version control, so your team can share consistent editor settings alongside the game files.
Custom toolbar buttons and automation
You can add custom buttons to the GDevelop toolbar that run npm scripts from your project's package.json. This is useful for teams who want quick access to linters, code generators, or other build tools without leaving the editor.
To use this feature, place a package.json in your project folder and list your scripts there. Then add a toolbarButtons section to gdevelop-settings.yaml:
toolbarButtons:
- name: Lint
icon: "🔍"
npmScript: lint
- name: Generate types
icon: "⚙️"
npmScript: generate-types
Each button requires name (label shown in the tooltip), icon (emoji), and npmScript (the script key from package.json).
Lifecycle hooks
You can also have a script run automatically when a specific editor event occurs, by adding a hook field:
| Hook value | When it runs |
|---|---|
onEditorReady |
When the project finishes loading and the editor is ready |
onPreviewStart |
After a preview window launches |
onPreviewEnd |
When all preview windows are closed |
toolbarButtons:
- name: Watch
icon: "👁️"
npmScript: watch
hook: onEditorReady
- name: Sync assets
icon: "🔄"
npmScript: sync-assets
hook: onPreviewStart
A button with a hook still appears in the toolbar and can be clicked manually as well. GDevelop will show a one-time security confirmation before running any npm script, since scripts execute on your computer.
Note
Project-specific settings and custom toolbar buttons are only supported in the desktop version of GDevelop.