Xbox Launch Lessons Learned Pete Isensee Lead Developer
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 NV 2 A Audio: NVIDIA MCPX Memory: 64 MB Hard Disk: 8 GB DVD: 5 x 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+
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: < 1 MB Xbox kernel runtime: 150 K 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 Direct 3 D, Direct. Sound Win 32 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 XFind. Next. Soundtrack( HANDLE Find. Handle, PXSOUNDTRACK_DATA p. Soundtrack. Data ) { RIP((NULL != Find. Handle)); RIP((INVALID_HANDLE_VALUE != Find. Handle)); RIP((NULL != p. Soundtrack. Data)); . . . 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 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 3 D reverb Occlusion/Obstruction Too many 3 D 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
- Slides: 29