Date post: | 05-Apr-2017 |
Category: |
Business |
Upload: | white-nights-conference |
View: | 167 times |
Download: | 0 times |
Version Managementfor Game Developers
Sven Erik Knop
Perforce Software
2
What we do
▪ Perforce helps delivery teams build complex products collaboratively, securely and efficiently.
▪ Commonly used for… • Software • Games • Electronics • Animations • Chipsets • Medical Devices • IoT
Global 24x7 Support
3
Why version management?
4
Working with Version Management (1)
#include <game.h>
int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
5
Working with Version Management (2)
#include <game.h> #include <login.h>
int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
6
Working with Version Management (3)
#include <game.h> #include <loot.h>
int main() { InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
7
Working with Version Management (4)
#include <game.h> #include <login.h> #include <loot.h>
int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
8
Merging ...
#include <game.h>
int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
#include <game.h> #include <login.h>
int main() { LogOnUser; InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
#include <game.h> #include <loot.h>
int main() { InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
#include <game.h> #include <login.h> #include <loot.h>
int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
Base
Source
Target
Merged
9
Working together on binary files
▪ Merging for binary files?
▪ Locking!
10
Single of Source of Truth
11
Challenges in Games Development
▪ Why is Games Development so hard? • Besides the obvious I mean …
▪ Average AAA game: • 100 of thousands of files
• 1 TB+ source code and assets at HEAD
• 50GB + changes a day
• 100+ Team size
12
Consequences
▪ Continuous integration • Builds take minutes (incremental) to hours (full) • Smoke tests?
• Full tests?
▪ Who broke the build? ▪ HEAD is not stable!
13
Coding practices compared
▪ Different ways to organise your sources ▪ There is no single best way
• Team size • Target platform: Mobile/Console/PC/4K/… • Rate of change • Iteration frequency
14
Single Code Line
Head
Stable Head still stable?
15
Development branches
Long-lived development branches can cause problems
16
Task/Feature branches
Keeping feature branches short-lived avoids severe merge conflicts
17
3-way merge for binary assets?
▪ Images? ▪ 3D models? ▪ Sound files?
▪ Locking! ▪ Across branches?
18
Component-based
Shared trunk
Separate trunks
19
Trunk-based Development
Trunk
Release
Extended testing for release Requires tooling!
Stable
20
Milestone branches
Stabilise in separate branch Merge fixes, ignore hacks
Conclusion
▪ Games development brings its own challenges ▪ Large projects ▪ Large binary files ▪ Large teams
▪ Careful code line management helps to manage this
▪ Single Source of Truth is essential for success
21
Perforce Helix
23
Flexible Workflow Version control, code reviews, simple file sharing, distributed, Git
Fast and ScalableFrom 10 to 10,000+ users, unlimited files Every fileEfficiently handles large, often binary, data All contributorsFamiliar tools, natural workflows AnywhereSupports geographically distributed teams
Secure Granular permissions, theft risk monitoring Open and ExtensibleAPIs and integration hooks for customization
Introducing Perforce HelixNext Generation Hybrid Version Management
24
IDEs
Integrated into your workflow
Game Engines
Build/CI
Image and 3D Tools
+ APIs and many other tools
25
Distributed Single Source of Truth
Versioning Service
Proxy
Proxy
Edge Service (humans)D/R
Edge Service (automation)
26
Helix Streams
27
Helix GitSwarm – Modern Git Ecosystem
▪ Browser-based Git Management ▪ Self service repos ▪ Merge requests ▪ Permissions ▪ Issue tracking, wiki, etc.
28
Integrated with Perforce Helix
▪ Automatic mirroring with the shared Helix server
▪ Collaborate with non-Git contributors
▪ Helix security –protection down to the file level, immutable audit trail
▪ Work with narrow clones from the Helix depot
29
How do I start?
▪ Perforce is free (without restrictions) • For educational purposes • For Open Source projects • For 5 users / 20 workspaces
▪ www.perforce.com
30
Futher resources
▪ Videos ▪ Tutorials ▪ Unity P4Connect introduction:
• https://www.youtube.com/watch?v=mMXnHKHykLU
Thank YouQuestions?