A talk all about the perforce streams and the management of data from Halo Wars 2. It covers a problems space and the solutions we implemented, then looks at the lessons we learned.
2. Intro
• Name: Thomas Miller
• Role: Head of Build Engineering
• Industry for 6 years
• 5 years at CA
• Head of Build for 3 Years
• What’s Build Engineering?
• Alien: Isolation & Halo Wars 2
3. Aims
• Learn Something!
• Version Control
• Risk Management Methodologies
• Managing Data Migration
• How To Be A Better Dev
• Covering A Problem Space
• How We Did It
• How We Should Have Done It
• Some Alternatives
• A Look Forward
4. Context
• Version Control
• What is it?
• Collaborative Work environment
• We use Perforce
• Codelines ≈ Branches ≈ Streams
• Merges/Integrations
• Moving data from one place to
another
• Time-intensive
• Require human interaction
Main
Dev 2Dev 1
5. You must bring your birth
certificate when you register.
Frank
You must bring your birth
certificate when you register. (You
may bring a photocopy instead of
the original.)
Joe
You must bring your parent or
guardian when you register.
Frank
You must bring your parent or
guardian when you register. (You
may bring a photocopy instead of
the original.)
Merge
Checks Into Dev 1
Checks Into Dev 2
Checks Into Dev 1
Practical PerforceBy Laura Wingerd
Main
Dev 2Dev 1
Integrate to Main & Dev 2
6. The Problem: Overview
• Layer 1: Risk Management
• Developers not being able to work
• Layer 2: Dividing Devs into Groups
• How do we go about doing this?
• Layer 3: Flow of Data
• How we move data between subgroups
7. Layer 1: Risk Management
Risk Management
• This risk is lost time
• Time == Money
• Check-ins that break the build
• Why we don’t all work in one stream!
180 Devs
~ 6 Years
40,000€
2,160 Days
1 Day
Every 3 Months
236,000€
On A 3 Year Project
8. Layer 2: Dividing Developers Into Groups
Dividing Devs into Work Subgroups
• What subgroups? What’s the
criteria?
• Feature?
• Discipline?
• How far do we go?
• This Could Become A Problem
Main
ArtCodeEngine
AI UI
Network Env
CharacterConcept
Anim
UI Art
Design
Tools
AI Design
Tech Art
Audio
Balance
VFX
9. Layer 3: Flow of Data
Managing Data Flow
• Integrations take time
• Integrations can fail
• Queues start to form
• QA time-intensive
Main
ArtCodeEngine
AI UI
Network Env
CharacterConcept
Anim
UI Art
Design
Tools
AI Design
Audio
Balance
VFX
10. Halo Wars 2: A Story
• How Did We Tackle These Problems?
• Where Did We Fall Down?
• What Did We Learn?
11. • We Wanted To Minimise Risk.
• Stable vs Unstable?
• We were unstable
• Working On The Game
• The Tools
• And The Engine
• That’s A Lot Of Risk!
HW 2: Layer 1: Risk Management
Engine Tools
Game
12. HW 2: Layer 2: Dividing Devs Into Groups
• We split people into groups.
• By Pod
• By Feature
• AND By Discipline
• We Divided Beyond What We Needed
Main
Engine
AI UI
Network Env
CharacterConcept
Anim
UI Art
Design
Tools
AI Design
Tech Art
Audio
Balance
VFX
13. HW 2: Layer 3: Flow of Data
• This Is Where It Really Went Wrong
Main
ArtCodeEngine
AI UI
Network Env
CharacterConcept
Anim
UI Art
Design
Tools
AI Design
Tech Art
Audio
Balance
VFX
14. HW 2: Layer 3: Flow of Data
• This Is Where It Really Went Wrong
• We Didn’t Appreciate The Logistical Cost
• The Insane Amount Of Work
• We had QA doing integrations!
• Everything needed testing
• The Queue Became Unmanageable
15. Some Lessons
• Streams?
• Appreciate the logistics
• More focus on risk groups
• Broken Build AND A Blocked Queue Can
Cause Lost Time
• Who Can Manage Their Own Integrations?
• Start Large and Slim Down
• Don’t be this guy….
There could be a
stream for that!
Very
Stable
Stable
Quite
Stable
Quite
Stable
Stable
Unstable
Very
Unstable
Very
Unstable
Unstable
Engine Tools
Game
16. What Do People Want?
• A Stable Work Environment
• Fast Propagation of Features
• Ease Of Collaboration
Streams
Speed Safety
17. Empathic Software Development
“Fixing problems means first of all understanding them — and since the whole
purpose of the things we do is to fix problems in the outside world, problems
involving people, that means that understanding people, and the ways in which
they will interact with your system, is fundamental to every step of building a
system. […]
Essentially, engineering is all about cooperation, collaboration, and empathy for
both your colleagues and your customers.”
- Yonatan Zunger
18. • A Story To Tell
• Who Are You Solving A Problem For?
• Your Client?
• Your Team?
• They Might Be The Same Thing!
• You Can’t Fix People!
• Fix Their Problems Instead
Empathic Software Development
19. A Look Forward & Some Alternatives
• There Are No Right Answers
• But there are wrong ones!
• Depends on the safety of your environment
• Automation?
• Maybe. But it’s limited.
• You can’t integrate, but you can test!
• Validation
• Compile
• Smoke Tests
• There’s a lot to talk about
20. In Conclusion
• A Problem
• Layer 1: Mitigating Risk
• Layer 2: Dividing Developers
• Layer 3: Organising Flow of Data
• Software Engineering
Risk Groups
Don’t Go Overboard
Appreciate The Logistics
Who Are You Solving The Problem For?
Be Considerate
Fix The Problem. Not The People
Aim: Come away having learnt some of the things from HW2
Learn something about VC and what it can involve
We’ll talk about Risk Management
The pitfalls of data migration
What?: Unity, GitHub, GIT, SVN.
Branching technology is nothing new.
Streams are just smarter branches. They are very similar, but I will use streams.
This is fairly high level, and the context can be applied to most version control environments.
*as much as we can
Layer 1: Time = Money
Layer 2:
Risk management. Core it’s about keeping one developer safe from another. Their work. Blocked developers = Delay = Time = Money.
Very easy for large groups of developers to become blocked.
The Build: Short hand for “the work environment”.
Talk about mainline and move onto how to split developers.
Talk about moving devs into different streams.
How far do we go? How many subgroups do we split developers down into. Should everyone have their own
Resolves take a lot of time. Even for experienced engineers.
They can be too broken to submit. Even if it isn’t’ then there is a line between what is too broken and what isn’t. Is some functionality worth sacrificing for other functionality.
Even if successful it starts to create a backlog of integrations. Depends on frequency.
So Let’s go back
we’ll talk about
In the context of HW2
Going into some depth about the first 4 in the next few slides.
Going into some depth about the first 4 in the next few slides.
Layer 3: Moving data between streams.
Queue became a field hospital. Triage.
We had too many streams. More focus on risk groups. Explain risk groups.
Depends on Env. Talk about Alien.
We had too many streams. More focus on risk groups. Explain risk groups.
Depends on Env. Talk about Alien.
TA
Automation is limited. It can’t effectively do integrations. Test are not normally good enough, need human eyes.
Aim: Come away having learnt some of the things from HW2
We’ve spoken about several different things and areas
Learn something about VC and what it can involve
We’ll talk about Risk Management
The pitfalls of data migration
Automation is limited. It can’t effectively do integrations. Test are not normally good enough, need human eyes.
Explain risk groups