Creating Great Community Games
From XNAWiki
These are some design and other considerations when making a game for the Xbox LIVE Community Games (as gathered from notes taken during Gamefest 2008):
- Design Considerations
- Starting
- There is automatically a standard XBLCG splash screen
- Fills the 3-5 seconds of boot up time
- Keep load time low
- Never freeze the screen; use asynchronous loading when you can
- Load just what you need to move the player along
- Play an animation if the loading is > 1 seconds
- There is automatically a standard XBLCG splash screen
- Menus
- Use the "Press A or Start" screen as a "sign in" so you know which player is primary
- All menus should navigate the same
- Menu work isn't glamorous; use GSM sample to get started
- Exiting
- If it's a trial mode, display a sell screen with one button to take them to the game offer
- Main Menu
- If only one mode, consider using "Start Game" instead of "Single Player" or anything
- If multiple modes, consider just listing them all on the main menu instead of sub-menus
- If it's a trial mode, have an option to purchase the game from the main menu
- Help & Options
- Brief how-to-play
- Controls, tutorials, etc
- Control options (customizable controls)
- Audio/video settings
- Credits
- For all options, provide a way to easily reset to defaults
- e.g. Press X to Restore Default
- Brief how-to-play
- Pause Menu
- Should have these options:
- Resume
- Purchase
- Help & Options
- Save (if applicable)
- Quit
- All games should have a pause menu
- In multiplayer - pausing stops input; not game
- Otherwise if I pause my game, my friend's game stops too
- Should have these options:
- User Experience
- A = confirm, B = cancel
- Start = Pauses, Back = scoreboard, map, some other game function
- Allow navigation with both DPad and left thumbstick
- Tool tips where appropriate
- Design for simplicity
- User won't be 20 inches from screen
- Check font sizes
- Make sure the user can see what they need to see
- Game doesn't need all the options
- No need for resolution, graphical quality, etc. All Xboxs are (basically) the same.
- Profiles
- Hard to get right, but users will appreciate it
- PlayerIndex.One is not always the right player
- Be flexible with requirements
- Have fallbacks for users with Silver accounts, offline accounts
- Check for parental settings (such as networking being disabled)
- Test with lots of the various configurations of security settings
- Allow gamers to sign-in/sign-out
- If sign-out during game, elegantly return to main menu
- Use gamertags and gamer pictures where appropriate to personalize
- Allow viewing of other profiles
- E.g. clicking on profile in high score should bring up Guide with details on profile
- Starting
- Tech Considerations
- Resolutions
- 1280x720 is always safe bet
- Letterboxes on 480i/p, scales up to 1080p
- Consider adjusting based on actual display
- 1280x720 is always safe bet
- Scaling
- Xbox 360 will scale to match output display settings
- Standard Definition
- Be aware of font sizes/positions
- Color
- Check gamma/saturation levels
- Watch for color critical gameplay
- E.g. in Hexic HD, you can put glyphs on pieces for people who have trouble with colors
- Letterboxing
- 16:9 letterboxes on 4:3
- 4:3 does not pillar box on 16:9
- It gets stretched
- Safe Regions
- Overscan 0-20%
- All critical information should be in inner 80%
- All important information should be in inner 90%
- Should still render 100%
- Audio
- Test different configurations (headphones, stereo, 5.1, etc)
- Compare in-game volumes to Xbox 360 startup sound volume
- Music
- Gamer can override with Guide
- Use Song + MediaPlayer to play music
- Or use XACT and place in Music category
- Compression
- Use XMA in XACT
- Use MP3 or WMA for Song API
- Input
- Make use of controller subtypes where appropriate
- Different controllers provide different data
- Unplugged/disconnected controller should pause game
- Use gamer defaults (invert thumbstick, trigger for gas, etc)
- Don’t use keyboard for gameplay
- Only for text entry
- Make use of controller subtypes where appropriate
- Storage
- Treat storage APIs asynchronously (because they are)
- Use correct locations
- Saved games should be tied to profile
- High scores should not
- Multiplayer
- Add Quick Match feature
- Just perform query in background and join best session
- Custom Match
- Use parameters, filtering, etc,
- LIVE API only returns 25 sessions
- Support Invites
- In-process is a bit more work
- Helps sell the game
- If user A invites user B to play your game and user B doesn’t own it, he is automatically shown the purchase page
- Lobby
- Display match settings
- Support “ready up”
- Be sure to test, over the internet, your max players
- Use simulated latency and packet loss when testing
- Voice is automatic, but you may need to manage for bandwidth
- Consider game management (e.g. kicking players, etc)
- Add Quick Match feature
- Content Size
- 150MB max
- All content compressed by default in 3.0
- Audio compression – use XMA
- Texture compression – use DXT if you can
- Smaller textures if possible (e.g. use 1024 instead of 2048)
- For small games, load the whole thing up front
- JIT (just-in-time) loading is tricky
- Hard to get just right
- Can cause content “popping”
- ContentManager “per zone”
- One for UI, one per level, dispose when needed
- Testing
- Submitting is real
- Testing is very important
- Leverage peers to help test
- Considerations
- Resolutions
- Profile Levels (Gold/Silver, Online/Offline, Signed-in/Signed-out)
- Multiple Storage devices
- Multiplayer over the internet
- Resolutions
- Selling Your Game
- Game Metadata
- Title
- Description
- Capabilities (multiplayer, number of players, etc)
- Thumbnail, screenshots, box art
- Trial Mode
- Time limited sessions
- Showcase in that time
- Enable purchase in-game
- Game Metadata