LAB - Component Based Development

Preview:

DESCRIPTION

Modular software design is an ingrained methodology, but how can Perforce help with that modularity? See how WMS Gaming and Perforce have taken the lid off p4 sync and stuffed it with some extra brain power to make modular version control "automagic."

Citation preview

#

Peter HopkinsMember of Technical Staff

Component Based Development Evolved

#

• We used to make pinballs

• Now we develop – Land based casino gaming

– Online casino gaming

– Facebook gaming

– Mobile gaming

– Systems and network operations

• AAA+ licenses– Monopoly

– Willy Wonka

– Wizard of Oz

– Iron Man

WMS Gaming

#

User Visual Experience

User Audio Experience

• Individual components pieces

• Each piece can be worked on separately

• Can be enabled disabled and swapped around

• Can be upgraded independently

• Well defined interfaces

• High cohesion and low coupling

• Examples– Drivers, Services, libraries,….

Recap on CBD from merge 2013

Touch Screen

Controller

OpenGL Library

LCD Driver

OpenAL Library

Proprietary Middleware

#

• I’ve seen things, things you would believe…• Now we have…

Versioning Then and Now

#

• Perforce, it's a pandoras box for developers– p4python client side is all well and good

• We were able to recreate our 100 or more lines of cvs / makefile code in 5 lines of python

• Keeping familiarity for migrating engineers

– Server side is where the power is unleashed• Lets take the same concept and get it in the server• Evaluated Sven and Randys previous conceptual work• Time to rethink and rework to our needs

Taking it to the Next Level

#

• Use cases and requirements, here is the short list– Maximum velocity with minimum effort. One shot server

side command– Support for streams and classic– p4 look and feel, no functionality loss in p4 or p4v– p4 methodology and workflow [unchanged]– One version file to rule them all– Version everything, we need to version the version file

This is What We Needed

#

What We Have Now#This is the Stream Spec template file, which is part of the# Component Base Development (CBD) system for Streams.#...Description:

This stream spec is maintained by CBD automation. To update it, update and submit changes to the versioned stream spec template file here:

//GameName/Source/GameName/GameName.cbdsst

Upon submitting this template, a Perforce trigger updates the live stream spec. The 'Options:', 'Remapped:' and 'Ignored:' fields of the live stream spec are not affected by the CBD automation. This is because these values can vary between parent and childstreams, and our goal with CBD automation is only to ensure that changes to the 'Paths:' settings, such as changes to revision specifiers on 'import' entries, are propagated along with regular source code chagges in the merge down/copy up flow.

Paths: share Source/… import GameName/libaudio/… //AudioLibrary/main/…@1449 import GameName/libsystem/… //Systems/dev…@6780 import GameName/client/… //Clients/dev/…#head

GameName.cbdsst

#

Command Expected Result

p4 sync Sync to head, and dependencies to versions in head rev of .cbdsst file.

p4 sync @12161 Sync to @12161, and sync dependencies to whatever was in.cbdsst@12161.

p4 sync //Drivers/main/…@12152 Sync module to user-specified revision @12152 (ignoring CBD rules).

What We Have Now (continued)

#

What We Have Now (continued)

p4 sync broker.cbdsst#

db.*

Historicalrevision

Latest revision

Historic or

Latest?

p4 submit.cbdsst

triggersRevisions stored in

db.nameval as keys

#

• Nested configs with #include syntax• Edition of other stream spec elements

– remaps and ignores for example

• Blue Sky elements– P4V applet. [speakers note, cover previous applet]– Trigger driven CI and CD of component automatic

upgrades and automatic regression testing

What Is Left

#

Peter Hopkins Member Of Technical StaffWMS Gaming

With over 20 year’s software engineering under his belt, Peter has specialized in the gaming industry for most of his career, also being the founding engineer for numerous multinational gaming companies in Australia

Tom TylerSenior ConsultantPerforce

Known to clients and colleagues as “The ClearCase Guy” in the mid-late ‘90s, Tom discovered Perforce while doing an SCM tools evaluation in 1999. Tom loves to talk about branching strategies, high availability and disaster recovery

##

Thank you!Peter Hopkins

phopkins@wms.com

Tom Tyler

ttyler@perforce.com

#

RESOURCESSven Erik Knop & Randy DeFauw Initial CBD work

• Presentation: http://goo.gl/kQZPFN

• 2013 Video: http://goo.gl/bqZKdR

Recommended