cis 300 spring 2005. introductions the mastrix team: –jim babcock –eric hayes –christian...
TRANSCRIPT
CIS 300Spring 2005
Introductions
The Mastrix team:– Jim Babcock– Eric Hayes– Christian Montoya– Yi Xu
Story
HELP!
Goals
• Fast paced space shooter• First person shooter feel• Variety of levels• Unique weapons• Challenging AI
Game Play
• 16 thrilling missions• Each has specific tasks
– Get to a specific location– Destroy enemy fighters – Collect resources
• Levels are arranged into “campaigns” that develop the story
• Lots of power-ups:– Lasers– Missiles– Nuclear launchers– Temporary invincibility shields– Damage repair
Game Play continued
• Heads-up-display:– Shield meter– Engine indicator– Radar / mini-map– Weapon selector
• Fun stuff:– Some areas have high gravity– Orbiting planets– Drifting asteroids
Physics
• Initially, simple asteroids / space war physics– Hard to aim and slow
• Update: ship always faces cursor– Inspired by “ Wasteroids” – Faster pace and allows strafing
• Update: camera follows the cursor– Inspired by “Alien Swarm”– Solves view problems– Adds FPS feel
• Update: afterburners– You get an initial kick when you start thrusting
• End result: Completely different from asteroids!
AI
• Implementation– Waypoint graph– Dijkstra’s algorithm– State machine for decision making and
steering
• Overall principles– Beatable
• Slower movement and shot speed, lower health
– Competent• Lead their shots, avoid obstacles
– Fully implemented• Modified physics• No friendly fire
Music
• 3 songs, all created in Reason:– Mastrix Fanfare– Space Rock– Ether
• Most sounds are public domain downloaded– Except for the shot sound, created in Reason
• All songs are available on the website
Multiplayer• Our game is networked multiplayer!
– Death match was our first game objective– Was playable before single player levels
• Multiplayer is a very different experience– Weapons are balanced for deathmatch– Extremely fast paced– Number of players is limited only by bandwidth– Powerups appear randomly
Networking• Based around simple message-passing
– For example: SendMessage msg(message_updatehealth);
msg.putFloat(health/maxHealth);
msg.sendToClient(clientID);– Biggest challenge was setting it up initially
• Not very efficient– Uses TCP/IP– Too much bandwidth– Vulnerable to lag and jitter– But great on a LAN!
• Server finder– Central server tracks games– It’s actually PHP on a web server
Scripting• Easy to interact scripting with main program
– Bad syntax, no control flow or arithmetic– Very easy to add commands
• Can tweak game parameters through console variablesfloat maxPlayerSpeed = 1000.0;
-vs-ServerConsoleVariable<float> maxPlayerSpeed(“player_speed”, 1000.0);
Can then change this in gameplayer_speed 1500 # Make the player faster
• Can call game functions through console commandsvoid screenshot(void) {
static int screenshotNumber = 1;Screenshot(retprintf(“screen%i.bmp”,screenshotNumber++).c_str());
}-vs-CLIENT_CONSOLE_COMMAND(screenshot){static int screenshotNumber = 1;Screenshot(retprintf(“screen%i.bmp”, screenshotNumber++).c_str());
}• Can then call this in-game
bind f3 screenshot # make F3 take screenshots
• All of the controls work though the scripting system
Scripting cont.
Level Editing
• Implemented through scripting with menus• Menu options
– Add planets, spawn points, waypoints, regions, and power-ups at mouse cursor
– Set flags like collision type• Console commands
– Save current level– Specify boundaries– Set gravity
• Level files– Add triggers, functions, and timers– Set advanced entity properties, such as initial
motion
Art
• No artist in the group, so we had to be creative– Most art drawn by Jim (mines by Eric)– Heads-up-display done through code by Eric,
except for shield orb and icons– Star field uses parallax scrolling, continuous
depths, and relative brightness– Plain shots have a cool jitter effect added– PARTICLE EFFECTS! LOTS OF PARTICLE
EFFECTS!• Easy way to make game look good without
drawing everything – used for engines, explosions, weapon draw effects
• But, to get them running smoothly, we dropped GameX for SDL/OpenGL
Summary
• Thrilling single player mode with unique levels, innovative physics, variety of objectives, and challenging AI
• Exciting multiplayer mode that makes great LAN parties
• Useful level editor for endless fun