There are plenty of big names in the business using version control, but when did the greats of gaming start using the tools that fuel their teams and how have these tools contributed to their success?
In this DevTalk we'll cover a few of the reasons why titans of the gaming industry rely on versioning, as well as how and why they got started.
Read on and learn:
- Who's using version control
- How to develop your next game quickly and improve collaboration
- What tools to have in your arsenal for game development
- Why starting versioning early will make or break your professional workflow
7. Let’s talk benefits
Traceability of what developers have done
Quick collaboration and sharing
Remote pair programming
Single source of truth
Version any kind of assets
23. Why Perforce?
Binary assets handling
Integration into game development engines – Unreal
Ability to handle large repository
Scalable for large teams
Dedicated Support team
Security
24. Why Perforce?
Binary assets handling
Integration into game development engines – Unreal
25. Why Perforce?
Ability to handle large repository
• Average game size is 2 TB
Scalable for large teams.
• Distributed globally
Thank you Rehana and hello all I am Dale. During this Webinar I will be talking about some of our customers that use the Perforce Helix Versioning Engine. We will cover why it is important to version your work, this can be any kind of digital assets you might have. I will also talk about some of the tools that will help you as a developer or artist become successful. These tools will help streamline your workflow and improve the quality of your code before committing or shelving it. And for artists, we have tools that make it easier for you to track changes and collaborate with others--even developers. We will conclude on why you should use Helix as your versioning engine when you’re learning to code at University or in the industry.
Here are just some of the companies that use Helix today.
EA Games, Ubisoft, Nintendo, Rockstar North, CD Projekt Red, Epic game, Rocksteady, CCP games.
As you saw from the last slide we have lots of big gaming companies’. In fact, 18 of the 20 top game development companies in the world are using Helix to develop their games.
Let’s take Ubisoft as an example. They have been a customer of Perforce for many years and they are one of the leading games development companies. They have built games like The Division, Watch Dogs and Assassin’s Creed all on Helix. They have thousands of users writing these games and they have users from all around the world. Their developers love Helix, they couldn’t see how they could build their games without versioning the code and art work on Perforce. We have their testimonials on our website.
We have many other large well know customers like NetApp, Citrix and NVIDIA that have said why Perforce is key to their business.
NOTES:: Talk about A customer IE Ubisoft. Then relate to Division Story around this.
So why is versioning important to games development.
Here are just a few of the benefits that you can take advantage of when you version your game code and art work.
Let’s talk about the benefits of traceability. A lot of companies are very interested in knowing who has their intellectual property (IP) at any given time. Let’s face it this is the heart and blood of the company. If this code was to be release to the public it could cost the company millions. So it is important to know who has what code and what they are working on.
If for any reason your Helix server goes down and they forgot to take a backup of their system. They would be able to trace who had what files checked out and could recover any data that was lost since the last backup.
The main benefits of traceability are to see what you have committed. As an example if you were a part of a game project that requires you to show what work you have completed compared to what you had planned; Perforce can easily give you a list of commits and dates, which allows you to provide evidence of the work that has been carried out. This can also make it easier to show your manager or project leader that you have been working hard at this new feature in the game, but it required more coding or fixing than previously planned.
Another benefit that can be taken from versioning is the ability to quickly collaborate and share code with others. This could be just committing the code to the repository and someone else syncing the latest files out of the system.
For example if you were working on a feature and you had people in the US and in London working on this same code. Then the user in London can do their work and then at the end of their day commit this code. Then the US colleague comes online and fetches the latest code and carries on with the coding for this area. There is also the ability to not commit the code but rather shelve the work. This means you are not committing unfinished code to the production line, as nobody likes breaking the build. To avoid this, the London user could shelve the work and the user in the US could unshelve that code and carry on working. The code was never committed into the main server, meaning no unfinished code ended in the production line. This is common practise in a lot of companies.
I have had people tell me they use Dropbox to develop their games and the first thing they say is “don’t tell anyone that I do that.”, which always makes me laugh. As it is seen as a really bad idea to do as there is no way to trace what people have done or who is currently working on the files. Yes Dropbox allows you to share the code with other people it just doesn’t give you any of the traceability that most companies required these days.
Most people will understand what Pair programming is, but just too quickly cover it at a very high level. It is an agile development technique, where two developers would work on one machine. One would be the code writer and the other would observe and review each part of the code as the first one writes. This is used to help improve written code. It also helps see the code from someone else’s view point. The remote part is just as it sounds. Instead of sitting next to each other you are in remote locations and helping each other by any means; be it sharing screens or just a phone call.
So why does remote pair programming benefit from versioning. This allows you to share the code to be reviewed remotely and quickly, allowing you to use this agile development technique of pair programming.
In my opinion, the biggest benefit is, the single source of truth. So what does “Single source of truth” mean, well basically this means that it doesn’t matter if you have 5 or 5000 users working on the code line, everyone is working from the same content and as soon as one person updates the content everyone sees the file has been updated and then able to sync the new file. In most cases this helps developers quickly fix any issues others have introduce that might break their code.
For example if you take a look at a customer like NVIDIA, they are the leading chipset manufacturer. The GPUs manufactured by NVIDIA are used by almost every games company in the world. They have hundreds of Helix servers for different projects. They see any code in these instances as a single source of truth that anyone can look at and see what state their chips are in. Without Perforce they don’t see how they would have got to where they are today. In fact, NVIDIA says that "If it's not in Helix, it's not in the product." That's how strongly they believe in having a single source of truth.
Let’s face it games are getting bigger and bigger over time and this is due to the size of the binary assets that are linked to these games. The reason they are so big is the detail in these games are becoming almost as if the game is real. The new technology that is coming out is the ability to play games with virtual reality headsets. These are going to require hundreds of different kinds of assets to build these games. They will all need to be stored into a single repository.
The assets to build a game could be just the written reports that are used to plan the game. Then you’re likely to have a story board to show how the game is going to progress. Once you have the game flow sorted you will then need to get the designs and graphics built for the game. Next you need to start writing the code that controls all the graphics that have been built. The final step is to get the final build of the game completed. All of these stages will need have some form of digital assets that can be versioned.
So how do these big companies build their toolkits, they use a lot of Helix tools that can be added or built into your own toolkit and workflow. Without a strong toolkit you won’t be able to build a strong workflow for your business.
The first and most important part is ensuring you have the right architecture that fits your business needs. If all the developers work in one office, you’re going to want the Server that Perforce Helix is installed onto be local to them and have the resources required of what they are developing. If they were developing a mobile game these tend to be small in size so you won’t need massive resources on the machine. If you have remote offices we have tools that can help distribute your environment. This can be done with our proxy, which allows you to just have a copy of the versioned files that the users regularly require local to them. This can save on network transfer time and allow other users to quickly sync the files. Our replication solution can also help. There are many different forms of replication but the basic idea is that it is a full copy of the master server in the remote office.
Ubisoft have 20 main instances of Perforce with around 10 to 20 different replicas hanging of that master server in remote studios. This saves their users any network wait time. It also means if for any reason the Master server breaks they could fall over to one of the replicas. This means you don’t have to wait for the IT department to fix that one machine. IT team can fix the machine while the developers continue working on the other instance of Helix Versioning Engine that has now become the master.
The next thing you’re going to need in your toolkit is the IDEs integration. We have many plug-ins that are available these are just a few of the notable ones. Your IDE depends on which game engine you're using to develop. For example if you were writing a game using the unreal engine; like Batman: Arkham City, you might want to use the 3ds max program for the 3d models within the game.
If you were writing an indie type of game you might want to use unity, as it has a great platform that allows you to build your game from the ground up. It also has a great plug-in that works with Perforce to allow you to version all your assets related to the game without having to worry too much about them.
You have now written some code or created some 3d models. You’re going to have other people now review these and Perforce has a great tool for this process. Helix Swarm was designed and built for the pure purpose of reviewing assets that are stored in the Helix Versioning Engine. Swarm has a clean and simple UI to make it easy to understand what is needed to be done. It allows you to comment on code or view 3d models to check that everything has been done correctly before or after committing to the server.
I personally have had the opportunity to be involved in doing some development work and use Swarm as a review tool. It was great to be able to do my work, then just push the code for review and then have people put comments over the code and set me a few tasks that I need to get done. Once that was done the code was pushed back up again for another round of reviews and then the code was approved. The tool made it easy for me to get my work reviewed without having to hassle people. Since Swarm is tied into Helix Versioning Engine and can retrieve the users email address, it can send notifications if a new review have been created. This means developers don't have to spend their time chasing people down or making phone calls to get work reviewed.
The final part of the workflow is the building and testing. Perforce has integrations into many of the build tools that are out there. For example, Helix can integrate directly into Jenkins or if you’re using Swarm you can integrate it within the review process.
For example, if your user pushes their code for review, this can trigger Jenkins to run tests and if it passes all the tests, it can build the end product. This makes this process almost seamless to the end user. This also means that the code that is being reviewed is also going through the regression tests by a test system ensuring that no bugs are being brought into the code.
With all these tools you are able to build a successful workflow and toolkit that can help you build a successful product. You now have the architecture setup as required and you are able to access this using any of the IDE plug-ins that are available to you. Then we have the collaboration part that can be done by Swarm. Finally we have the build tool of choice that can be used to finish the life cycle of the development of your product.
Now we have built your toolkit and worked out the workflow, this should save you time and add value to your business.
With Perforce Helix open integrations capabilities, you don't have to spend time developing custom tools to build your work flow. Perforce has the tools that does this all for you.
Little story of when I was at University, I had some coding projects that we didn’t version and it was a nightmare to work out who had the latest code on their USB or Dropbox account. We also didn’t know how much time we had each spent on the code to ensure we met the deadlines. Which is why in my final 2 years I ensured all projects I did; be it writing a report or coding for my final year project were all versioned in Perforce.
If it wasn’t for me using Perforce during my final year project I would have lost some of my work. I had written a feature that I later decided I didn’t like or want. So I removed this from the code and committed the new revision of the code. A few months later I noticed that a requirement for the feature I had already done had been added back into the project. So luckily due to versioning my code I was able to go back to an older version of the code and get the part I had already done and bring that into the latest version. This would have saved me a few days to a week of work. I am very thankful for Perforce when it came to my University project.
The moral of the story is you should version everything even if you feel you don’t need or want it. You just never know when you might come back and need it. This way you don’t have to waste the same time rewriting the same code again as it has already been done.
The added value that Perforce can add to your business is you get a full workflow from the starting to plan a new project to the end creation. You have peace of mind that any content that you version weather you need it or not is accessible at a later date to be recovered if required.
You will be able to save time in production of the game as you will be able to develop code faster and be able to accelerate the time it takes to get the game to the market. This will reduce the cost of development on the game as you are spending less time developing it.
Learning to version your digital assets from an early stage will help you in the long run. There are so many success stories out there in the world of people that have recovered work because they used a version control engine. The best part if you start using Helix Versioning Engine during your education it is free and has no limits. Most companies you move into after graduating will have some form of version control. If you use Perforce or any version control software during university you will have a good grasp on what it is, and also be able to adapt to the engine that they use very quickly. If the company doesn't use version control, you can teach them the reason behind why it is so important which might help you land a great job at a new company.
So why should you use Perforce over any other version control engine out there. We have won the Develop Awards for best Production Tool of 2016 and for the last 3 years. And at this same Develop conference, 2/3 of all awards were given to customers of Perforce, just shows that a lot of the leading and new game companies are using Perforce.
Here are a few of the other reasons why you should use Perforce over any of the other version engines.
Helix Versioning Engine is able to handle any type of file, including graphics and video, which means you can keep all of the assets for your game in one place. Designers and developers can collaborate with each other more quickly and easily. This is why the leading games engines have integrated Helix Versioning Engine into the way they deliver their engine code.
For example the Unreal engine has a Helix Server that the game studios or developers have to request access to, which allows them to get the engine source code. This allows them to start developing their own game. With great integrations like this to game engines it will help stream line your workflow and save you time.
Perforce is also known for its ability to handle some very large repositories. Perforce doesn’t have any limits on the size of repository it can handle, the limits are down to the hardware you purchase. If you find that your company has taken on a massive new project and requires a version engine that can grow with your business, then Perforce has the engine for you.
For example and average game head revision will take around 2 terabytes in size. This could have around 200 dedicated developers work on the game. These users are distributed around the world as the talent of people is not fixed to one location.
If you find that your business is growing larger and is across multiple countries, then Perforce has the tools which can help with this. This could be just the simple proxy setup or it could be the distributed replication environment.
Perforce has one of the highest Support renewals in the industry with around 90% of customer renewing support every year. So this just shows that our customers feel that our support team is one of the big factors in choosing Perforce as their version engine.
The Support team is distributed around the world. This allows us to cover almost 6 days of the week, almost 24 hours a day. This is due to having offices in Australia, UK and North America, allowing us to provide you with a complete international coverage. If you were to have any issues, then you will always have a professional support engineer at the end of the phone or email to assist you.
If security is a big thing within your organisation then Perforce will be a great asset to you. Perforce has the ability to secure the assets in Perforce from a global view or just for an individual. If you have a new project that you only require 10 developers to see the assets. Then Perforce can easily do this for you in a number of ways. If you require to lock down your assets to only allow people to access the content from a given network this can be accomplished.
If you are attending a university and want to start versioning your digital assets, send an email to our sales team asking for information about the FREE educational license.
https://www.perforce.com/community/education
This now concludes my webinar please do let us know if you have any questions? I will now hand back over to Rehana.