+ All Categories
Home > Technology > LAB - Component Based Development

LAB - Component Based Development

Date post: 17-Nov-2014
Category:
Upload: perforce
View: 99 times
Download: 0 times
Share this document with a friend
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."
Popular Tags:
13
# Peter Hopkins Member of Technical Staff Component Based Development Evolved
Transcript
Page 1: LAB - Component Based Development

#

Peter HopkinsMember of Technical Staff

Component Based Development Evolved

Page 2: LAB - Component Based Development

#

• 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

Page 3: LAB - Component Based Development

#

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

Page 4: LAB - Component Based Development

#

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

Versioning Then and Now

Page 5: LAB - Component Based Development

#

• 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

Page 6: LAB - Component Based Development

#

• 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

Page 7: LAB - Component Based Development

#

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

Page 8: LAB - Component Based Development

#

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)

Page 9: LAB - Component Based Development

#

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

Page 10: LAB - Component Based Development

#

• 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

Page 11: LAB - Component Based Development

#

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

Page 13: LAB - Component Based Development

#

RESOURCESSven Erik Knop & Randy DeFauw Initial CBD work

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

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


Recommended