Title: User%20Interface
1User Interface
2User Interface
- Make it simple/easy to do common tasks
- Dont obscure the FOV
- Simpler is typically better
- Consistency is important!
3Diablo
4Warcraft 3
5World of Warcraft
6Quake 3
7Quake 4
8Madden 09
9Game Control
- Must consider single/multi-player aspect
- Single player?
- Networked multi-player?
- Multi-player same machine?
- Platform limitations
10Game Control Keyboard/Mouse
- Connected to every PC but lacking on most other
platforms - Fine for single player or
- multi-player networked
- Lots of buttons!
11Game Control Joystick
- Found on most consoles
- Can also be connect to
- PC via USB
- Win NT supports 2 joysticks
- Later versions support 16 joysticks
12Game Control Others
13Joystick Programming with Win32
- include ltwindows.hgt
- include ltmmsystem.hgt
- int joyGetNumDevs ( void )
- Returns number of joysticks supported by driver
(not number connected to machine)
14Joystick Programming with Win32
- MMResult joyGetDevCaps ( int id, JOYCAPS cap,
int size ) - id id of the joystick being tested (-1 through
15) - cap pointer to a JOYCAP structure
- size size of structure pointed to by cap
- Returns JOYERR_NOERROR if no error
15Joystick Programming with Win32
- typedef struct
- short wMid
- short wPid
- char szPnameMAXPNAMELEN
- unsigned int wXmin, wXmax, wYmin, wYmax, wZmin,
wZmax - unsigned int wNumButtons
- unsigned int wPeriodMin, wPeriodMax
- unsigned int wRmin, wRmax, wUmin, wUmax, wVmin,
wVmax - unsigned int wCaps
- unsigned int wMaxAxes
- unsigned int wNumAxes
- unsigned int wMaxButtons
- char szRegKeyMAXPNAMELEN
- char szOEMVxDMAX_JOYSTICKOEMVXDNAME
- JOYCAPS
16Joystick Programming with Win32
- typedef struct
- short wMid
- short wPid
- char szPnameMAXPNAMELEN
- unsigned int wXmin, wXmax, wYmin, wYmax, wZmin,
wZmax - unsigned int wNumButtons
- unsigned int wPeriodMin, wPeriodMax
- unsigned int wRmin, wRmax, wUmin, wUmax, wVmin,
wVmax - unsigned int wCaps
- unsigned int wMaxAxes
- unsigned int wNumAxes
- unsigned int wMaxButtons
- char szRegKeyMAXPNAMELEN
- char szOEMVxDMAX_JOYSTICKOEMVXDNAME
- JOYCAPS
number of buttons
17Joystick Programming with Win32
- typedef struct
- short wMid
- short wPid
- char szPnameMAXPNAMELEN
- unsigned int wXmin, wXmax, wYmin, wYmax, wZmin,
wZmax - unsigned int wNumButtons
- unsigned int wPeriodMin, wPeriodMax
- unsigned int wRmin, wRmax, wUmin, wUmax, wVmin,
wVmax - unsigned int wCaps
- unsigned int wMaxAxes
- unsigned int wNumAxes
- unsigned int wMaxButtons
- char szRegKeyMAXPNAMELEN
- char szOEMVxDMAX_JOYSTICKOEMVXDNAME
- JOYCAPS
min/max bounds for hat controllers
18Joystick Programming with Win32
- MMResult joyGetPosEx ( int id, JOYINFOEX info)
- id id of the joystick being tested (-1 through
15) - info pointer to a JOYINFOEX structure
- Returns JOYERR_NOERROR if no error
- JOYERR_UNPLUGGED if joystick not connected
19Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
20Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
MUST be sizeof( JOYINFOEX)
21Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
SHOULD be JOY_RETURNALL
22Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
position of hat controllers
23Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
bit array with bit set if button currently
pressed
24Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
number of buttons pressed
25Joystick Programming with Win32
- typedef struct
- int dwSize
- int dwFlags
- int dwXpos, dwYpos, dwZpos
- int dwRpos, dwUpos, dwVpos
- int dwButtons
- int dwButtonNumber
- int dwPOV
- int dwReserved1
- int dwReserved2
- JOYINFOEX
angle of POV controller