Interim Report - Game Programming Lab '11
Group members: Daniel Bucher, Etan Kissling, Jan Rüegg, Francois
Team 2: Reign of Darkness
Progress
Functional Minimum
100% done
3D environment
done.
However, the maze generation is not yet that much sophisticated.
Main problem was doing a proper collision detection which can be used later.
Player lights
done.
Used a billboard technique to visualize them. It produced a quick result,
however, this was not satisfacting and will be replaced by another shader
if technically possible.
For lighting, simple phong shading is used. Specular part is somehow buggy
since the shader compiler has problems with the number of arithmetic operations. It always tries to unroll loops and takes 5 minutes
of Visual Studio freeze when you change a variable from 1.0 to 0.1. Adding
[unroll(2)] comments lets it compile more often, but produces warnings that
the attribute was ignored
Free moving in 3D
done.
Had severe problems with finding proper controls which do allow the player
to move away from missiles (up / down / left / right) and shoot at the same time.
Thanks to some friends who shared their opinion over the controls with us.
New controls are:
[LEFT STICK] : forward / backward, right / left
[RIGHT STICK] : pitch / yaw
[LT] : down
[RT] : up
[A] / [DIGITAL LEFT] : roll left
[B] / [DIGITAL RIGHT] : roll right
[LB] / [RB] : shoot
Collect lights
done.
And if you lose light, your light intensity in the lambert shader also decreases.
Simple game menu
done.
And also gave us a free help screen :-P
Restart functionality is still missing.
Simply press [START] on all controllers who want to play, then [A] to start the deathmatch.
Understanding GIT (new target)
done (partly).
We had the problem that a person of us actually managed to break his SVN client
by not properly using it
hint. The consequence was not to simply recheckout
and don't trying to bug it anymore, but to use git instead. Git is pretty nice, since
it takes you 2 hours for an initial checkout and you run into problems with certificates
and all ugly things that you combine with the word "encryption" and it gives you - hmm -
no? - advantage.
Low target
100% done
Multiplayer
done.
Split screen multiplayer. What's still missing is to dynamically adapt the screen sizes
based on how many players are still alive.
Shooting
done.
You only have one missile gun currently. The missiles have the same model as players and
collectibles. Maybe will change later, but it is okay to run into a light orb in hope
of gaining 1 life and then realizing that it was a missile :P
Maybe later, you have two guns, one for the right button and one for the left. Or one that
you can charge up by holding the button for a longer time before release.
Or a lag-gun which creates several 1000 objects per second to make the garbage collector
invoke multiple times and make the game crash - for when you're loosing and when you are
a bad loser!
Desired target
Work in progress
Players can enable/disable environment lights during the game
NYI
Environment Lights
NYI
Graphics improvements (new target)
WIP
Volumetric lights
Thanks to notabene on the game development stack exchange, we now know about a technique
to make our lights look better using volumetric materials. We simply shoot a ray to each light
from each pixel and collect all light intensity over 100 steps - checking for shadows on every
position. Hoping that xbox will be soft with us

Shader compiler is already not and
Etan fails at linalg in the vertex shader, making the new lights look somehow strange
(they are at the wrong position and have strange shapes, like a light beam once...)
Billboard Lights
Because we have many lights (for players, collecting, shooting), it would create a very high polygon count to have sphere models for all of these. Instead, we decided to use a simple billboard technique combined with alpha blending to achieve the effect of volumentric lights in a very simple way:
What you see on the image are the billboards, that are always rendered to directly face the respective camera. In the real game, all the red regions will be transparent (as you can see in the game screenshots). Also, with this technique the lights are correctly rendered respective to the z-buffer and depth of the other objects, so that lights are only seen when they are not occluded.
Shadow Mapping
We already did some experiments on shadow mapping. After implementing basic shadow maps, we tried using two techniques for better shadow maps:
Variance shadow mapping
[[http://www.punkuser.net/vsm/][Variance shadow mapping] is a relatively new technique to do soft shadows, that gives much better results than the previously used technique "percentage closer filtering".
As you can see in the screenshots below, the implementation is quite fast and we were already able to render a good shadow map for a single (non-point) light source in real time on the Xbox 360.
Paraboloid shadow maps
At first, we thought of using dual-paraboloid shadow maps to create the maps for our omni-directional player light sources. The advantage of that is that we only need two shadow maps per light source instead of the 6 of cubic shadow maps. After first tests, however, we concluded that this was not a good representation in our game: Because of the linear interpolation in the pixel shader, dual-paraboloid shadow mapping leads to round shadows for straight edges if the tesselation of the scene is not high enough. But because we create the whole scene by hand, and use for example really big triangles for walls to save computation time, this was a bad property.
Instead, we think that cubic shadow mapping with a really simple geometry of the came should be more efficient than dual-paraboloid mapping with an artificial increase in Polygons.
Results
Here are some of the results we got. However, because the cubic shadow maps are not yet currently implemented, we disabled shadow maps for now in the current alpha release of the game.
Before using the Volumetric shadow mapping technique, the shadow mapping suffered severe artifacts depending on the resolution and the angle between surface and light:
Maze
WIP
Better level generation
Maybe levels from different hand-made blocks
Levels where you don't have to rely much on the roll controls since they aren't that easily
accessible anymore.
Extended Game menu (game modes)
NYI
And restart functionality.
And options to switch between controls
High target
Not yet implemented
Players can change color of environment lights and own light
NYI
Introduction movie
NYI
Extended Shooting mode
NYI
Extras
Not yet implemented
Stereoscopic 3D renderer
NYI
Mirrors
NYI
Destructible walls
NYI
Network Multiplayer
NYI
Screenshots
- Screenshot.png:
- Screenshot2.png: