290 likes | 479 Views
Xbox Launch: Lessons Learned. Pete Isensee Lead Developer Xbox Advanced Technology Group. Presentation Goals. Xbox system team lessons learned Xbox game developer lessons learned How these lessons apply to game development in general. Xbox Launch Goals.
E N D
Xbox Launch:Lessons Learned Pete Isensee Lead Developer Xbox Advanced Technology Group
Presentation Goals • Xbox system team lessons learned • Xbox game developer lessons learned • How these lessons apply to game development in general
Xbox Launch Goals • Excellent hardware at reasonable cost • Superior software development libraries and tools • Launch (well before) Christmas 2001 • Solid lineup of launch titles • It’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 III • GPU: 233 MHz NVIDIA NV2A • Audio: NVIDIA MCPX • Memory: 64 MB • Hard Disk: 8 GB • DVD: 5x CAV • Network: Ethernet 10/100 Mb/S • Controllers: 4 ports
The Numbers – the Xbox • Approval to shelf: 21 months • System software builds: 352 • Software development kit releases: 20 • Birthrate: 1 Xbox every 3 seconds • Xbox consoles sold in 2001: 1.5 million
The Numbers – the Games • Signed developers: 300+ • Launch titles: 19 • Titles shipped to date: 50+ • Games sold in 2001: 4.5 million • Copies 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 kernel • Extremely lean • No virtual memory paging • No multiple processes • Original goal: < 1MB • Xbox kernel runtime: 150K • Lessons learned • Taking advantage of existing technology • Knowing when to create new technology • Set goals
Specifications • Spec template • Specs for major components • Some minor components were overlooked • Lessons learned • Specs/design documents are critical • New hires • Product documentation • Packaging, manuals • Keep them up to date
Library Design • Polling-based rather than event-driven • Game “owns” the hardware • Ring 0 (kernel mode) • Direct access to GPU and CPU • Up-front memory allocation • Lessons learned • Understand your customer • Get input from your customer
Library Design • Familiar API • Direct3D, DirectSound • Win32 File I/O • New APIs • Input • Lessons learned • Consistency improves the learning curve • Consistency can be misleading
Source Code Management • Internal tool • Public checkins • Labels • Branching (demos, patches) • Lessons learned • Source code management is essential • Communicate 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 learned • Assert yourself
Bug Tracking • Internal bug tracking tool • Bug priorities • Scheduling • Resolving and closing • Lessons learned • Fix bugs now • Verify fixes
Milestones • Monthly releases of XDK • If feature was baked, it shipped • If feature wasn’t ready, it shipped next month • Lessons learned • The importance of milestones • Code lockdowns • Change process management
Trimming the Feature Set • Online • Dashboard • Tools • Lessons learned • Implement the strategic features first • Be realistic • Cut early
Quality Assurance • Testers per developer • Test plans • Daily builds • Build verification tests (smoke test) • Stress • Lessons learned • Test early • Test often
Xbox Hardware • Xbox controller • “The chubbiest controller on the market” - LA Times • Lack of usability testing • Actual ergonomics • Lessons learned • Awareness of a global market • Usability testing
Xbox System Team Tools • Microsoft Visual Studio/Visual C++ • Word/Excel • Source control (internal tool) • Bug tracking (internal tool) • Lessons learned • Use the right tools for the job • Take advantage of existing tools • Build good tools
Xbox Audio • User-created soundtracks • Incredible audio hardware • Dolby Digital, Dolby 5.1 • Lessons learned • Simple features can have dramatic impact • Investing in future technology
Xbox Audio • Games not taking advantage of DSP • 3D reverb • Occlusion/Obstruction • Too many 3D positioned sounds • Prerendering reverb/filtering into audio • Lessons learned • Untapped audio capabilities • Don’t overdo it • Take advantage of 9 GB disc and 8 GB HD • Avoid silent load screens
Xbox Graphics • Exploiting the shaders • Games that don’t fill the disc with content • Texture resolutions too low • Individual graphics files • Lessons learned • Shaders aren’t just for performance wins • Take advantage of 9 GB disc and 8 GB HD • Author at high resolutions; downsample later • Bundle assets together
Xbox Graphics • Taking true advantage of the hardware • HDTV • Anti-aliasing • Lessons learned • Porting issues • Understanding your audience • Making tradeoffs
Xbox Hard Disk • 8 GB total; 750 MB utility partition • Online content • Save games and user profiles • Untapped potential • Lessons learned • Invest in the future (online) • Take advantage of the cache • Streaming textures
Xbox International • Xbox Dashboard • German and the 30% rule • Far East fonts • NTSC/PAL – 60/50 Hz • Lessons learned • Build your game as if it were shipping in multiple countries • Keep string resources separate from code • Design UI with internationalization in mind • Don’t tie game logic to frame rate
Summary • Xbox launch • Shipping on time • Shipping without bugs • Quality engineering practices • The future of Xbox games • Lifelike graphics • Cinema-quality audio • Online play • Voice
Questions • http://www.xbox.com • Please fill out your feedback forms