Cave of Shadows

GAME CONCEPT

Janitor Squad is currently developing our next game project, titled Cave of Shadows. The game is a 3D first-person survival horror experience with a unique cel-shaded graphical style. The player is trapped in a dark cave (through whatever horror-movie staple plot device fits best) and must find his way out. However, there's a catch -- the cave is inhabited by dark, frightening creatures that pursue the player as he wanders. The player has no weapons (only possibly a flashlight) and must run away for the first section of the game until he finds an ancient relic which banishes these creatures to an alternate dimension. Apparently safe, the player continues through the cave until he reaches a dead end or insurmountable obstacle that can only be passed by transporting to the alternate dimension -- the same one that contains the banished creatures. This flipping between dimensions is a core part of the gameplay, as the player must navigate back and forth in order to escape enemies and continue through the large cave.

The game was initially conceived with no HUD, health bar, or other on-screen notifications - the player will be informed through visual cues about when enemies can be banished, how close they are to death, and so on. Damage is handled via a "Call of Duty" type system where players only die if they take too many hits in a short amount of time. Players will also be able to save their progress at certain checkpoints. The alternate dimension will have an identical layout as the original, with slight differences in geometry that may allow the player to trap enemies and buy some time.

After reaching checkpoints, players may have new story elements introduced that explain more about the player, the cave, or the enemies. An underlying narrative will increase player immersion.

DEVELOPMENT

Since the second project gave us more freedom, we decided to pursue the challenge of creating a 3D game. We also decided that we wanted it to have a unique look and style - to achieve this, we opted to cel-shade the graphics in the game. Initially, the interest in a 3D cel-shaded game was really all that the development team had to go on; there was no real concept of story or even game genre at the start of the project. Finally, we had to tackle the issue of which development environment to use. Some of Janitor Squad wanted to use OpenGL and Visual C++ to create the game, and others wanted to use XNA and C# again.

Early tests with both development environments were neck-and-neck until the discovery of the XNAnimation library for XNA Game Studio. The single biggest problem facing the game was how we were going to handle enemy animations. Prior to this semester, no team had been able to successfully include skeletal animation in their game. Janitor Squad was able to modify this library to take in our own custom content created by our artist, thus opening up the door to full skeletal animation support for our game and full-speed-ahead development in XNA.

Even with that problem solved, we had yet to settle on a concept or game type for the game. After a few meetings, Chris and Josh had the idea of an alternate-dimension game mechanic where players could transport back and forth between realities. Josh happened to be working on modeling cave geometries as part of another studio project, so we thought the best way to integrate that with the initial game concept was to pursue a cave-based survival-horror game with paranormal elements. This game would be informed by other survival-horror titles like Dead Space, Silent Hill, and Resident Evil, and would incorporate influences from shooters like Bioshock, System Shock 2 and Wolfenstein.

Dead Space Resident Evil

Silent Hill System Shock 2

Wolfenstein Bioshock

As with the first project, development was planned out over a series of four milestone dates. Each milestone contained a breakdown of tasks to be accomplished over a particular period. The milestones for Cave of Shadows are listed below:

MILESTONE 1 (12 March) - animated enemy model moving on test cave floor with player free to move in the environment.

This milestone was rather vaguely defined, as we had initially thought of our milestones as "umbrella" statements that would imply other work to be done underneath. For example, in order to achieve this particular milestone, we had to:

  • successfully import an animated enemy model into the game (which turned out to be far more complicated than the team had initially envisioned)

  • successfully import properly-scaled cave geometry into the game

  • implement a player-controllable first-person camera system

  • establish collision detection between the player/enemy and the cave floor

All of which provided us a lot of work to do just to make one sentence true! In the subsequent milestones we tightened up our definitions and weighted the various tasks to be accomplished according to their importance to the game.

MILESTONE 2 (31 March)

  • Gravity/physics - the player moves in a more realistic, parabolic manner when jumping or moving over geometry (30%)

  • Navigation mesh - provides the AI with a valid search area for movement that is more flexible than placing waypoints. It will utilize the existing collision mesh in a simplified form (15%)

  • One player attack - the player will press a button on the controller/keyboard to unleash an elemental attack which will be represented by particle effects. The attack will collide with any world geometry it comes into contact with (25%)

  • Cave graph - the underlying data structure that will allow the entire environment to be loaded and drawn in the world space as a connected graph. This means that we can determine which pieces of the cave need to be drawn based on the player position. It also matches entry/exit points between level pieces so the player can’t “glitch” out of the game when moving from one piece to the other (10%)

  • First enemy modeling and animation complete (20%)

