Introduction

In the fast-paced realm of the games and tech industry, the management and organization of code and digital assets are vital for efficient and effective project development. This is where source control, also known as version control, plays an indispensable role.

Definition of Source Control

Source control is a system that manages changes to a set of files or documents, enabling multiple individuals or teams to work collaboratively. It tracks modifications, allowing for the reversion to previous versions if necessary, and provides a historical context of the development process.

Importance in the Games and Tech Industry

  1. Collaboration: The games and tech sectors often involve large teams working on different parts of a project simultaneously. Source control systems enable multiple developers to work on the same project without conflict, as changes by one developer do not overwrite the work of another.
  2. Version Tracking: Source control keeps a comprehensive history of changes, making it easy to track and understand the evolution of a project. This is crucial in debugging and understanding the impact of new changes.
  3. Branching and Merging: It allows for branching, which means developers can diverge from the main codebase to experiment or work on new features. Merging allows these branches to be safely integrated back into the main project.
  4. Backup and Recovery: With source control, every change is logged and stored. In case of data loss, the code can be recovered from the repository.

How Source Control Works

Source control systems typically consist of a repository, which is the central storage of all code, and a working copy for each developer. Changes are made in the working copy and then committed to the repository. Other developers can then update their working copies with these changes.

Popular Source Control Systems

  1. Git: A distributed version control system, widely used for its flexibility and speed, particularly in handling large projects like game development.
  2. Subversion (SVN): A centralized version control system, known for its simplicity and ease of use, often preferred by smaller teams or projects.
  3. Perforce: Known for handling large binary files efficiently, making it a preferred choice for game development where large assets like graphics and sounds are involved.

Source Control in Game Development

In game development, source control is not just about managing code. It also involves managing game assets like 3D models, textures, sounds, and more. Systems like Git LFS (Large File Storage) or Perforce are adept at handling these large files, which are common in game development.

Best Practices

  1. Regular Commits: Developers should commit their changes frequently to minimize conflicts and ensure that changes are not lost.
  2. Clear Commit Messages: Each commit should have a clear message that describes the changes made, aiding in the tracking and understanding of the project’s history.
  3. Branching Strategy: Teams should have a clear branching strategy for features, bug fixes, and releases to keep the development organized and manageable.
  4. Code Reviews: Utilizing source control for code reviews ensures quality and adherence to standards.

Challenges and Solutions

While source control offers numerous benefits, it also comes with challenges. These include managing merge conflicts, ensuring security of the codebase, and training team members in using these tools effectively. Regular training sessions, employing best practices in source control management, and using tools that fit the team’s size and project complexity can address these challenges.

Conclusion

Source control is an essential aspect of modern game and tech development. It facilitates efficient collaboration, ensures a stable and organized codebase, and ultimately leads to the successful completion of complex projects. As the industry evolves, so too will the tools and practices of source control, continuously improving the development process.

What does Scenegraph Studios use? We use Perforce

Source control is a must for any software/development studio.

With the amount of projects Scenegraph Studios does, a robust management software is needed. That is why we chose Perforce (plus its free for teams of up to 5). Our main development engine is Unreal Engine, and Perforce intergrates directly within the editor, making it easy for our team to work on projects at the same time – 1 person in 1 level, another working on the mechanics.

In Unreal Engine 5, multiple people can work in the same level … something not available within Unreal Engine 4.

Scenegraph Studios still uses Unreal Engine 4 (specifically 4.26) for its reliability, especially with Virtual Reality; UE5 is still abit too unstable and the community plugins are still being developed because the jump from UE4 to UE5 is so huge….. ANYWAY.

If you are looking to get a job within the tech/game industry, we highly recommend you learn a Source Control process, be it GIT, or Perforce… the concepts are the same.

At Scenegraph, we use Perforce for other file types; Blender, videos, images, etc … but mostly unreal engine.

Thoughts for Tutors

If you are planning on teaching games development, here is how we would set up Perforce.

Get a server locally within your establishment… we use a Windows based PC on a local network. Install Perforce server (1 click install).

Setting up the folder structure comes in 2 formats (from experience).

1 Depot with many folders for the projects(recommended for single dev).

  • ScenegraphStudios
    • Project 1 (this is just a folder)
      • Files
      • UE4
    • Project 2 (this is just a folder)
      • Files
      • Blender
    • Project 3 (this is just a folder)
      • Etc

Many depos for individual projects (recommended for multiple devs).

  • Project 1
    • Files
    • UE4
  • Project 2
    • Files
    • Blender
  • Project 3
    • Etc

For schools/education, I recommend the first (Single Dev). This might seem counter intuitive, but it’s purely laziness. The folders will have the students assigned to it meaning students wont get access to other students folders, and they download/upload (Get/Submit). The admin has less overhead. That being said, take what I say with a pintch of salt – this was the easier way we worked at Liverpool John Moores University.

The wizard will get you to setup a local space which is your DEPOT (main storage for the projects).

If you need a hand, reach out to us. If your IT department is any good, they should be able to go through the Wizard setup.

For access outside of the Local Network, you will need to open the Port, and then use a company like NoIp to tunnel through. Now your students can get access while at home.

Recommended Storage Size

Scenegraphs projects can grow to about 200gb.

From Experience with students at Liverpool John Moores… students would upload over 1tb each … throwing allll free 3D assets into a project and not deleting the unused files. Further reading would be to include a P4IGNORE file which ignores specific folders, and files (Unreal Engine does not need the Intermediate and Saved folders to be duplicated between work spaces).

This has been a small intro to Source control and Perforce. Reach out if you need a hand or have any questions.