Sven Erik Knop, Perforce Software
-
Upload
white-nights-conference -
Category
Business
-
view
167 -
download
0
Transcript of Sven Erik Knop, Perforce Software
![Page 1: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/1.jpg)
Version Managementfor Game Developers
Sven Erik Knop
Perforce Software
![Page 2: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/2.jpg)
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
![Page 3: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/3.jpg)
3
Why version management?
![Page 4: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/4.jpg)
4
Working with Version Management (1)
#include <game.h>
int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
![Page 5: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/5.jpg)
5
Working with Version Management (2)
#include <game.h> #include <login.h>
int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SetUpOpponents();
StartUpGame(); }
![Page 6: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/6.jpg)
6
Working with Version Management (3)
#include <game.h> #include <loot.h>
int main() { InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
![Page 7: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/7.jpg)
7
Working with Version Management (4)
#include <game.h> #include <login.h> #include <loot.h>
int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents();
StartUpGame(); }
![Page 8: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/8.jpg)
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
![Page 9: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/9.jpg)
9
Working together on binary files
▪ Merging for binary files?
▪ Locking!
![Page 10: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/10.jpg)
10
Single of Source of Truth
![Page 11: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/11.jpg)
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
![Page 12: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/12.jpg)
12
Consequences
▪ Continuous integration • Builds take minutes (incremental) to hours (full) • Smoke tests?
• Full tests?
▪ Who broke the build? ▪ HEAD is not stable!
![Page 13: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/13.jpg)
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
![Page 14: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/14.jpg)
14
Single Code Line
Head
Stable Head still stable?
![Page 15: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/15.jpg)
15
Development branches
Long-lived development branches can cause problems
![Page 16: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/16.jpg)
16
Task/Feature branches
Keeping feature branches short-lived avoids severe merge conflicts
![Page 17: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/17.jpg)
17
3-way merge for binary assets?
▪ Images? ▪ 3D models? ▪ Sound files?
▪ Locking! ▪ Across branches?
![Page 18: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/18.jpg)
18
Component-based
Shared trunk
Separate trunks
![Page 19: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/19.jpg)
19
Trunk-based Development
Trunk
Release
Extended testing for release Requires tooling!
Stable
![Page 20: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/20.jpg)
20
Milestone branches
Stabilise in separate branch Merge fixes, ignore hacks
![Page 21: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/21.jpg)
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
![Page 22: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/22.jpg)
Perforce Helix
![Page 23: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/23.jpg)
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
![Page 24: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/24.jpg)
24
IDEs
Integrated into your workflow
Game Engines
Build/CI
Image and 3D Tools
+ APIs and many other tools
![Page 25: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/25.jpg)
25
Distributed Single Source of Truth
Versioning Service
Proxy
Proxy
Edge Service (humans)D/R
Edge Service (automation)
![Page 26: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/26.jpg)
26
Helix Streams
![Page 27: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/27.jpg)
27
Helix GitSwarm – Modern Git Ecosystem
▪ Browser-based Git Management ▪ Self service repos ▪ Merge requests ▪ Permissions ▪ Issue tracking, wiki, etc.
![Page 28: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/28.jpg)
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
![Page 29: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/29.jpg)
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
![Page 30: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/30.jpg)
30
Futher resources
▪ Videos ▪ Tutorials ▪ Unity P4Connect introduction:
• https://www.youtube.com/watch?v=mMXnHKHykLU
![Page 31: Sven Erik Knop, Perforce Software](https://reader031.fdocuments.us/reader031/viewer/2022021920/58e4f3c11a28abdf698b4799/html5/thumbnails/31.jpg)
Thank YouQuestions?