The second milestone involved a lot of framework-building. In order to allow our core game mechanics to exist, we needed to establish how our levels were built, how our enemies would navigate, and how the player would interact with the environment. We achieved all items listed in the milestone on time.

MILESTONE 3 (16 April)

  • Large main cavern geometry complete - the game will feature a very large cavern that the player will come across early in the game. This will provide a sense of scale and establish the enormity of the player’s task to get out of the cave (15%)

  • Enemy AI - enemies in the game will make use of the navigation mesh (see previous milestone) to search for a valid path upon which to move. They will have several states – idle, pursuit, attack, and weakened. Each state will have a different visual indicator (animation or shader) so the player can tell what the enemy is doing (20%)

  • Damage/combat system - when an enemy is in the ‘attack’ state and finishes an attack animation, if the player is within certain proximity they will take damage and a visual indicator (blood texture) will show on the screen. Damage is “Call of Duty”-style: if the player takes too many hits in a short period of time, they will die and be sent to the last checkpoint they encountered. The player can damage enemies with the artifact/gauntlet that they carry, launching elemental projectile attacks. Damage for enemies is “Pokémon”-style: when they are hit a certain number of times, they will be in the ‘weakened’ state and the player can then use their “banish” move to send the enemy to the alternate dimension (20%)

  • 2nd enemy model complete - rigging and animation may not be completed and the character is not actually in the game yet. The geometry for the model will be complete (10%)

  • Teleporting/dimension-hopping - this implies that there will be alternate geometry complete for the player to teleport to. When the player reaches certain points in the cave, they will be unable to proceed unless they teleport to the alternate dimension. There will be a transitioning effect when the player teleports and the alternate dimension will be filtered or shaded differently so that it is obvious to the player where they are. The teleporting ability will only be allowed in certain areas (the player cannot teleport back and forth at will) (20%)

  • Player hand model - geometry will be complete for the player’s hand, which when placed in the game will be visible from the first-person perspective (think Bioshock). The hand will move when the player walks or attacks (this will be controlled programmatically) (10%)

  • Dynamic shadow - shadow-mapping using omnidirectional dynamic lights (5%)

This milestone was a huge amount of work for everyone on the team. Josh had to generate a lot of art assets (hand model, 2nd enemy, cavern) and the rest of Janitor Squad had to write an enemy AI and actually implement the things that make Cave of Shadows a game instead of merely a tech demo. Josh and Sam grew more confident in writing our custom shaders, and came up with a very cool transitioning effect for when the player switches dimensions. Due to time constraints (and difficulty level) we did not even begin to implement dynamic shadow in the game.

MILESTONE 4 (30 April)

  • Game saves/checkpoints - when the player reaches certain parts of the game, a checkpoint will be triggered automatically. If the player dies before reaching another checkpoint, they will restart at the last one they encountered. Player and enemy positions at the checkpoint will be written to a file. The game can then be loaded from the last checkpoint encountered by choosing an entry in the “load game” screen in the main menu, which will read from the save file and place the player and enemies in their appropriate positions (30%)

  • Game audio/music - enemy noises, sound effects for attacks, player noises, game music, menu sounds, environment sounds (20%)

  • Final level geometry complete - all cave areas (including the alternate dimension) modeled and mapped out in the game. All the necessary collision meshes will also be present (30%)

  • Story elements complete - the player will be given little information at the start of the game. They will come across clues at checkpoints that will reveal more about what is happening in the cave. These clues will most likely be environment-based, though some narration may be incorporated to heighten immersion (20%)

At the completion of this milestone, Cave of Shadows was supposed to be basically complete and ready to play. However, not all of the elements that we finished had actually been put in the game. Some of the audio needed tweaking, the distinctly-mapped checkpoints (at which story narration will be shown to the player) had yet to be defined, and the final enemy needed to be placed at the end of the cave.

COMPLETION

There were a few things that we had to leave out of the game, mainly in the interest of time - the player's hand, the second enemy model, and various hand-placed static light sources. The hand was giving us scaling issues, the second model's weight painting was a gargantuan task, and the light sources were nixed simply so that we could put together all the pieces the game needed to be playable. Feedback from members of the gaming industry was positive and very helpful in evaluating the success of the game. All in all we think Cave of Shadows is an ambitious, atmospheric, technically impressive experience that was well worth the many hours of sleep lost to develop it.