GameDev Version Control - Git's not always the saving grace!
Image from Perforce Software's Official Blog Site

GameDev Version Control - Git's not always the saving grace!

Game development is a complex and collaborative process that involves multiple team members working on various aspects of a game, from coding and art design to sound and level creation. With so many moving parts, it's crucial to have a system in place that ensures everyone is on the same page and that changes can be tracked and managed effectively. This is where Version Control Systems (VCS) come into play.

With GameDev teams that are working collaboratively with more than one member, it is all the more important for VCS to be added into the teamspace. Now the most popular option has always been GIT, it is open source, seamless and very well integrated for many development enviroments by a rich community, but there have been many “shortcomings” in GIT when it comes to game development. But why ?? ? Let us find out!

Now VCS in any form of development focuses on these core aspects, which are:

  • Collaboration
  • Asset Tracking → tracking images, audio files, large files, etc.
  • Code Management
  • Version History → maintaining a consistent version so that everyone is working on the same dependencies
  • Branching and Merging

These are the minimum you would get from any modern VCS, especially GIT. But you see, this gets very subjective for Game Development in the Asset Tracking and Code Management

If you are coding for a game in a game framework and the project size is relatively small with assets that are light in memory, then GIT would work out for you seamlessly, but this changes for large scale projects (e.g., games made with game engines like Unreal, Unity, Construct, etc.) with a lot of devs working on it.

GIT by default has a limit on the file size that can be uploaded remotely so this becomes tricky for large size assets like 3D models, audio files, textures, and other game assets ????. To handle this, GIT has something called a GIT Large File System (LFS) for very large files, and this is great, but might not appeal for everyone as it might not be as seamless as a normal GIt workflow, so much to the point that some game engine devs like CryEngine, Construct 2/3 resort to Local Backups for versioning!

Game engines like Unreal, use Blueprints which are not recognized by GIT, which complicates the Code Management aspect by a lot. When working as a solo dev, this might not pose much of an issue, but becomes a hassle for large teams working on a lot of intricate code.

Which is the reason why enterprises and even hobbyist devs have started looking out for other VCS solutions that can help for their specific game engine use cases.

Let us look at a few highly recommended VCS solutions for various popular game engines:

  1. Unity: Unity Collaborate: Unity also offers its own version control solution called Unity Collaborate, which is integrated directly into the Unity Editor. It simplifies version control for Unity projects but has certain limitations. PlasticSCM: Recently acquired by Unity, this is also the recommended VCS from Unity themselves relative to GIT. It is known for handling Large files very well and meets the VCS standards for game development as well.
  2. Unreal Engine: Perforce (Helix Core): Perforce, also known as Helix Core, is the version control system that Epic Games (the creators of Unreal Engine) uses internally. It's a centralized version control system that works seamlessly with Unreal Engine.
  3. Godot Engine: Godot Project Manager: Godot also has its project management features for collaborative development, though it's not a full-fledged VCS. It helps organize project files and assets.
  4. CryEngine: Perforce: Perforce is another option for CryEngine, especially in larger studios where it's commonly used.
  5. Lumberyard: AWS CodeCommit: AWS provides a version control service called CodeCommit, which integrates well with Lumberyard, given that both are Amazon services.
  6. Construct 3/Construct 2: Local Backup: Construct is more focused on creating 2D games and doesn't have built-in VCS support. Developers often rely on manual backups and cloud storage for versioning.
  7. RPG Maker: Local Backup: RPG Maker doesn't have native support for version control. Users typically create manual backups of their projects or use external file synchronization tools.
  8. GameMaker Studio 2: GameMaker Server: There's also a community-developed plugin called GameMaker Server, which can help with online collaboration and project management.

Do note that this is a very subjective topic and doesn’t say that Git is bad for game development, but rather that different tools might meet your expectations better for different use cases. So next time you start out a game project, keep in mind the various options you have

要查看或添加评论,请登录

GameDevUtopia (GDU)的更多文章

社区洞察

其他会员也浏览了