Veiled

Veiled is a survival horror game project with many experimental features. The story is set to take place over the course of one night during the industrial revolution, on an island shrouded in mystery where some things just don’t seem to be quite right. The player’s objective for the night is simple: survive until morning and then get off that island as quick as you can.

This was developed as a student project with a team of ~10 people. It was initially planned to be built on the CryEngine, the main reason behind that being its shiny graphics and the coder’s joyful anticipation for being able to code in C++.

Well, that was the plan… but thanks to that engine’s completely and utterly disastrous documentation and support (or lack thereof) and many technical issues (very picky asset importer; engine will not start without internet access; if CryTek’s servers are offline you can’t use the CryEngine) we later decided to switch to the UDK, which (except for our level designers) everybody thought to be a pretty awesome move.

Unfortunately the project turned out to be a little too ambitious for the small team and little time we had and changing the engine halfway through didn’t help exactly.

Anyway… to my contributions to the project. First off, the work done in the CryEngine (which unfortunately was lost in the move as it couldn’t be reused with the UDK). This was mostly done in C++ and a little bit in LUA in about one month.

  • Boids: Flocking system to simulate groups of many small animals. Built to replace CryEngine’s built-in system because of its limitations (only works on even terrain, clipping through walls, etc.).
  • Monster spawning system: Intelligent placement of monsters at runtime to avoid the player seeing them “pop up”.
  • AI Senses: Additional sensors to be used by some AI characters to track the player (among others a sense of smell that would allow AIs to follow the path the player took for some time after he left).
  • Small utility classes for the game designers.

And here’s some pictures from the CryEngine project:

 

 

Now to the UDK part of the project. Here most of the work was done using UnrealScript and some ActionScript 3 with Scaleform for the UI. This took place over the course of about six weeks.

My main responsibilities were:

  • Menus and user interface functionality using Scaleform and ActionScript 3.
  • Full body visiblity in first person view (by default, UDK will only show floating arms in first person).
  • Boids (again)
  • Custom Health, Stamina and Damage system with hit zones.
  • Fully featured item inventory system to support handling and combining multiple items at once (UDK’s default inventory system only supports one active weapon at a time. Thanks to the extremely heavy coupling between the supplied default UnrealScript classes this meant rewriting all inventory related code from scratch.)
  • Weapons and Items for said inventory system.
  • Scripts for interactive objects (breakable objects, opening doors, switches, etc.)
  • A rain shader that would stop rain from falling through roofs.
  • Again, lots of small utilities for game designers.

And here’s some visuals: