CS491_COW

Presented by Lewis Chen
Senior Design
CS491ab Winter-Spring 2009
Concept
• LEGO-themed Real-Time Strategy Game
– Command a fleet of ships and attack enemy fleets
in 3D.
– Construct custom models for the game.
Background
• Inspired by Homeworld
• Game plot developed years ago.
• Models were already being built prior to
project.
Objective
• To create a plastic construction toy-themed 3D
Real-Time Strategy Game based on the
Homeworld series RTS game.
– Implement an orbiting camera
– User input to control player’s ships.
– Convey an outer space environment for the player
to play in.
– (Optionally) Implement special effects to make the
basic game enjoyable.
Demonstration
Implementation Issues
• Orbiting Camera
– Difficult to write from scratch. Does not move
smoothly nor to correctly.
– Solution: Utilized Dhpoware.com demo source
code
Implementation Issues (cont)
• Model conversion
– Multiple ways of converting an ldr file to an fbx file.
– Given: Ldraw models are converted to .3ds format via
LeoCAD and imported to Blender.
• Exported directly to .fbx or .x.
• All the meshes joined as one object, export to .3ds,
imported to Carrara, exported to .fbx
• Export to .obj, converted by FBX converter to .fbx
– Solution: Use Ldraw importer plugin for Blender to
import Ldraw models directly w/o conversion, export
to .obj, converted by FBX converter to .fbx
Implementation Issues (cont)
• Selection Pick ray
– How to project a ray from near plane to far plane
of a perspective camera view.
– Solution found from tutorials and examples
– Was not able to implement Selection box
Implementation Issues (cont)
• Floating Health bar
– Health bar is to appear floating above a ships
relative to the camera’s perspective.
– Had a completely implemented health bar that
would update when attacked and not attacked.
• Code lost when doing system restore.
– Most of original implementation recovered, but
does not update as originally desired.
Implementation Issues (cont)
• Particle Systems
– Immediately decided to use off-the-shelf code.
– Studied user manual to understand how to modify
particle system parameters.
Implementation Issues (cont)
• Matrix Decomposition
– Extracting the position and rotation of a ship is
very important
• Be able to compare positions of two units and their
orientation.
Implementation Issues (cont)
• Ship class
– Creating a class containing ship parameters
•
•
•
•
•
•
•
•
•
•
•
•
Model
Allegiance (boolean)
Selected (boolean)
Modelworld (Matrix)
Maximum Health (float)
Current Health (float)
Shield (float)
Attack points(float)
Maximum Velocity (float)
Angular Velocity (float)
Alive (boolean)
Ship name (String)
– Ships added to the game via a Generic List.
Implementation Issues (cont)
• Collision Detection
– Collision detection came from tutorials.
– Creating event handlers for Collision detection
was difficult
Future Plans
• Abandon XNA and explore other game engines,
perhaps commercial level.
– It is a huge disadvantage to work on a game project
alone.
• May end up just creating an animation series with
the game plot.
– I have created test animations
• Develop other game ideas and see where it goes.
– I have gained experience from using XNA and many
lessons have been learned.
THE END