I’m going to start my #AltDevBlogADay escapade by discussing a subject of great interest to me. There is a lot of buzz recently around virtual worlds which can be modified in realtime by the player; probably the most popular example is Minecraft where you have the ability to construct your own world and collaborate with friends. The question I’d like to answer in this post is: can the same idea be applied to the game development process?
Traditional development environment
In a traditional development environment, designers have to worry about manually merging their individual works in batches which is time consuming, complex and may even lead to conflicts. SVN, GIT, mercurial or other version control system is used for this purpose.
The real-time solution
Real-time collaboration can address this by synchronizing changes in real-time. Here are some advantages:
Changes are live
Multiple designers can move objects, apply textures, morph terrain, tweak lighting and instantly see the results.
One centralized world
Changes are propagated to one centralized world.
Instant play testing
Play testers can take part, instantly experiencing the results of development and offering feedback on the spot. They point out flaws in the world or gameplay and assign developers to have them fixed.
Developers can work remotely in different locations around the world. All they have to do is connect to the server and begin editing alongside other team members.
What does this mean?
A developer will enter a world, fix a flaw, test the game, tweak, test, tweak, test all with the click of a button. Not only that, but multiple developers would be performing this process simultaneously. This effectively combines implementation and testing, resulting in drastically faster iterative and incremental development.
Being able to test the game on the spot, immediately fixing any flaws in the art and gameplay and having those changes reflected in the final game allows developers to achieve more polish in a shorter space of time, therefore leading to a better quality game.
What are the downsides?
Challenging to develop
There are a number of technical hurdles that need to be overcome before real-time collaboration can work effectively.
Developers will be able to interfere with the work of other developers, and even change a part of the world another developer is currently working on. Apart from being irritating, it may be difficult for the system to know which changes to propagate from what developer.
Things can go wrong
It might be easier for things to go wrong, since you are effectively modifying the live game. For this you could still apply the batching idea, and have developers commit their changes to the centralized world for other developers to see once they are happy. You could also apply user roles to restrict users in what they can change.
Completely new workflow
A studio will need to completely change its workflow, and collaboration tools used in existing processes may now be useless. Tools such as issue management are aimed at static version control. It might be necessary to develop new project management tools and integrate these with the real-time environment.
A look at some examples
HeroEngine is a great example of real time collaboration working effectively. In fact, its whole toolchain is based around the idea. Artists can even annotate parts of the world which need working on and assign them to a team member. Here’s a video showing the tech in action:
Unity is already a WYSIWYG environment allowing you to instantly play test a game, but things can get tricky with multiple developers. UnityCollab offers a solution, enabling the editor to be synchronized in real-time across a network.
LOVE game (fans of Minecraft should check it out).
id Tech 5
John Carmack’s presentation at WWDC 2007 described the potential of multiple artists working simultaneously and tweaking a world in real-time:
My work on the subject
A few years ago I started something called Ogre 3D. If you placed or updated an object in the world, it would be serialized to all players connected to the network.
I stopped working on it for the obvious reason that I didn’t have the manpower to finish a project of such scale. However, I’m monitoring something in the works by a fellow developer which takes the idea it to a whole new level, and will be announced sometime in the near future.
Real-time collaboration is an idea that has been around for a while, but it’s certainly not being utilized as much as it should. There are plenty of development challenges to overcome, but in the future we may see more tools taking advantage of it and companies integrating it into their workflow. Reducing development time and increasing the number of tasks assigned to developers will be important as games become increasingly complex.
Thanks to Gabriël Konat for assisting me with this article.