Final presentation saswat, venkat, vivek, vaibhav, jian, revant
...back in the beginning It was ambitious
3D racing/combat game Mono wheel vehicle Offensive/defensive weapons ▪ Missiles ▪ Turrets ▪ Spikes ▪ Smoke Bombs 3 game modes ▪ death match ▪ races ▪ style Networking Motion blur Dynamic lighting … Networking Motion blur Dynamic lighting …
Open source graphics engine Networking Physics 3D sound Race mode Frame rates Game Architecture 3D art But.. We survived
Irrlicht Recompiled source for certain features we wanted ▪ GUI events ▪.B3d loader Optimized a few packages Were at mercy of open source forums Poor documentation
Lost / Out of order packets Synchronize state of game objects LAN server discovery Non linear development Did not decide on networking initially Efficient serialization ▪ Works over wifi
Interpolate between messages Prevent ‘jumping’ t = 0 t = 1
The cascade ▪ Networked sound ▪ In-game chat ▪ Did the missile hit? ▪ Game states ▪ Lobby UI ▪ …
Why the wheel was hard ▪ PhysX’s uses a vertical RayCast wheel model ▪ Collision only at the vertical y contact point ▪ No wheel-wheel collision re-invented The wheel re-invented The wheel
Anisotropic friction model for Skid Based on a piecewise cubic Hermite spline. Varies with speed and tire pressure
‘Tunneling’ Go through walls at high speeds Implemented custom CCD [continuous collision detection] Visual debugging over the network Keep graphics and physics world in sync
20 fps ▪ Octree for each mesh ▪ Careful level design ▪ Memory management ▪ Reuse/Pre allocate objects ▪ Optimized triangle counts for meshes ▪ Sound Channel Management
C++ memory management, dangling pointers, network packets, sound, physics, arghhh Our solution: ▪ Reusable game engine ▪ Abstracts networking, physics and graphics, sound ▪ Fully Extendible ▪ Game play programmers only worry about game level details ▪ Plan to release as open source
Race ▪ Update rankings in real time ▪ Cool way points system ▪ Wrong way detection ▪ Synchronize times Style ▪ Robust detection of ledge rides, skids etc. Deathmatch ▪ Networked Kills vs Deaths
No 3D art experience Had to learn 3D design tools Challenges with UI design, tracks and general world objects Realistic Light mapped environment Dynamic lighting Motion Blur
Smooth content pipeline Used IrrEdit to create maps No support for custom user data ▪ Extended the XML parser Level Manager FMOD designer ▪ Auditioning tool ▪ 3D Engine sound.. With gear shifts