Dev Diary: River's End
Apologies for the lack of updates, it's been a crazy month. Even with all the madness of work, I have had some spare time to work on my private game project. I've been using this to keep my game-dev/c# skills sharp as well as to "feel the pain" of my customers. Though to be perfectly honest, there's been very little painful about my development experience so far. Working on this game has taken over my usual leisure time. Not necessarily a bad thing, as I've been burning out on my usual MMO time-sinks.
Most of the changes I've been making have been in the interest of preparing for a major content update. I have some final graphics features to add before I'm ready to begin adding levels to the game. Then it's content time -- I've got 25 levels specified and I'm shooting for 100 levels in the final game. Why so many? Well for one, they're pretty easy to develop now -- they're written entirely in C# similar to a script. I've fleshed out a huge number of helper functions and classes turning c# into an effective design language for making levels. I have a few more features before my Content Bash where several levels will be added and the game prepared for play testing.
Gameplay concepts have solidified nicely. I'm moving away from an ambient game to more of a puzzle game format. Each level will have a objectives which the player must discover through a combination of trial-and-error and visual cues. The visual cues are intentionally elaborate, designed to inform the player using a "warmer/colder" heuristic.
The game itself features paper lanterns floating down a river. You play the part of a river spirit that must extinguish these lamps with its breath, releasing many flavors of "ghosts". Some ghosts are simply harmful. They'll swim through the sky and attack you if you get close enough. Other ghosts have more complex functions, such as seeking out other ghosts or altering your abilities when "caught". Your inputs are your breath, your movement controls, and a simplistic "action" button that is context sensitive in each level.
Let me give you an example of some levels (SPOILERS!):
Level 1: Tutorial -- The first level is a simple introduction to the controls. There are several colors and shapes of lamps floating about. One of them stands out from the rest and will spawn helpful ghosts that will seek you out and help you progress toward your goal. All other lamps will spawn evil ghosts that will rapidly eat up your health if you get too close.
Level 9: Sea of Light -- This level spawns one color of lamp though it will spawn one of two kind of ghost. The first will slow you down and moves randomly. The other is a slow moving but dangerous ghost that can destroy you if 10 or so catch you. A visual cue will get more intense as you spawn each ghost. It's a hint to let you know that the goal is to spawn as many ghosts as possible while never stopping. The key is speed -- once a certain number of ghosts are spawned (currently the number is 250), you win the level.
Level 5: The Display -- And easy level with a cool visual effect. There are three spatial "regions" of lamps. The first two spawn harmless "firework" ghosts that lazily wander around the river. The center line of lamps spawns "hunter" ghosts, which chase down other ghosts. When you spawn a hunter and there are unexploded firework ghosts about, they chase down a firework ghost and cause a firework-like explosion! The goal is to cause a huge fireworks display to move on.
The total time spent in May has been about 65 hours.
Features added in May
- Menu & Text System
- New Level loading & scripting system
- Area Fog
- Improved Water with Fresnel
- Local light sources
- River Bed
- Ghost Effect (image space accumulation with blur and falloff, gives the ghosts a spooky "tracer" effect)
- Breath distortion effect
- Transition effects
- Skybox improvements
- First-pass batching improvements
- Alpha and rendertarget re-ordering to support necessary graphics effects
- All-new audio engine & first music & ambient tracks laid down
Features to add before Content Bash
- "Light Globe" progress heuristic (est. 2 hours)
- "St. Elmo's Fire" progress heuristic (est. 6 hours)
- Transition Engine (est. 6 hours)
- Input Engine Revamp (est. 4 hours)
- Improved Chase Camera (est. 2 hours)
- Force Feedback (est. 1 hours)
- New Player Geometry, Lamp Geometry, & additional Lamp shaders (est. 25 hours)
- Level-Dependant graphics settings plumbing (est. 4 hours)
- Particle Engine (est. 8 hours, borrowing from creators.XNA.com GPU particle sample)
That should keep me busy for the next month or two. I only want to work on this at night or on rainy days, so weather and work will determine my schedule. Now I leave you with a couple of screenshots taken in game just today.