It's a very difficult problem and I'm not sure it would in practice work any better than SVN. Consider two people editing the same project in real-time who do the following:
1) User A adds "Player" sprite
2) User B adds an event referencing the new "Player" sprite
3) User A presses undo
You have three options to handle this:
- undo adding the "Player" sprite, and the event User B added disappears. User B may be left thinking "WTF?" since their work has suddenly vanished. Think of all the weird bugs that could happen with random bits of a project appearing and disappearing like this.
- undo the previous action only, so User A undoes the previous action by User B. This sucks because User A has no idea when they press undo what will actually be undone, since User B could do something just as User A is hovering over the undo button, and therefore change what is undone just before they undo it. Then user B also sees something they just did vanish unexplainably, which neither user intended.
- don't allow undo. This will make it far less convenient to use the editor since it's an essential feature.
I think it would be terribly confusing and awkward to use no matter what solution we pick to that type of problem, and it's really the tip of the iceberg, there are all sorts of complex things you can do to conflict with each other. Source control may be tricky to merge and such at times, but by restricting each user to a particular non-conflicting section of the project, it should be fine.