Wednesday, January 30, 2013

I Can't Escape - A One Month Game Experiment

When I joined McFunkypants One Game A Month challenge, I knew that I wanted to accomplish two things:
1) To experiment with interesting game designs I wouldn't normally pursue.
2) To connect with new talented individuals.
I figured that worst case, it'd only be a month, and best case, I'd have an interesting game and know new people I could work with and trust. In this sense, "I Can't Escape" turned out to be a best case scenario!


When I designed I Can't Escape, I wanted something very simple at its core - something that could be feasibly finished in a single week! Even though the challenge gave me a whole month, it's always better to underdesign than overdesign - more can always be added, but game development almost always takes longer than you expect. Even a simple "one week" game idea might end up needing the whole month! I also chose a genre I had never explored before - I Can't Escape is my first horror and atmospheric game. It was interesting to see what I could come up with in this new territory.

At its core, I Can't Escape is exactly what it seems: you explore a creepy underground maze, stumbling around pretty much randomly without a map, and fall down pits until you reach the end. I wont say exactly what you can find in the levels, but there is no battle system, no shooting of zombies, just simple exploration with a simple goal - to escape. In order to escape, all you need to do is climb a ladder on the first level. The "horror" part is more subtle than most horror games I've played. Instead of enemies jumping out at you, there's an overwhelming sense of being watched and followed (there are literally eyes in the walls watching you - this is one of the most common events you can stumble upon). This builds the anticipation of something just around the corner, but that tension is never dispersed by having that something actually jump out at you.

Aforementioned eye staring at you deep in the dungeon.
The game is designed to make you feel lost and trapped. The levels are incredibly large and maze-like with no map to guide you. It wont take long before you have absolutely no clue where you are. The game is also designed to make you fall deeper - you're "supposed" to go up, but instead somehow you always end up going down into darker and scarier levels. With subtle effects like the movement speed slowly increasing, the anxiety rises as you realize that it's very unlikely you will even reach the first floor again, let alone escape. Eventually, you reach a level where you are trapped behind locked doors, and you literally can't escape. The light then slowly fades out, and the single word "END" appears.

The game taunts you with the possibility of escape, it even starts with you landing right in front of a ladder, with only a locked door keeping you from freedom. Along the way, you will find keys that unlock doors, and sometimes even find ladders you can climb, bringing you closer to the top. But, despite your best efforts, you still eventually fall down deeper and deeper. Sound like a metaphor for real life? Hopefully not! I won't answer whether it is possible to escape or not, as there are several rare events you can stumble upon in the game, but don't expect escaping to be easy!

A ladder on the first floor with no pit blocking it? Is it real? Did the developer just create this image as a joke??
This was an experiment for me, so I've released it for free on Newgrounds: http://www.newgrounds.com/portal/view/610205 , and I encourage everyone to try it! I also released the source code here: https://github.com/davidmaletz/CantEscape . The code is not particularly clean (lots of hacks happen with short deadlines), but if you can read it, perhaps you can answer some of the questions I've kept quiet on, and maybe even add an easy way to escape! It's too early to say how people will receive the game, and I've certainly had comments from people who didn't get it, but I've had far more comments from people who it "scared the pants right off," and that is very encouraging for me as a developer.

I really enjoyed the experience of working with Chase Bethea and Josh Goskey (this was the first time I worked with them on a project, but not the last), and I really appreciate the effort they put into the game (and of course, my lovely wife Natalie helped too)! For a one month project, I'm very impressed and proud of the work we did!

I've already moved on to my February game, so I doubt I will go back and make many changes to this game, but feel free to leave comments and let me know what you think about I Can't Escape!

Thursday, January 17, 2013

Progress Update

