======= Kharboom! Adam Dou 991597376 Jonathan Sy 990333947 ======= Gameplay Description: Kharboom is a 3D multiplayer game meant for networked play. Players must pilot their tank vehicles to victory by destroying all other combatants. Tanks must be managed carefully; movement, booster engines, and even aiming the tank’s turret all drain energy, which replenishes slowly. Firing itself requires a practiced touch. Who will prevail? ======= Game Engine: Kharboom is developed with managed DirectX 9.0c and C# in Windows (authorized by Prof. Qureshi). Game sprites are meshes that move in a 3D environment composed of land meshes. Kharboom has been developed from the perspective of a single player engaged with several other players over a network; the camera is centered on the active player’s sprite, automatically pans with all movement, and zooms in and out based on proximity to other players and the world origin. Kharboom’s game states and play loops are multithreaded. This is vital for multiplayer extensions, and also helps us to customize the game. Kharboom’s architecture is highly modular: several unit bodies and weapons can be mixed and matched. The current build uses large, heavy tank units for testing, armed with a standard projectile weapon. Sprite movement is based on an ideal physics model, with minor variations. On detection of a sprite control keypress, a “force” is applied in that direction, then new acceleration and velocity values are computed, and finally the sprite is moved incrementally. The movement engine incorporates rudimentary friction and air resistance, resulting in realistic tank movement. Standard ballistics have been written. Shells are imparted with initial velocity in the direction of the sprite’s tank turret, subject to the firing tank’s velocity. Projectiles are not subject to air resistance, but each projectile has its own physics state, and projectiles obey the laws of gravity; thus, shells follow an arc and rotate in midair. Collision detection is performed by taking the intersection of the projectile’s direction ray and all sprites in the game world, then calculating for whether these distances are less than a threshold value. Ground detection is similar to collision detection for weapons, but only applies in a downward direction. Detecting whether or not a game sprite is on the ground is uniform for all sprite types. Lighting is both ambient and directed from a single source, although this can be modified with ease. All game sprites and land sprites are textured, and models are imported from .h files. Sounds are integrated with all gameplay actions by loading wav files into a secondary buffer for play. ======= For future development: - Networking and client/server - Soundtrack - Backgrounds - Version with full range of motion (not constrained to X-Y plane) - Additional weapons, units, skins - New maps - Improved GUI (bars rather than numeric output, game intro) ======= Playing a demo game: A complete Kharboom binary can be launched directly from the “kharboom” directory, or compiled from the Visual Studio project in the “src” directory. Kharboom requires DirectX and .NET components installed on Windows. The DirectX and .NET redistributable files can be found in the “redistrib” folder on the cd. The demo build has been set up to start a game with two players on a single machine. The controls for the first player have been preset to: E/D - raise and lower turret S/F – move left and right Shift – activate thrusters Space – charge weapon for firing (release to fire) The control presets for the second player are: Num8/5 – raise and lower turret Num4/6 – move left and right Enter – activate thrusters Num0 – charge weapon for firing (release to fire) The world origin is located inside the second concrete block on the right. As players move closer to each other in relation to each other and this point, the camera will shift automatically. Player sprites can pass through each other and through land sprites, but will settle on top of land sprites. Projectiles will explode on contact with any surface or player. We have spent several hours “testing” the game, and find it to be quite challenging (our general advice is to take the high ground and fire in low arcs). Good luck!