The second year of Computer Games Programming at Derby University has begun, and as part of my Game Development Techniques module I am developing a point-and-click adventure game using the Unreal Development Kit (UDK) and Unreal Engine 3. The game, entitled Escape from Alcatraz, is based on Frank Morris’ infamous 1962 escape from the now defunct prison.
I’m a big adventure game fan but Iâ€™ve never developed one of my own. I often tend towards action-oriented, reflex-based games when designing, so this has been a nice change of pace. I’m taking inspiration from Grim Fandango and the Monkey Island in that Escape from Alcatraz wonâ€™t take itself overly seriously, instead relying on tongue-in-cheek humour and dialogue.
With a basic premise in place I spent a few days this week fleshing out a game design document (GDD) that I can continually refer to during development. Creating a sensible chain of events (item collecting and NPC-conversations) that players can decipher proved to be the most challenging aspect of this process, and it’s something that I expect will require gradual refinement.
With design (mostly) out of the way I started digging into (courtesy of 3D Buzz) the various facets of the UDK, including the editor, Kismet, Matinee and UnrealScript. I also extended some of the core Unreal Engine scripts (GameInfo, PlayerController and GamePawn) to get a feel for UnrealScript and the compilation process.
Players of Escape from Alcatraz are tasked with: seeking out useful items needed to make progress, interacting with non-playable characters in, and solving a variety of item-centric puzzles. Fans of LucasArtsâ€™ graphic adventure games from the 1990s, such as The Curse of Monkey Island and Grim Fandango, should feel right at home.
My first task in developing the game was to allow each level to contain numerous fixed cameras that can be set up in the editor, rather than a single camera that follows the main character. To achieve this I used Trigger Volumes that activate the appropriate camera (in the form of a looped Matinee sequence) when touched by the player.