Thursday, January 27, 2011

Amnesia: The Dark Decent and Level Editor Controls

I’m not making the post this week that I thought I was going to make. Instead of designing my Tetris clone and looking into DirectX, I spent that time playing, finishing, and experimenting with the development tools for Amnesia: The Dark Decent. Never fear, the game I have lovingly coined as “Mathtris” shall be coming in the future. However if you’ll permit, I’d like to talk about this fantastic journey into the survival horror genre and my experience with the development tools.

Any of you fans of the horror genre or those who keep up with gaming news have likely heard about this indie gem by now. Frictional Games have done the industry proud by producing a truly oppressive style of horror game, which is something the industry has been lacking in as of late. Most recent games that have the “horror” tag line attached tend to be less about a looming threat and more about keeping ugly spawns of hell away with very large guns ( Dead Space being a prime example).

Now don’t get me wrong, I do enjoy exploding various types of demons into their respective giblets. That being said, there is something truly exciting and truly terrifying about being both under the constant threat from unspeakable evil, and being helpless to do anything but flee from it. The ambiance is such that you feel there’s danger around every corner, even though that is not always the case. The atmosphere sets up the scares, and your imagination tends to do the rest, and every room you enter becomes the next possible death trap.

If you haven’t played Amnesia: The Dark Decent yet, I highly recommend that you do.

OK, now that I’ve got that rant out of my system, lets talk development tools. To allow for the creation of custom stories in Amnesia, Frictional Games has produced a level editing tool along with a custom scripting language. I personally found the documentation felt a bit scattered, but just about everything you need, both tools and tutorials, can be found here.

My advice before starting any development would be to give a very quick read to all the basic tutorials they have. Making a level and scripting for a level are two separate chunks which are separated out in the tutorials. Get the big picture first, then jump right in. Only way to learn is by doing after all.

I’ll list the Amnesia level editor controls that I’ve read about and discovered though just playing with the editor to make your journey a bit easier (such as how to copy and paste). Please keep in mind that these are the windows controls (Linux controls may be different).

Rotate the camera in perspective view = Alt + left mouse button
Zoom in and out = Alt + right mouse button OR mouse wheel scroll
Move the center point of your camera = Alt + middle mouse button
Copy/Paste (a.k.a. Clone) = Ctrl + D with object selected
Translate mode hot key = Q with object selected
Rotation mode hot key = W with object selected
Scale mode hot key = E with object selected
Select multiple objects = Ctrl + left mouse click
Undo previous change(s) = Ctrl + Z
Redo previous undo(s) = Ctrl + Y
Change a view to full screen = space bar while hovering over the desired view
Remove the selected object = Delete key OR Backspace key
Find and Select objects = Ctrl + F

I hope that the above list of commands will lessen the difficulty curve of learning to make your own Amnesia custom story maps. There’s actually a fair bit more I’d like to talk about such as a more in-depth look at the level editor and the scripting language, but I think this post has enough “heft” to it. I’ll continue this topic in posts to follow.


Saturday, January 15, 2011

Let the Journey Begin!

Hello internet!

I've been meaning to do this for quite a while, and I've finally decided to do it. "This", of course, is to create a blog where I can post both my progress on becoming an apt game programmer and  random thoughts about gaming in general.

As the "about me" blurb in my profile suggests, I've been gaming for a LONG time. One of my earliest memories is playing my older cousin's Atari 2600 as he babysat me for some extra cash. I was pew-pewing at the age of four, not even sure what I was doing, but completely drawn in by the glorious flashing lights and sounds of such classics as Missile Command, Space Invaders and Plaque Attack. Growing up I continued to evolve my gaming experiences through mediums including the Nintendo Entertainment System and the Sega Genesis. Now, at the age of 27, I continue to partake in interactive experiences of a much higher level (Left 4 Dead, Mass Effect, and Starcraft II are just a few examples). However, even as I buy new graphics cards so I can play the biggest and brightest triple-A titles, I never forget the classics. I never forget my roots.

Which brings me to my career choice: Programming. I always wanted to make games. My friends and I, in between playings of Mega Man and Castlevania, used to invent video games on pieces of paper. We drew out level designs, item drops, and enemy spawn points (ah, how I wish I had kept those binders full of random gaming ideas...even though most of them were basically Super Mario clones). During my junior-high year, a recruiter from Memorial University of Newfoundland paid my school a visit, and spoke of the computer science department, and how I could learn programming methodology. My eyes lit up. I had decided then and there to attend MUN, get my computer science degree and program games that would change the industry!

I did indeed go to university and  I got my degree, but somewhere along the lines of doing so reality set in. Or more accurately, the disillusionment of what I thought "making games" was. I know now that there are many, MANY different aspects to building a game. There is level design, engine programming, A.I., and so many others. I now also know that there is no room in the industry for a specialized "idea guy", where a studio would hire me to come up with awesome game ideas to pass them along to the team (which is what I had pictured in my youth). On top of all that, there were sadly no gaming studios here in Newfoundland (a fact that has changed over the last two years). And while I was not completely opposed to moving away, I do love this province. So in the end, I choose to take my degree and get a job at a respectable non-game-making company.

My degree was not a waste however, since during my studies I discovered a great love for programming. Building a program to make use of that bubble-sort algorithm I learned gave me great joy. No kidding! It was awesome! :-) So, no regrets on that front. I do enjoy my job and all the neat problem solving that comes with it.

I still, to this day, have that nagging itch. That "want" to have my hands in game development. Which brings this first (and as it turned out longer than I had expected) blog post full circle. In the future I hope to use my base programming skills to learn how to be a great game programmer. Even if I never work for a gaming studio, this journey should improve my overall programming abilities. And hey, who knows...maybe one day I'll release that next big indie hit, or even create a gaming project on that would bring some joy to the open source crowd.

I hope as this blog gains more content/code snippets/game rants that it will prove to be useful to people with the same ideals. As we say in the Starcraft community,

glfh (Good luck and have fun!)