Construct 3 suggestions & ideas

Suggest and vote on ideas for Construct 3! Please note this is only one aspect of planning. We do not guarantee any features here will be implemented, even if they are top-voted ideas. The aim is just to collect feedback. Remember to search for existing submissions before adding an idea, describe your ideas as comprehensively as possible, and vote for plausible ideas that are well thought out. Please see our full guidelines on suggesting features.

54 VOTE

Real time Cloud based teamwork

This topic is for real time cooperation. Like google docs.
More details on real time cooperation here: https://construct3.ideas.aha.io/ideas/C3-I-85

Due to misunderstandings I've had to move the old suggestion to a new topic where it is clear that a cloud based SVN is wanted:
https://construct3.ideas.aha.io/ideas/C3-I-107

  • skymen
  • Apr 5 2017
  • Not currently planned
  • Apr 6, 2017

    Admin Response

    We are skeptical of the practicality and feasability of real-time collaboration. Google Docs is not really a good comparison, since it's easy to make completely isolated changes. For example if Alice edits page 1 of a document and Bob edits page 2, there's no problem. Alternatively Alice can edit one range of cells in a spreadsheet without affecting Bob who edits a different range, etc.

    Construct is different in that the internal data structures are more complex. There are many cross-references where things depend on other elements of the project. For example a single event can depend on two object types, global variable, a family, a behavior in that family, and an instance variable in that family. A typical Construct project has a huge amount of such cross-references. This makes it far more difficult to edit something without conflicting with someone else's work.

    Here is one example to illustrate the kinds of problem that come up:

    1. Alice adds a Sprite.
    2. Bob adds an event using that Sprite.
    3. Alice presses undo.

    This happens even though both Alice and Bob are working in different parts of the editor. It is difficult to see a good solution to this:
    - The undo could remove Bob's event only, i.e. there is one shared undo stack. This is probably confusing as pressing undo rolls back other people's work.
    - The undo could remove Alice's sprite, which in turn will cause Bob's event to be removed. This is probably also confusing, as again Bob's work suddenly disappears.
    - Undo could be disabled. But then we've disabled an essential feature of the editor, which makes it harder to use.
    - It could prompt asking what to do. But this would likely appear frequently, making it a pain to get anything done.

    This is a simple case too - there are many more significantly more difficult cases. For example what happens if someone renames an object while someone else is editing an expression using it? What if two people submit two conflicting edits exactly simultaneously? It is a daunting prospect to handle hundreds of awkward edge cases like this, while avoiding any chance of corrupting the project, and ensuring the software is still practical to use. This could easily take many months of dedicated development work at the expense of everything else, and have significant on-going mainentance costs too. It also seems risky since the cross-references are so comprehensive it's hard to see real-time collaboration as either constantly trampling other people's changes, or locking so many things that you can't get anything done, raising the chance that we do a huge amount of work for something few people end up using in practice.

    Meanwhile existing source control tools like SVN and Git already enable collaboration with folder-based projects. This way is already supported, and works well with a clear way for teams to work on a project simultaneously. They also already provide tools to deal with problems like conflicts. And the fact it is not real-time makes it far simpler - for example there is no chance two people can submit changes exactly simultaneously. We think this is the best solution to focus on, and if there are any difficulties with using this, we'd rather put effort in to ensuring this process works smoothly with Construct.

    Given the robustness and quality of existing source control tools; the vast, complex and ongoing development work it would take to make real-time collaboration a reality; and the doubts that it would even be practical to use once it's finally done, we feel it would not be the right thing to work on at this time. We don't want to say "never". It's possible that a much more limited version, such as only editing separate layouts, could be feasible. However it's not something we plan on working on. We encourage anyone interested in team collaboration to look in to source controls and submit suggestions to improve that process if there are any difficulties.

  • Attach files
  • Ricardo Machado commented
    April 5, 2017 14:39

    Please! This! This would help a lot the current project of our team!

  • Tacker Tacker commented
    April 5, 2017 14:53

    It should function similar to other browser based applications in my opinion,

    something like google docs/sheets/slides.

  • skymen commented
    April 5, 2017 15:00

    Yeah, I was mainly thinking about google docs, but being able to see changes in real time would need to rebuild core stuff from the ground up and is not necessary tbh. Just a feedback that tells you basic stuff, like who is connected, who is working, and what layout/event sheet they're working on is highly enough IMO

  • Ricardo Machado commented
    April 5, 2017 15:28

    I agree. It could have some kind of internal chat. If the team communicate there would be no problem.

  • Aekiro commented
    April 5, 2017 15:35

    This is a neat feature but I think it will end up just like the multiplayer feature, requested by popular demand but used by a minority.

  • skymen commented
    April 5, 2017 15:44

    I don't think so. This would mainly boost the amount of teams and companies/studios that work using Construct. 

  • skymen commented
    April 5, 2017 15:45

    And it also boosts Construct's capability at handling team based Jams.

  • Ben Grimm commented
    April 5, 2017 17:32

    Google Docs style collaboration features yes.

    but please no chat/communication, there are specialized tools for that which will do better anyway (slack). That said - combine this feature with slack integration notifying a channel when someone of the team made/and saved changes.

  • Carlos Campaña commented
    April 5, 2017 17:50

    From my experience, to be able to work with a tool like Construct within a team, having some kind of VCS and an internal chat tool is enough. You can check who is doing what with these tools.

    Don't get me wrong, sounds cool, but I would prefer that Scirra focuses on new features for the games (edit time or runtime).

  • oosyrag commented
    April 5, 2017 17:51

    Besides actual collaboration, I think this would be a huge boon for assisting other users with their projects in terms of the "How Do I" forums. It would probably get significant use from just that alone.

    Although realtime svn/cvs/collaboration is very difficult to get right, especially in a file with so many interconnected dependencies. Basically, the order in which changes are committed matters a LOT in Construct. Keeping it simple would be best - allow only the one master version to be edited or saved at any given time, while others can check out read only copies. Committing would be manually done on the master version.

    +1 for collaboration tools like chats and comments.

  • Ricardo Machado commented
    April 5, 2017 18:20

    Man, Unity uses Collaborate, it's very good, my team mates use it a lot. I don't need a real time collaboration, just a simplification of commit/merge. I know we can do it with a SVN tool, but i think this collaborate system is more aligned with C3's vision.

  • Salman_Shh commented
    April 5, 2017 19:00

    Deserves to be TOP! without it noone will be able to work in a team proficiently without doing some hacky-style to get source control even in folder structure available in C2

  • Elliott Bear commented
    April 5, 2017 21:48

    This is a good idea but I believe the time/benefit ratio would be better suited on smaller scale features for the first 6 months or so. 

  • rexrainbow commented
    April 6, 2017 04:11

    Too crazy! "Real time cooperation" is so difficult.

  • skymen commented
    April 6, 2017 08:38

    No! Real time cooperation would be way too hard. I'm talking about a merge system via the cloud and, if it's possible, having a feedback in editor to who is doing what, so you don't conflict with him when merging.

  • Ricard Jensen commented
    April 6, 2017 12:01

    Maybe some Merge functionality would be better.

  • skymen commented
    April 6, 2017 12:28

    Well, this is what I asked for in the first place

  • Admin
    Ashley Gullen commented
    April 6, 2017 14:51

    @skymen - I realise the realtime aspect wasn't really what you meant in the original proposal, but judging by the comments I think most people voted for it on the basis of that. There is still a real-time aspect of even just saying where people are working, but I still don't think that's useful for the reasons I mentioned in the response - e.g. the fact Alice is in the Layout View doesn't mean that she won't affect events by deleting objects, for example. Also if it's just "SVN but in the cloud", what is the benefit of that vs. normal SVN?

     

    TBH I think by now it would be better to just rename this issue as "Real-time collaboration in the editor", make it about that directly, and then file a new suggestion about a different idea and clarify the difference if you still want to pursue that idea.

  • skymen commented
    April 6, 2017 15:55

    @Ashley Yes, I'll do just that

  • LolindirLink Anonynoise commented
    April 8, 2017 00:25

    it would probably be many, many nightshifts to be able to lock whatever you're currently working on?

    for example:

    Bob selects Spite1, sprite 1 get's a lock for User2.
    Bob want to type Sprite1 in in a expression while User2 is working on it, Sprite1 will display a Lock and can't click it until it's cleared when User2 deselects it or is done editing. 

    ...i'm just glad i don't have to work on this o.0

  • David Higgins commented
    April 8, 2017 09:58

    I really like defolds implementation of this is something somewhat similar possible in Construct?

  • marcus langdale commented
    August 14, 2017 10:36

    Would be worth the work- without it i won't need C3 and can settle with staying on C2. It would be a huge selling point.