How to collaborate on Construct projects with GitHub

55

Index

Stats

22,628 visits, 64,458 views

Tools

Translations

This tutorial hasn't been translated.

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 1 Apr, 2020. Last updated 12 Sep, 2024

Some useful tools

For full documentation on all the tools provided by the GitHub website and GitHub Desktop, see GitHub's help. Some useful tools you may want to explore include:

  • Reverting changes: you can change your mind about something you committed, and revert it to undo it. (Note this will create another commit that reverts an earlier commit.)
  • Rolling back to earlier versions: you can roll back your working copy to an older version of your project at any point from the past. For example if you can go back to how your project looked 3 months ago and compare how it looks and works. It's also useful in case anything is accidentally broken, since you can roll back to the last known good version.
  • Viewing history: you can see a log of changes to each individual file, with the time they were changed, the commit messages and descriptions for every change, who was changing the file, and so on.
  • Blame: the name is a bit unfortunate since hopefully you won't want to use this for accusing people, but Blame breaks down the contents of a file and shows when each part of that file was last changed and by whom. Basically it's just another useful way to look at the history, since you can see when each part of a file was last changed.
  • Create branches: a branch is like a variant of your project. For example you could make a branch, and change the menu system. If you don't like it, you can throw away the branch and keep using the old one. If you do like it, you can merge the branch over to the main one (the master branch). This is good for long-term experimental changes, since your in-progress work won't mess up the main branch that everyone else is working on.
  • Use other GitHub features like issues, project boards, the wiki and more to help your team work together effectively.

Some Construct-specific advice

Construct assigns UIDs (unique IDs) to objects in the editor. These are saved in the layout files for each instance. By default Construct assigns newly placed instances the lowest unused UID (aka Increment mode as it tends to assign numbers like 1, 2, 3, 4...). This means if two clients who both place a new instance then merge their projects, it's possible the layout file uses the same UID for two objects. Construct tries to handle this gracefully by reassigning duplicated UIDs, but it can still cause issues when using hierarchies or if you refer to specific UIDs in your event sheets. Instead when collaborating on projects it's strongly recommended to change the UID numbering project property to Random. This changes newly assigned UIDs to random numbers with at least six digits, e.g. 582953, 295630, 810344 etc. This means there is a negligible chance that two people create new instances with the same UID.

Also, avoid making manual edits to JSON files in your project. You can edit things like image and sound files outside of Construct and it should use the changes when you next open the project. However if you do something like rename an object by editing the object's JSON file directly, you will most likely corrupt the project. This is because renaming an object actually involves updating a wide range of other references across the project. Construct takes care of this for you when you rename an object from the editor, but if you do this outside of the editor it will create inconsistent references and break the project. When resolving conflicts you may be forced to edit JSON files, and in other cases you might not break anything (like changing the list of instances on a layer). But in general wherever possible you should make changes using the Construct editor to avoid breaking things.

Also note that when Construct updates, make sure everyone on your team updates at the same time. Construct project files are not backwards compatible - i.e. you can't open a project saved in r200 in r100. Similarly, while using source control, you cannot merge changes made in r200 back in to a project saved in r100 and keep using it in r100. Since the file format is not backwards compatible, you may corrupt the project. If everyone on the team updates at the same time, you'll avoid this problem.

Conclusion

Source control software tools like GitHub are mature and advanced tools for effectively collaborating on a project. They are widespread in traditional software development, but source control tools are general-purpose enough that teams using Construct can take advantage of them as well. Since these tools are so well-established and thorough, there should be little need for any specific collaboration features in Construct.