Here's a list of all the cool things I've been working on since my last blog post:

  • Realtime Clouds and Atmosphere - I've been working on this project for some time, it's a flexible algorithm that accurately renders and simulates dynamic & volumetric clouds and atmosphere. It's not a hack or approximation, it computes real single-scattered lighting through the clouds from a directional light source (the sun, or moon at night) and the atmosphere. It doesn't use particle effects either, it renders directly from a 3D texture, removing popping artifacts when flying through particles and making it very easy to modify and simulate. This is pretty computationally expensive, it wouldn't be possible without the power of new graphics cards - however, a few years from now, it'll probably run realtime on commodity graphics cards as well. The sunsets are especially awesome, when the sun lights high clouds from below with a reddish light, and I didn't plan or explicitly code that, it just did it since it was accurately modeling how the clouds would be lit from the sun and atmosphere!

    Right now, I've been thinking about where I want to use it, but my dream is to one day make Aero Empire with this technique. Don't get your hopes up too much if you're an AE fan, as I haven't started work on the revised AE yet and don't plan to any time soon, but I do have plans (and by the time I finish AE, the clouds might run realtime on most computers haha!).

    Of course, you have to see the clouds in motion to see the power of this technique, so here's a video:
  • I Can't Escape - As stated in my last blog post, I joined One Game A Month, and this is my January Game. I Can't Escape is a 3D, first person horror game being written in Flash's Stage3D. I have never made a horror game before, which was part of the reason I wanted to try it as my January project. The game focuses mainly on exploring a creepy dungeon with retro graphics (think old raycasting games), and the "horror" element derives from the atmosphere and a sense of being lost in an incredibly large dungeon. Most of the code for the game is done, I still need to do a few minor things, but I'm mainly waiting on art at this point as the artist I'm working with is somewhat behind. The game still needs a few more sound effects too, but the game's pretty close and there's still two weeks left, so I'm confident we'll get it done in time. You can check out the current version of the game (will continue to be updated) here: http://fancyfishgames.com/ICantEscape/ , and the game's also open source, you can view the source code here: https://github.com/davidmaletz/CantEscape.
  • Obey - Since signing up for One Game A Month, game ideas have been flooding my mind. Obey is a choose your own adventure / visual novel (with some RPG elements) that focuses mainly on the story, and the many choices you are presented with during the game. It takes place in a future dystopia, where an AI tyrant rules the world. It has multiple endings, and I've already drafted an outline for the entire game, as well as the introduction. I do want there to be some nice still art to go along with the story (and I think I know an artist who'd be good at this), but for now the main task on this game is to finish the story. Once I finish the story, I'll easily be able to make this game in a month, and so I'll schedule this game for a month after I've finished writing.
  • The Final Battle - Another One Game A Month idea, this one was spawned when reading the epic Last Battle in A Memory of Light (the last book of the Wheel of Time series, great series btw). The Final Battle will be an RTS of epic proportions, where you command armies of 10,000+ units in an all out "final battle." Every unit will have it's own little AI script, and the AI scripts will all run in parallel on the graphics card using OpenCL (I like utilizing the graphics card to do computation that would be impossible on the CPU). Each unit will also be displayed as a small, maybe 6x6 pixel sprite, which I will draw myself (it doesn't need animations or detail, so I can handle that haha).
  • Havencall - So, what about Havencall? Well, there hasn't been a lot for me to do code-wise lately on Havencall. Right now, the scenes and art take priority, which Natalie has been working on (she's been making some awesome scenes, you can see some of it here: http://www.indiedb.com/games/havencall/news/art-update1). There's still over a month of coding left for me to do in Havencall, but I plan to spread that out over the next few months, and hopefully release Havencall by September as planned. I certainly haven't forgotten about Havencall, and I'll still be able to release it on time even with One Game A Month.
That's all of the updates that I can talk about, and I have a feeling that this will be a great year for me with all my plans for One Game A Month. You can see a list of my One Game A Month plans here: http://david.fancyfishgames.com/p/one-game-month.html , which I update from time to time. Soon, the world will be flooded with awesome games made by me haha!