sven erik knop, perforce

Post on 21-Jan-2018

149 Views

Category:

Business

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Выступающий
Заметки для презентации
Perforce currently provides the world’s fastest and most scalable version management and collaboration platform. Put simply, we let companies track versions, or iterations, of their software assets as they’re developed. It’s not just source code we version. Far from it. We also do the same thing for binary files and digital assets – pictures, web sites, audio – almost anything you can create. Question to ask the audience – (especially executives) – are you familiar with version management – (if not, walk them through a customer example) If it’s digital and being developed, refined or changed by individuals or teams, Perforce can capture and version every amendment made. Right now, 350,000 users across 5,500 companies trust Perforce Software to safely version their code, assets and intellectual property.

3

Why version management?

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

5

Working with Version Management (1)

#include <game.h>

int main(){

InitialiseGame();PopulateWorld();SetUpOpponents();

StartUpGame();}

6

Working with Version Management (2)

#include <game.h>#include <login.h>

int main(){

LogOnUser();InitialiseGame();PopulateWorld();SetUpOpponents();

StartUpGame();}

7

Working with Version Management (3)

#include <game.h>#include <loot.h>

int main(){

InitialiseGame();PopulateWorld();SeedLoot();SetUpOpponents();

StartUpGame();}

8

Working with Version Management (4)

#include <game.h>#include <login.h>#include <loot.h>

int main(){

LogOnUser();InitialiseGame();PopulateWorld();SeedLoot();SetUpOpponents();

StartUpGame();}

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

10

Working together on binary files

Merging for binary files?

Locking!

11

Single of Source of Truth

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

Выступающий
Заметки для презентации
[Animation] 2 steps The problem with games (in general) is the size of the assets: The move to high definition consoles increases the size of the assets into a game manifold Games used to be delivered on a single Floppy disk! Remember floppy disks? 720KB! Then came CDs. 700MB. Then came multiple CDs. N * 700MBs Now most (Windows) games come on DVDs – 4.5 GB per layer, 8.5 GB for a dual-layer DVD-R. Ever installed Shadow of Mordor? 5 DVDs, or a single 25 GB download – so you better have high speed broadband. On the console that is a single Blu Ray disk, 25GB as a single layer. These games are the finished article, all assets compiled and compressed – in HD format. 4K is looming, which will quadruple the space requirements again! So, what are the consequences?

13

Consequences

Continuous integration• Builds take minutes (incremental) to hours (full)• Smoke tests?• Full tests?

Who broke the build? HEAD is not stable!

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

15

Single Code Line

Head

Stable Head still stable?

16

Development branches

Long-lived development branches can cause problems

17

Task/Feature branches

Keeping feature branches short-lived avoids severe merge conflicts

18

3-way merge for binary assets?

Images? 3D models? Sound files?

Locking! Across branches?

19

Component-based

Shared trunk

Separate trunks

20

Trunk-based Development

Trunk

Release

Extended testing for releaseRequires tooling!

Stable

Выступающий
Заметки для презентации
Iterate quickly faster feedback Automate and parallelise build and tests Release often Milestone branches

21

Milestone branches

Stabilise in separate branchMerge fixes, ignore hacks

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

Выступающий
Заметки для презентации
Traditional Helix strengths. Importantly, Helix enables all consumers to do their work and protect their IP without getting in the way of their preferred workflow. Even if using a client like Git where other tools enforce changes in workflow, e.g. partitioning work into multiple repos, to avoid issues of scale or security.

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

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)

Thank YouQuestions?

top related