| 
Introduction
After
Orion Lander, I felt it was time to move into OpenGL's 3D capabilities
fully. I think ground textures are the lamest thing in modern games.
We have all this fantastic hardware, and yet we can't render some
decent blades of grass? I wanted to prove to myself that a field
of grass could be created, and rendered in real time. I'm pretty
happy with the result; it even sways in the wind! Sure it's not
exactly photo realistic... But if I can get this far as one man
in a few days of hacking around in my first 3D app, I don't see
why experienced 3D programmers can't nail this effect.
If I
did it all again, I could improve it dramatically in the following
ways:
- Multi-polygon
blades of grass (so they can bend and droop like real blades of
grass)
-
Color shift from base to tip
-
Package grass blades into clumps to form more realistic vegetation.
- Leafy
textures, although grass doesn't have much of a texture.
-
Rather than caching the whole world's grass (which is dog slow),
just cache grass in the players visual range (could easily have
real-world density in real-time)
Concept
Players
will hover in an helicopter-like vehicle above a virtual 3D terrain.
The ship’s design is unique in that the fuselage is suspended
from an array of maneuvering thrusters by “elastic”
cables. The “mountainous” terrain means the player will
have to navigate around it skillfully, without crashing, as collisions
will be detected. There are a number of hostile gun batteries that
will fire if players get too close. If hit, the player’s ship
incurs damage, and will explode if too much damage is suffered.
The player’s ship also has weapons, which it uses to eliminate
all of the gun batteries on the map.
Game Features
Terrain
- Read in external
height map file (I made this terrain and generated the file)
- Calculate average
normals per vertex to provide smooth shading
- Use CallLists to
speed rendering (mesh cached on video card)
- Randomly generated
grass to make ground more interesting
Particle Effects (general)
- Different color modes
and type (Smoke, thrust, etc.)
- Particles can change
colors and alpha level over their lifetime.
- Particles have realistic
velocities. (Gravity is trivial to enable, but is not used)
- Ability to tweak
the dispersal variance to produce fountain-like effects
- Particles used for
ship thrust, engine smoke, rocket trail, explosions, and steaming
wreckage
Ship
- Players move by changing
the pitch, roll, and rotation
- Players can change
the speed of the rotor to change vertical velocity (the speed of
the propeller actually reflects this)
- Main fuselage hangs
by "springy" cables.
- Targeting moves with
actual fuselage body (which is often swinging)
- Ship can fire rockets
to destroy enemies
- Pitch and roll adjustments
cause maneuvering engines to thrust (generate particles)
- Ship fades blacker
and blacker as damage is sustained, eventually exploding
Camera
- Camera follows ship's
rotor assembly (including orientation)
- Players can change
the camera's vertical angle to look up or down at the ship
- Players can also
view the ship from the closest turret’s perspective
Turrets (enemies)
- Turrets rotate their
barrels towards the player (both vertically and horizontally)
- Intermittent firing
with velocity variance when in range (otherwise too precise and
deadly)
- Turrets explode after
one direct hit
Smart Rockets
- Explode near ship,
terrain, or turrets
- Explosion uses brief
particle effect
Other
- Linear Fog to "hide"
camera cutoff. Adds to game "polish".
- Sky texture to make
the world more realistic
- Player can only fly
around a subset of the terrain (prevented from getting to the terrain
edges)
- Things like grass
density or viewing distance can be easily adjusted in game code
Videos and Screenshots
Highlights
Quicktime Medium Quality (with music)
Highlights
Quicktime Low Quality
Continious
Clip 1 Quicktime Low Quality
Continious
Clip 2 Quicktime High Quality
Continious
Clip 2 Quicktime Low Quality
Go
to Home Page
Go to Projects Page
|