Source Control

Wonderland Engine projects were designed to integrate well with any source control and is most frequently used with git.

Since the project files are JSON based, they can be merged by hand. Make sure to remove trailing commas on the final elements of objects and lists!

UUIDs 

To avoid conflicts for resources IDs of new objects, you can make the editor generate UUIDs instead of short and readible sequential ids:

Views > Project Settings > Editor > ids (set to uuid).

.gitignore 

The following is a best practice .gitignore file.

Note that depending on your CI/CD Setup, you might want to add cache to reduce how much time is spent compressing images on less powerful build machines.

Checking in cache has the added benefit of speeding up the first project load after cloning the project.

 1# NPM dependencies
 2**/node_modules/
 3
 4# Packaged project files
 5**/deploy/
 6
 7# Local editor data
 8**/.editor/
 9
10# Cached editor JS bundle
11**/cache/js/
12
13# Local UI state
14**/imgui.ini
15
16# Blender backup files
17*.blend1

Git LFS 

The Git Large File Storage extension can speed up Git operations on your repository, especially since WebXR usually contain large files for 3D assets, textures and audio.

Here are some recommendations to track with git lfs track <extensions>:

 1# Audio files
 2*.mp3 *.wav *.ogg *.webm
 3# Video files
 4*.mp4
 5# Binary 3D model files
 6*.glb *.fbx *.bin *.blend *.ply
 7# Image files
 8*.png *.jpeg *.webp *.bmp *.exr *.hdr *.basis
 9# Font files
10*.ttf *.otf
11# Archives
12*.zip *.tar.gz

package-lock.json 

package-lock.json stores the exact versions of dependencies currently installed with your system. When using npm install that file will be updated to the latest dependency that matches the constraints given in the package.json.

You can use npm ci to install the exact dependency versions from your package-lock.json. To have replicable builds, you will want to commit this file.