Monday, May 7, 2012

Smooth Sensation

The shader for characters and projectiles now approximates motion blur.  This is achieved by approximating the effect of a much higher framerate than possible.  The transformation matrices of the current and previous frame are interpolated and used to draw each character transparently 5 times.  No z buffer writing is used, which allows the 5 draws to combine and fortunately Unity can draw transparent objects in back to front order.  If the game is running at the full 60 fps, this means that a 300 fps presentation is simulated.  Projectiles in particular look better since they move the fastest.  The effect can be seen just by spinning around though.  Another implication of this technique is that no character is fully opaque.  However, I think I like this look better, particularly for the tetrahedron shaped enemies.  I made a couple of other changes as well, such as reducing the trigger range of the player's attack so that you have to get closer to enemies.

You can see the effect in the video, although the actual game is a bit smoother, assuming your PC has the specs.

Video:



Download (Mediafire)

Saturday, May 5, 2012

Play Misty For Me

I changed the fog implemented by my shader a little.  Instead of constant fog everywhere, there is only a mist along the ground.  This seems to look a little better, adding an extra detail to the view as well as an extra height cue.  Things above the mist still fade to black.  I had to put a large plane in front of the player camera to render the mist when there are no objects around.

Video:




Standalone Windows Download (Mediafire).  I'm only providing a standalone link this time since the Webplayer performs slightly worse, even on my relatively new system.  Edit: Fixed the link.


Thursday, April 26, 2012

First Post

This blog has been started to show the development of my Unity game, Scapes.

I wanted to make a game that featured full freedom of movement across an open landscape, in a more abstract style than most games feature.

The player can fly and move along any axis in a similar manner to Descent.  Although the environment is open, gameplay is kept within a fixed area.  This is accomplished in the vertical direction by having downforce that increases the higher the player and NPCs go, further upward movement eventually being impossible.  Movement in the horizontal direction is limited by simply having a small world.  If the player travels far enough they end up back where they started.  This prevents endless wandering into empty space in a more elegant manner than simply using invisible walls or an enclosed arena.


The map is based on a simple plane with plateaus added.  This made it easy to script NPC movement, who simply have to fly upwards if they don't have a line of sight to their target.  Various landmarks and decorative objects were added.  For a simple design and retro look, almost everything in the game is drawn in flat polygons using a simple shader which alternates between 2 colors based on angle to the camera and a normal map.


Although a flying game, the player uses a melee attack.  This forces the player to get close to enemies and use agility for successful gameplay.  However, landing a melee attack in a fully 3D environment would be difficult, so it automatically triggers when an enemy is within striking distance.


There are both friendly and enemy NPCs.  The player wins when all enemies are destroyed.  Friendlies and some enemies respawn from generators.  Protecting the friendly generators is valuable to prevent a mass of enemies attacking the player individually.  Each generator can support 5 NPCs, and a new NPC spawns after one is destroyed.  There are also birds, which are neutral and can't be damaged, but are sparse and hard to find in the current version.

The following video shows some gameplay.  Initially I protect the 3 friendly generators from a rush of enemies, then go out and destroy the enemy generators.  All enemies are destroyed and the level restarts, since there is no level 2 to load.


Use the following links to play the game yourself:

Play in Browser (Unity plugin required)

Download Standalone Version for Windows

If you try it in browser, you need to use full screen mode (right click the game screen).

Controls:
WSAD - Slide
QE - Twist (Useful if you're upside down and don't like that)
Left Click/ Right Click - Move Forward or Back (Initially unintuitive, this works well for a game that needs controls allowing for 6 degrees of freedom)

Feedback is appreciated.