Download - Xbox Launch: Lessons Learned
Xbox Launch:Lessons Learned
Pete IsenseeLead Developer
Xbox Advanced Technology Group
Presentation Goals
Xbox system team lessons learnedXbox game developer lessons learnedHow these lessons apply to game development in general
Xbox Launch Goals
Excellent hardware at reasonable costSuperior software development libraries and toolsLaunch (well before) Christmas 2001Solid lineup of launch titlesIt’s all about games – if it’s not about the games, it’s not a priority
The Version 1.0 Stigma
“Microsoft has a reputation for blowing version 1.0 of whatever it does, then relentlessly improving its products and finally getting it right with version 3.0”
– Houston Chronicle
Xbox unspoken goal: get it right for 1.0
The Hardware
CPU: 733 MHz Pentium IIIGPU: 233 MHz NVIDIA NV2AAudio: NVIDIA MCPXMemory: 64 MBHard Disk: 8 GBDVD: 5x CAVNetwork: Ethernet 10/100 Mb/SControllers: 4 ports
The Numbers – the Xbox
Approval to shelf: 21 monthsSystem software builds: 352Software development kit releases: 20Birthrate: 1 Xbox every 3 secondsXbox consoles sold in 2001: 1.5 million
The Numbers – the Games
Signed developers: 300+Launch titles: 19Titles shipped to date: 50+Games sold in 2001: 4.5 millionCopies of Halo sold to date: 1,000,000+
Postmortem Ad Nauseum
We needed more resources We needed a better schedule The specs were inadequate Marketing didn’t know what it wanted We should communicate better Your group doesn’t understand My group isn’t valued We didn’t build tools soon enough My group knows how to do its job – the other groups don’t
Xbox OS
Based on NT kernelExtremely lean
No virtual memory pagingNo multiple processesOriginal goal: < 1MBXbox kernel runtime: 150K
Lessons learnedTaking advantage of existing technologyKnowing when to create new technologySet goals
Specifications
Spec templateSpecs for major componentsSome minor components were overlookedLessons learned
Specs/design documents are criticalNew hiresProduct documentationPackaging, manuals
Keep them up to date
Library Design
Polling-based rather than event-drivenGame “owns” the hardware
Ring 0 (kernel mode)Direct access to GPU and CPU
Up-front memory allocationLessons learned
Understand your customerGet input from your customer
Library Design
Familiar APIDirect3D, DirectSoundWin32 File I/O
New APIsInput
Lessons learnedConsistency improves the learning curveConsistency can be misleading
Source Code Management
Internal toolPublic checkinsLabelsBranching (demos, patches)Lessons learned
Source code management is essentialCommunicate about source code changes
Assertions
Rest In Peace (RIP) debug protocol
BOOL XFindNextSoundtrack(
HANDLE FindHandle,
PXSOUNDTRACK_DATA pSoundtrackData )
{ RIP((NULL != FindHandle));
RIP((INVALID_HANDLE_VALUE != FindHandle));
RIP((NULL != pSoundtrackData));
. . .
Lessons learnedAssert yourself
Bug Tracking
Internal bug tracking toolBug prioritiesSchedulingResolving and closing
Lessons learnedFix bugs nowVerify fixes
Milestones
Monthly releases of XDKIf feature was baked, it shippedIf feature wasn’t ready, it shipped next month
Lessons learnedThe importance of milestonesCode lockdownsChange process management
Trimming the Feature Set
OnlineDashboardToolsLessons learned
Implement the strategic features firstBe realisticCut early
Quality Assurance
Testers per developerTest plansDaily builds
Build verification tests (smoke test)Stress
Lessons learnedTest earlyTest often
Xbox Hardware
Xbox Hardware
Xbox controller“The chubbiest controller on the market”
- LA Times
Lack of usability testingActual ergonomicsLessons learned
Awareness of a global marketUsability testing
Xbox System Team Tools
Microsoft Visual Studio/Visual C++Word/ExcelSource control (internal tool)Bug tracking (internal tool)Lessons learned
Use the right tools for the jobTake advantage of existing toolsBuild good tools
Xbox Audio
User-created soundtracksIncredible audio hardwareDolby Digital, Dolby 5.1Lessons learned
Simple features can have dramatic impactInvesting in future technology
Xbox Audio
Games not taking advantage of DSP3D reverbOcclusion/Obstruction
Too many 3D positioned soundsPrerendering reverb/filtering into audioLessons learned
Untapped audio capabilitiesDon’t overdo itTake advantage of 9 GB disc and 8 GB HDAvoid silent load screens
Xbox Graphics
Exploiting the shadersGames that don’t fill the disc with contentTexture resolutions too lowIndividual graphics filesLessons learned
Shaders aren’t just for performance winsTake advantage of 9 GB disc and 8 GB HDAuthor at high resolutions; downsample laterBundle assets together
Xbox Graphics
Taking true advantage of the hardwareHDTVAnti-aliasingLessons learned
Porting issuesUnderstanding your audienceMaking tradeoffs
Xbox Hard Disk
8 GB total; 750 MB utility partitionOnline contentSave games and user profilesUntapped potentialLessons learned
Invest in the future (online)Take advantage of the cacheStreaming textures
Xbox International
Xbox DashboardGerman and the 30% ruleFar East fontsNTSC/PAL – 60/50 Hz
Lessons learnedBuild your game as if it were shipping in multiple countriesKeep string resources separate from codeDesign UI with internationalization in mindDon’t tie game logic to frame rate
Summary
Xbox launchShipping on timeShipping without bugsQuality engineering practices
The future of Xbox gamesLifelike graphicsCinema-quality audioOnline playVoice
Questions
http://www.xbox.comPlease fill out your feedback forms