[Paris merge world tour] Perforce Introducing Perforce Insights
Sven Erik Knop, Perforce
-
Upload
white-nights-conference -
Category
Business
-
view
152 -
download
0
Transcript of Sven Erik Knop, Perforce
![Page 1: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/1.jpg)
Version Managementfor Game Developers
Sven Erik Knop
Perforce Software
![Page 2: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/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](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/3.jpg)
3
Why version management?
![Page 4: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/4.jpg)
4
What is Version Management?
src
img
game.cc
game.h
test.cc
knight.psd
armour.png
shield.psd
File @1 @2 @3 @4 @5 @6game.cc #1 #2game.h #1 #2test.cc #1 #2 #3 #4knight.psd #1 #2 #3armour.psd #1 #2 #3shield.psd #1 #2 #3
![Page 5: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/5.jpg)
5
Working with Version Management (1)
#include <game.h>
int main(){
InitialiseGame();PopulateWorld();SetUpOpponents();
StartUpGame();}
![Page 6: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/6.jpg)
6
Working with Version Management (2)
#include <game.h>#include <login.h>
int main(){
LogOnUser();InitialiseGame();PopulateWorld();SetUpOpponents();
StartUpGame();}
![Page 7: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/7.jpg)
7
Working with Version Management (3)
#include <game.h>#include <loot.h>
int main(){
InitialiseGame();PopulateWorld();SeedLoot();SetUpOpponents();
StartUpGame();}
![Page 8: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/8.jpg)
8
Working with Version Management (4)
#include <game.h>#include <login.h>#include <loot.h>
int main(){
LogOnUser();InitialiseGame();PopulateWorld();SeedLoot();SetUpOpponents();
StartUpGame();}
![Page 9: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/9.jpg)
9
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 10: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/10.jpg)
10
Working together on binary files
Merging for binary files?
Locking!
![Page 11: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/11.jpg)
11
Single of Source of Truth
![Page 12: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/12.jpg)
12
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 13: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/13.jpg)
13
Consequences
Continuous integration• Builds take minutes (incremental) to hours (full)• Smoke tests?• Full tests?
Who broke the build? HEAD is not stable!
![Page 14: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/14.jpg)
14
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 15: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/15.jpg)
15
Single Code Line
Head
Stable Head still stable?
![Page 16: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/16.jpg)
16
Development branches
Long-lived development branches can cause problems
![Page 17: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/17.jpg)
17
Task/Feature branches
Keeping feature branches short-lived avoids severe merge conflicts
![Page 18: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/18.jpg)
18
3-way merge for binary assets?
Images? 3D models? Sound files?
Locking! Across branches?
![Page 19: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/19.jpg)
19
Component-based
Shared trunk
Separate trunks
![Page 20: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/20.jpg)
20
Trunk-based Development
Trunk
Release
Extended testing for releaseRequires tooling!
Stable
![Page 21: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/21.jpg)
21
Milestone branches
Stabilise in separate branchMerge fixes, ignore hacks
![Page 22: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/22.jpg)
Perforce Helix
![Page 23: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/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](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/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](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/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](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/26.jpg)
26
Helix Streams
![Page 27: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/27.jpg)
27
How do I start?
Perforce is free (without restrictions)• For educational purposes• For Open Source projects• For 5 users / 20 workspaces
www.perforce.com
Hosted, for example, by Assembla (www.assembla.com)
![Page 28: Sven Erik Knop, Perforce](https://reader030.fdocuments.net/reader030/viewer/2022020203/5a6489907f8b9a31568b5041/html5/thumbnails/28.jpg)
Thank YouQuestions?