Source control is widely regarded as mandatory for any kind of professional development. Merging by hand is so slow, difficult and error-prone that it is well worth your time to learn source-control tools, even if it seems difficult at first. It's even handy for individual developers for all the additional tools it provides. If you're working in a team, get everyone on source control, and I'm sure before long you'll wonder how you got by without it!

  • 19 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • I've been waiting for this. Thank you finally!!

  • As a solo dev hesitant to jump into source control, your tutorial was a game-changer! Now I'm excited to finally integrate it into my workflow and open the door to future collaboration. Thanks for making it so approachable!

  • Very useful and succinct tutorial on using source control via GitHub. thank you.

  • Very cool, when using this though, if I modify the position of an object or add new object etc, changes appear in my GIT commit list. However if I change a tilemap, adding or removing tiles, those changes do not appear in the commit list.

      • [-] [+]
      • 2
      • Ashley's avatar
      • Ashley
      • Construct Team Founder
      • 2 points
      • (3 children)

      All changes should appear in your commit list. If changes do not appear, then you have not saved the project, and the changes won't be there when you next open the project either.

      • I've tested a few times, certainly saving the project - if I move an object and save, it appears. If I modify a tilemap and save then nothing appears in the commit list.

        What's interesting is if I edit the tile map and then do something like move an objects position, when I commit the changes the tile map edits are saved. So that data is being captured, its just if I edit the tilemap and do nothing else, git thinks I've made no edits to the project and nothing appears in the commit list.

          • [-] [+]
          • 0
          • Ashley's avatar
          • Ashley
          • Construct Team Founder
          • 0 points
          • *
          • (0 children)

          Tilemap data is saved in the corresponding layout JSON file, so check for changes there. Maybe GitHub Desktop isn't checking there or something, or perhaps you forgot to add the files in the first place.

      • Recorded a quick video showing the issue: youtu.be/QRjykEozW-U

  • Scirra has since enforced updates upon any user.

    This breaks version control more often than not, and leads to losing time and resources.

    I tried reasoning with them on a thread to no use, even though any other user agreed a toggle in options or at the very least an advanced Chrome parameter was necessary.

    There is a workaround I discovered recently:

    1. Go to the editor version url (editor.construct.com/rXXX)

    2. Three dots Chrome menu -> More tools -> Create Shortcut (open as new window)

    3. Pin this window to your taskbar.

    This way, you can actually control when you want your team to upgrade.

    In case anyone at Scirra cares, the same issues I talked about in the thread you dismissed are still ongoing and affect Github workflows.

      • [-] [+]
      • 2
      • Ashley's avatar
      • Ashley
      • Construct Team Founder
      • 2 points
      • *
      • (3 children)

      You can choose which version of Construct you use on our releases page.

      Everyone on the team needs to be on the same version of Construct, because save files are not backwards compatible. So make sure if you upgrade, everyone does it at the same time. Even if something goes wrong, source control lets you roll back to a working version at any time.

      FWIW I'm using GitHub with my own game project and so far it's working out great.

      • For anyone reading this reply, my workaround fixes the known "Stuck in old version" bug which annoys a lot of people around the discord at the very least (PWA c3 gets stuck to the version you install it as, and inconsistently prompts you with an update on launch which leads to members sometimes doing commits in an older version) and also lets you actually stick to a version in case some custom functionality breaks without your consent.

        Additionally those using custom engine launchers or edits were in a disadvantage as it was impossible to choose when to upgrade your team to a new version. I still lost time because of the devs not implementing a basic software QOL option before finding this workaround. The original post has everything noted.

        Your work is awesome, Ashley, but you are ignoring a lot of paying customers by not even adding an advanced option like a Chrome parameter for disabling the enforced updates which have consistently broken workflows.

          • [-] [+]
          • 2
          • Ashley's avatar
          • Ashley
          • Construct Team Founder
          • 2 points
          • *
          • (1 child)

          Updates are not mandatory - you can choose whichever release you want to use on the releases page. If you work in a team, your whole team need to upgrade at the same time. That's a part of project management that your team will need to handle - software can't handle that for you.

          If you install the stable version, then the installed version will always update to the latest stable release, and if you install a beta version, then the installed version will always update to the latest beta release. That should always work consistently, and if it doesn't, please file an issue.

          • If anyone wants to work consistently and freely using Github, currently the PWA is not the way to go. Shortcutting an editor version works exactly as it was before you enforced updates, and has never given me any issues since. I just click c3 on my taskbar, and the correct version is displayed for everyone.

            If anyone wants extra steps and the risk of losing progress, that's cool. Tried reasoning on the forums a long time ago, to everyone's frustration on the dev's responses. I still respect his stance, and his work is absolutely incredible (has been my main professional engine for too long to remember).

  • Load more comments (6 replies)