GOD-BLASTER! demo video


Development Team:
Kyle Gabler(mrkyle@cmu.edu) Shalin Shodhan (graphicsguy@cmu.edu)

Postmortem. Mostly mortem.

Milestone 1
Milestone 2

Game Description and Features:

  • This game is a hilarious sarcastic comedy.
  • The guest selects a team of 25 units and a religion. They are placed on a data driven map to battle it out over who God loves most!
  • The objective is to convert opponents' units to your chosen religion. In the first release we will only have two religions to choose from: Islam and Catholicism. Future "expansion packs" will include Judaism, Hinduism, Buddhism, Eskimos, and Homosexuals.
  • Each unit has a faith bar which upon running out causes conversion to the opposing religion at half faith points.
  • The units comprise of a ratio of missionaries, religious leaders, and millitant fundamentalists. Missionaries swarm opponents and convert them, religious leaders increase "faith" for the guest's team.Millitant fundamentalists have range attacks i.e. rocket propelled grenade launchers or semi automatic nail gun.
  • Each team also has a faith base i.e. holy place where a unit can recahrge it's faith points.

 

Technical Features:

  • Soft Skin Animation
  • Isometric world view providing a quasi-3D perspective
  • Particle Effects
  • Animated Alpha
  • Dynamic Lighting
  • Swarm Control
  • Data Driven Model
  • AI

 

Implementation Plan:

  • Architect and develop data driven map
  • Conceptualize, Model, paint, rig and animate soft skinned low poly characters
  • Model Environment and static meshes
  • Implement terrain following and test animation cycles
  • Implement Camera and selection/manipulation system
  • Implement swarm movement
  • Begin Character AI and battle system
  • User test and iterate prototype followed by massive tweaking
  • Assess network play implementation
  • Menu system and assess cinematics possibilities

 

Schedule:

  • 16th Feb: Initial brainstorm
  • 26th Feb: Brainstorm and pitch preparation
  • 2nd March: Formal proposal meeting
  • 15th March: Art Freeze
  • 20th March: Camera and selection
  • 25th March: Begin Character AI and Battle System
  • 06 Apr: Milestone 1: Playable game prototype (map and player moving) checked in to CVS along with web page update.
  • 06-20 Apr. Fix Bugs and Iterate...Tweak like crazy...Assess Networking and Cinematics
  • 20 Apr: Milestone 2: "Feature-complete" game, all major functionality in place. Checked in to CVS along with web page update.
  • 5 May: Complete the game and package
 
Milestone II

DEMO!

Screen Shots:


Flocking AI


arbitrary terrain following / navigation


more vflocking

 

Work Done:

Art:
Custom Character Models + Textures + animations

Sound:
Original background music
Basic SFX

Programming:

Flocking movement
3D Selection
Character animation
Character framework for multiple units of different types for two players
Resource management
Selection Halo projection
Shadows

Work Remaining:

Art:

Animations
Missionary model and texture
Terrain Model and texture
Static world objects (trees, buildings, rocks)

Sound:

Sound fx
Music

Programming:

Battle system
Enemy AI
Effects for spells, attacks, explosions etc.

Timeline:

May 1 All animations, models and art assets + Begin work on spells, attacks and effects
May 2 Begin Battle system and complete all sound recording
May 3 Begin AI
May 4 Battle System Iteration 1
May 5 AI Iteration 1
May 6 Battle System Iteration 2
May 7 AI Iteration 2
May 8 Testing and final art touches
May 9 Testing

 
Post MORTEM

Overview

Concept:
Godblaster is a networked two player real time strategy game.
Each player has his own religion and must confront the opposition by exploding, manipulating and annihilating any resistance to see who God loves most.

Units:
Missionaries help convert the opposition
Suicide bombers self destruct and kill the opposing units
Religious leaders heal ones own units’ faith and stop them from converting

All these actions are based on proximity. Units can attack in many to one fashion as well. Selection is based on range of influence of a 3D selection halo which means you always select a “flock” of units and they move in a cluster.

Features:
80 animated characters on screen at one time
Peer to Peer network gaming
Soft skin animation
Effects using lens flares, halo effects, a particle system, shadows and swirl effects
Original background score featuring Godblastin’ choir and custom sound effects
Multitextured terrain and data driven 3D trees
Selection halo and animated arrows showing direction of motion
Heads up display showing score
Faithbars and unit conversion
Suicide bombers, healers and converters

User Controls:
To move units just click on them and click again to move them to that point
To move the camera use the keys w, a, s, d, r and f
Keep spacebar pressed and move your mouse to change your look direction

