+ All Categories
Home > Business > Sven Erik Knop, Perforce Software

Sven Erik Knop, Perforce Software

Date post: 05-Apr-2017
Category:
Upload: white-nights-conference
View: 167 times
Download: 0 times
Share this document with a friend
31
Version Management for Game Developers Sven Erik Knop Perforce Software
Transcript
Page 1: Sven Erik Knop, Perforce Software

Version Managementfor Game Developers

Sven Erik Knop

Perforce Software

Page 2: 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

Page 3: Sven Erik Knop, Perforce Software

3

Why version management?

Page 4: Sven Erik Knop, Perforce Software

4

Working with Version Management (1)

#include <game.h>

int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents();

StartUpGame(); }

Page 5: Sven Erik Knop, Perforce Software

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

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

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

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

9

Working together on binary files

▪ Merging for binary files?

▪ Locking!

Page 10: Sven Erik Knop, Perforce Software

10

Single of Source of Truth

Page 11: Sven Erik Knop, Perforce Software

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

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

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

14

Single Code Line

Head

Stable Head still stable?

Page 15: Sven Erik Knop, Perforce Software

15

Development branches

Long-lived development branches can cause problems

Page 16: Sven Erik Knop, Perforce Software

16

Task/Feature branches

Keeping feature branches short-lived avoids severe merge conflicts

Page 17: Sven Erik Knop, Perforce Software

17

3-way merge for binary assets?

▪ Images? ▪ 3D models? ▪ Sound files?

▪ Locking! ▪ Across branches?

Page 18: Sven Erik Knop, Perforce Software

18

Component-based

Shared trunk

Separate trunks

Page 19: Sven Erik Knop, Perforce Software

19

Trunk-based Development

Trunk

Release

Extended testing for release Requires tooling!

Stable

Page 20: Sven Erik Knop, Perforce Software

20

Milestone branches

Stabilise in separate branch Merge fixes, ignore hacks

Page 21: Sven Erik Knop, Perforce Software

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

Perforce Helix

Page 23: Sven Erik Knop, Perforce Software

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

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

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

26

Helix Streams

Page 27: Sven Erik Knop, Perforce Software

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

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

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

30

Futher resources

▪ Videos ▪ Tutorials ▪ Unity P4Connect introduction:

• https://www.youtube.com/watch?v=mMXnHKHykLU

Page 31: Sven Erik Knop, Perforce Software

Thank YouQuestions?


Recommended