JelatiNation
Victor Cepeda
Kurt Loidl
Daniel Salinas
Download JelatiNation
Win32 Binary with Game Assets (13 mb)
Since JelatiNation makes heavy use of pixel shaders throughout, an OpenGL 2.0 compatible video card is needed. We developed and tested the game on a nVidia 6800, ATI 9700, and an ATI 9800 Pro. ATI cards require the Catalyst 4.11 drivers if you want anything resembling performance.
Game Introduction
JelatiNation is a Real Time Strategy game in which 2 teams
of Jellies fight for control of a city. Teams start with one
of three colors (red/blue/yellow), which come with certain
inherent ability bonuses (attacking power/speed/toughness, respectively).
Jellies are generated at the main base (a larger jelly). More
colors can be acquired by capturing "paint factories" within the
city, and resources with which to build jellies can be acquired by
capturing sewers. To gain control of a paint factory or a sewer,
jellies must sacrifice their health to encompass and absorb the target.
The more jellies that are used, the faster the target will be acquired,
but at a larger cost.
Jelly Colors
Once two or more colors are under a player’s control, secondary
colors (orange, purple, and green) can be created. These secondary
jellies gain the abilities of their two respective primaries, but become
much weaker when attacked by a primary of the opposite color. For
example an orange would be more powerful and faster, but would
take heavy damage from blue jellies.
The color relations are as follows:
- Red + Yellow = Orange (Weak vs. Blue)
- Yellow + Blue = Green (Weak vs. Red)
- Red + Blue = Purple (Weak vs. Yellow)
If all three are combined, a powerful Black jelly is created, with a
special ability that will be described in the next section.
JELLY PATHS
The principle gameplay mechanic is the idea that, like a slug, the
jellies leave behind a trail made up of their own life force.
- Jellies lay down paths by dropping small parts of themselves.
Because they lose part of themselves, the jellies will take damage
when leaving a path.
- Jellies of the same color can move on paths of that color and
avoid this health penalty. Additionally, they will move faster
on that path.
- Secondary jellies can move on paths of either of their primary
colors, but take damage when moving on an opposing color’s path.
- Paths are NOT team specific. Blue jellies from team A can move
on blue paths left by team B and receive all relevant bonuses.
- Black jellies are special in that they do not leave paths or take
damage from paths. Instead they destroy any paths that they walk on,
making them a very powerful opponent indeed. However, the cost of this
power is that their health slowly drains. Luckily, it can be replenished
by walking over a path.
Screenshot Gallery:
Graphical Features:
On Screen Control Panel – The HUD (Heads-Up Display) is made up of three parts. On the left is the Mini-map, which displays the relative locations of important objects in the city, such as buildings, jelly bases, and the jellies. In the center is a pane to display information about your current selection, whether it be a jelly or a base. The pane on the right is a set of context sensitive controls, that will change depending on your selection. If a jelly is selection, order such as attack, move, and hold ground. If a building a selected, the user is able to control the production of jelly colors by toggling on red, blue, and yellow components to add to the mix.
View Frustum Culling – We cast rays at the corners of the view frustum, and intersect them with the map. Using theses points in the world, we are able to perform a 2D scan-conversion algorithm to find the "polygon" of visible terrain data. We then exploit the fact that there is an "entity" map of the world, that contains the locations within the grid of every jelly and building to draw only those entities on the “visible” map. Because the actual drawing of the converted polygon is direction independent, we can scan from left to right or back to front, to perform a rough z-ordering for transparent objects.
Procedural and physically - based modeling – Jellies are modeled with a complex set of procedural transformations, beginning with a set of concentric rings. These rings are then "warped" transformed to create all the effects you see in the game (from pseudo pod like action to head-butting tilts). Keyframes for these animations are pre-generated to insure that the complex models will be able to insure that the complex models will run in real time.
Level of Detail Control – The modeling technique used to create the jelly models allows the mathematical model to be sampled at different rates. We used this to generate 4 levels of detail of each model, which we were then able to switch between based on camera location to conserve polygons when they are not needed. This switching is able to happen on the fly as a result of a very robust animation handler which makes it possible to switch between different levels of detail at any time and not interrupt the current animation in progress.
AI – Each jelly is smart enough to attack any enemies that are in its immediate vicinity. Additionally orders given by the user (to either follow other jellies or attack certain enemies or locations on the map) are converted into movement orders for each jelly through the use of a modified A* algorithm. This A* algorithm causes the jellies to attempt to use paths when convenient, although they will not go out of their way if it means disobeying a users order
Pixel Shaders – Every surface in the game is rendered with customized pixel shader technology written in GLSLang for OpenGL 2.0. Some of the effects that come from this are bump-mapping on buildings and ground, the slimy transparency of the jellies, and the dynamic textures used for the HUD. In addition to this, pixel shaders are used in somewhat unconventional ways to control such things as visual "toggling" in the orders control panel (with the entire panel implemented in a single pixel shader), as well as
Future Work:
While this site serves as an archive of what we accomplished in one short month, development of JelatiNation will continue. If you're at all interested in the gameplay mechanics behind the graphics engine, please visit our current site to see how the game shapes up.