Development Summary:

Code:
Files and their meaning
camera.cpp and camera.h :
- Camera control
Character.cpp and Character.h
- Resource manager for all the characters. Contains multiple instance of Fundamentalist, Leader and Missionary
- Rendering models with animations based on team and character variations allowing to play more than one animation on the same type of characters
- Looping and playing animation
debugHelpers.cpp and debugHelpers.h
- Debugging and printing debug stuff
directionArrow.cpp and directionArrow.h
- When you click to select arrows appear to show you direction in which you will move your characters until you click again and select destination
Fundamentalist.cpp and Fundamentalist.h
- To handle asset loading, rendering and animation for the religious fundamentalist
- Looping and Playing respective animations
fx.cpp and fx.h
- For animated alpha blended geometry used for effects
healthbar.cpp and healthbar.h
- To show the “faith” bars above the characters
hud.cpp and hud.h
- to show a heads up display with score
- Input- to handle keyboard and mouse
Leader.cpp and Leader.h
- To handle asset loading, rendering and animation for the religious leaders
- Looping and Playing respective animations
lensflare.cpp and lensflare.h
- Renders the alpha blended lens flare
logicGrid.cpp and logicGrid.h
- Contains and invisible grid that the characters occupy
- Imporant to the flocking
main.cpp
- OpenGL initialization
- Program entry point

Missionary.cpp and Missionary.h
- To handle asset loading, rendering and animation for the missionaries
- Looping and Playing respective animations
newtorkInput.cpp and networkInput.h
- Sends and receives game inputs across the network
particlefx.cpp and particlefx.h
- Particle Effects code
player.cpp and player.h
- Maintains units for each player
- Instantiates the unit class for the units
skybox.cpp and skybox.h
- Sky rendering
Sound.cpp and Sound.h
- Sound resource manager using Fmod
taunts.cpp and taunts.h
- Taunt text rendering… implemented but not used
terrain.cpp and terrain.h
- Generates and renders multi textured terrain from an image file
- Also renders the selection glow that wraps on the terrain
- First we tried to use projective texturing for this but ended up just reconstructing selected regions of terrain, raising them and alpha mapping to create the selection glow
- The 3D character selection code also lies in here and uses ray poly collision
- The terrain hugging code is also in here
textureManager.cpp, texturemap.cpp and textureManager.h, texturemap.h
- Resource management for all the textures…we only use Raw files
- Alpa blended images are allowed
timeKeeper.cpp and timeKeeper.h
- Manages the clock in the game and synchronizes everything for frame rate independence
titleScreen.cpp and titleScreen.h
- Renders the title screen
tree.cpp and tree.h
- Reads an image file and generates 3D trees in an area based on the image adding random features and positioning to the trees in that area
units.cpp and units.h
- Manages all the characters on the screen, changes in their states and all pertinent information
- Handles rendering of shadows
usefulUtilities.cpp and usefulUtilities.h
- just some rounding functions
vectorpops.cpp and vectorops.h
- Simple vector operations
world.cpp and world.h
- Where most of the stuff happens, main rendering loop
- All initialization

External libraries used:
Fmod for sound
Cal3D for character animation

Content:
Models ( made with 3DS Max and Maya): Missionary, Leader, Fundamentalist, Tree
Textures: for all the models unwrapped with Deep Paint and painted with Photoshop
Animations: Walk and Idle cycles for Missionary, Leader and Fundamentalist
Terrain: Multitextured terrain generated with terragen and textured with Bryce
Skybox: Generated with Bryce
Textures: Alpha blended images for arrows, lens flares, particle effects, taunts, selection halo and other effects.
Level Data: A black and white image indicating the regions that must be populated with random trees
Original Music: Custom sound effects, recording and original background score and live Godblastin’ Choir

 

Key Technical Challenges:

1) CVS merging is horrible
2) Character Animation: Cal3d catered to most of our needs except that its not efficient for playing different animations on many characters
3) Networking: Kyle handled this extremely well by building a robust and well synchronized system with regular sync-updating

Reflections:

Things that went right:
1) 3D selection, terrain rendering and character flocking code
2) Artwork and visual feel of the game as well as sound and music
3) Networking and character animation code

Things that went wrong:
1) We couldn’t do a full feature demo because we couldn’t set up networked windows machines for the demo outside the ETC network
2) Did not get enough time to iterate on the gameplay
3) Too much time spent initially on researching projective texturing

Three things to do differently:
1) Begin to research visual effects earlier
2) Implement gameplay much earlier
3) Be more prepared for setting up a networked demo