3D Tennis game for Pocket PC
Nils De Moor29/06/07
1
AIMproductions
Overview
I n t r o d u c t i o n
S p e c i f i c a t i o n s
D e s i g n
I m p l e m e n t a t i o n
IntroductionPocket PC
OpenGL ES
Non programmable hardwareVincent3D implementation
Platform limitations
Memory bandwidthFixed point numbersDivision
Overview
I n t r o d u c t i o n
S p e c i f i c a t i o n s
D e s i g n
I m p l e m e n t a t i o n
Specifications (1/2)Graphics
court, crowd, players, ball
Gameplay
Movement with DPad / Joystick
Hit with action button
Service with power bar
Specifications (2/2)Artificial Intelligence
trade-off between realism and perfomance
calculate first bounce-spot
hit-chance randomly
Overview
I n t r o d u c t i o n
S p e c i f i c a t i o n s
D e s i g n
I m p l e m e n t a t i o n
Design
Overview
I n t r o d u c t i o n
S p e c i f i c a t i o n s
D e s i g n
I m p l e m e n t a t i o n
ImplementationBall
BillboardingPhysicsHit algorithm
Player
3D MeshAnimation
Artificial Intelligence
Game loop
Billboarding (1/2)“Adjust an objects’ orientation according to another object (e.g. the camera)”
Look at vector
Billboarding (2/2)Phase 1: Cylindrical billboarding
Phase 2: Extend to Spherical billboarding
Physics (1/2)Calculate forces in each frame based on values of previous frames 2 possible numerical integration techniques
Euler methodposition (x), velocity (v), acceleration (a), timestep (∆tn)xn+1 = xn + vn . ∆tnvn+1 = vn + an . ∆tn
Verlet integration
position (x), constant acceleration (a), constant timestep (∆t), NO velocityxn+1 = xn + (xn - xn-1) + a . ∆t2
Physics (2/2)Comparison:
Hit algorithmInitial parameters
Algorithm
Collision DetectionCheck if point is in planeCheck if ball is in range of the player
Reflection
3D Mesh LoadingTexture format
BMP
TGA
Mesh format
OBJ
3DS
Animation3 reviewed techniques
Skeletal animation
Motion tweening
Frame sequence animation
Artificial IntelligenceSeveral plausible techniques reviewed
Combination of 2 techniques:
Random logic
Let the player hit the ball with a certain randomness
Deterministic algorithm
Calculate where ball will bounce
Move player to that spot
Game LoopStandaard game loop:
Keep update rate constant independent of display rate
needed for physicsinput needs to get registered at all timecorrect AI
while ( game_running ) {update_game();display_game();
}
Screenshots
Conclusion
Many possible techniques for videogames...
... few are usable on Pocket PC’s
Future workMenu + GUI
Complete gamerules
AI enhancements
Extensive playtests