AGE - Adventure Game Engine An article by Sue @~Alex first told me about the AGE site on @~http://twilightsoftware.com/age/index.htm @~and about AGE itself. I went onto their home page to find out @~more details for myself and this article is compiled from @~information which I found there and downloaded. Twilight Software's Adventure Game Engine, commonly referred to as AGE, allows for the creation and delivery of commercial-grade first-person adventure games and other multimedia. The engine, which runs under Microsoft Windows 95, 98 and 2000, utilises Microsoft's DirectX and DirectXMedia technologies for maximum performance. The engine is used internally by Twilight Software, for its own adventure games and other multimedia productions. In a unique opportunity, the engine may be licensed for users' own productions! While initially targeted at other commercial game developers, the engine is usable by anybody with appropriate technical skills. You can make games, even if you've never programmed before. When you create a game with AGE, it will have the following capabilities: First-person scenes Full motion video cutscenes Full motion video conversations (with question & answers) In-scene animation capabilities (triggered and continuous) Scene images changing to reflect game-state Inventory items to collect and then use Full game-state management for story-related puzzles and tasks Streaming audio for all dialogue and actions High quality ambient music and soundscapes Very easy user interface Here is a list of just a few of the engine's powerful internal features: Fullscreen 640x480 16-bit graphics (using DirectDraw) Support for .BMP and .JPEG images Support for .BMP overlay images (for in-scene animations) High performance video, using Microsoft's DirectXMedia Multiple video and audio codec support (as supported by DirectShow) High quality audio (using DirectSound) Mouse and keyboard support (using DirectInput) Simple game scripting (using text files) No procedural programming involved If you're interested in making your own adventure game using this engine, you can also check out a sample game which has been detailed on their site and can be obtained from Twilight Software if you email them. See "Screenshots" for some screens from it. The web site also contains: A sampling from the Developer Kit's extensive tutorial documentation. Information on game development, engine licensing and purchasing. A page of Frequently Asked Questions. An interactive wwwBoard where you can get involved on adventure game discussions. Once you get your hands on the AGE Developer Kit CD-ROM, you'll have the following: A copy of the Sample Game, with high quality video. The full 58-page AGE Tutorial Document, that examines every step in creating the sample game. (This teaches you everything you need to know about using the engine.) An edition of the Adventure Game Engine licensed individually for you - that you can use to make your own adventure game. The sample game is based around scenes - still images with clickable regions. Scenes may have animations playing on them. The appearance of a scene may change based on the current game-state. The occurrence of animations may also depend on the current game- state. The availability of clickable regions may also depend on the current game-state. In a scene, the player may look at a region, pick up an object, use an object on a region, talk to a character (to enter a conversation) or enter a cutscene (which plays a video). Or they may carry out an action on a region, or they may enter a new scene. A cutscene simply entails the playing of a video file. A new scene will be entered at the conclusion of a cutscene. A conversation is a set of video files that are played as "answers" in response to "questions" asked by the player. A welcome video is played, as is a goodbye video when the conversation ends. The availability of a question may depend on the current game-state. The player may also offer inventory items to the character being conversed with, the character will either refuse the object or may accept it. The player might also be given a new object after asking a certain question. The game-state is internally represented as a set of true/false "flags" (or values). For instance, the game state might be determined by: "player hasn't met Goddess, player has picked up the golden ball, player doesn't know he needs a silver ball". When the player progresses a little further, this state might change to reflect that: "player now knows he needs a silver ball". The current inventory of the player, along with the current location, completes the description of the current game-state. The adventure game engine is best suited to "first-person" adventure games. It is a very flexible engine however, and can be used in many ways that do not fit the standard interpretation of an adventure game such as multimedia applications. It all adds up to commercial-quality games, with a cleanly-designed engine that's simple in design, but powerful in capabilities. The engine delivers games with a very simple user interface, which are particularly valuable in attracting new computer gamers, part of the massive new market for computer games. Twilight Software offer several different licensing options including the basic Developer Kit. Documentation: ------------- The Developer Kit includes comprehensive documentation that clocks in at over 20,000 words. It's easy-to-read documentation, that explains every aspect of building your own adventure game. A large part of this documentation is a tutorial which examines the sample game, step-by-step. By examining each text script file in detail, the tutorial explains all of the inner workings of this sample game, and also serves as a reference for writing your own game's script. The AGE Tutorial Document is extensive, and very cohesive and complete. The first scene of the sample game uses scripts such as the following: Room_begin "Outside the Islands" // name of scene "scenes\front\" // filename prefix "front.jpg" // backing image "scapes\island1\island1.txt" // soundscape normal // default mouse pointer "wrong_object" // sound when object wrongly used We begin with a Room_begin token, followed by four strings, a token, and then another string. The comments in the file indicate their purpose. Then come the definitions of the clickable regions in this first game scene. The first region is defined as follows: // a clickable region - looks at an object (plays streaming audio) // region 560, 640, 130, 260 // coordinates of region { } // required flags look // mouse pointer 0, 0, "" // hover overlay image "Look at" // verb string "the distant island" // noun string look // region type: looks at something "island.wav" // audio wave file to play (streamed off disk) {} // flags to set The first section of this region definition is similar to that of the walk region used in the title screen: // a clickable region - looks at an object (plays streaming // audio) region A token declares the beginning of a clickable region. 560, 640, 130, 260 // coordinates of region There is a bounding rectangle for this region, giving the minimum x, maximum x, minimum y and maximum y, respectively, of the bounding rectangle for this region. { } // required flags Next comes an empty list of required flags, indicating that the region is always available, requiring no particular configuration of flag values to be active. look // mouse pointer The mouse pointer should change to the preloaded look mouse pointer. This mouse pointer indicates that the player may "look" at a region. 0, 0, "" // hover overlay image Since the hover overlay image's filename is empty, no special overlay image will be displayed while the mouse hovers over this region. The coordinates are just set to 0, 0, but are essentially meaningless, since there's no image. "Look at" // verb string "the distant island" // noun string The verb and the noun string will be combined to display "Look at the distant island" when the mouse hovers over this region. The next section of this region definition has a slightly new format, due to the first token being look: look // region type: looks at something "island.wav" // audio wave file to play (streamed off disk) {} // flags to set As pointed out, the look token appears. This indicates that the region is made to be looked at. When clicked, a piece of audio is played. This audio would usually contain dialogue, containing a description of the region. In this sample adventure, the region is a distant island to be looked at. Clicking will play back a .WAV file with the game's narrator describing the distant islands. Next comes a string giving the filename of a piece of audio to be played. This audio will be streamed off disc, played continuously until finished, mixed with the current game audio while the game continues. The current scene's filename prefix ("scenes\front\" as specified earlier in the scene's script) is added to the beginning of this filename, so that the audio played is actually the file "scenes\front\island.wav". This is the .WAV file that sits in the same directory as the scene's script file and backing image file, of course. Next comes a flag-list. This would specify flags that are to be set when the game player clicks on this region to look at it. In this case, no such flags are changed. Look regions serve a second purpose. If the pointer is currently an inventory item, the displayed string will indicate that the game player may attempt to use the inventory item with this region. For example, if the user has the "silverball" item as their current pointer, then the string displayed will be "Use silverball with the distant island". This is the reason for separating the verb and noun strings - any look region in the game, as well as allowing the player to look at the region, also allows an inventory item to be used on that region. Most of the time, and in this region's case, there will be no specifically useful item for a region. In this case, the preloaded sound (for an incorrect object's use) will be played. As specified in the opening section of this scene's script, the preloaded sound "wrong_object" will be played if an item is used on this region. And there ends the specification of the look region. Next in the scene's description is a simple walk region, allowing the user to walk towards the island. // a clickable region - jumps to a new scene region 130, 500, 160, 350 // coordinates of region { } // required flags forward // mouse pointer 0, 0, "" // hover overlay image "Travel to" // verb string "the first island" // noun string walk // region type: walks to a new // scene "scenes\island1a\island1a.txt" // filename of destination // cutscene "travel" // preloaded sound to be played { } // set these flags This region is quite similar to the region which entered the cutscene from the title screen. The first part of the region definition is quite familiar. In fact, all regions share this same set of properties. It is the region type token that specifies the type of the region, and it is this type that determines the remaining properties to be specified. To show the region-type and its particular properties again: walk // region type: walks to a new scene "scenes\island1a\island1a.txt" // filename of destination // cutscene "travel" // preloaded sound to be played { } // set these flags The walk token indicates a region that moves the game player to a new scene. (The player "walks" to this new scene.) Next comes a string giving the name of the next scene's script file. A full path, relative to the game's home directory, is given for this script file. Next comes a string giving the name of the preloaded sound to be played when the user successfully clicks on this region. Finally, a flag-list is given, specifying any flags which are to be set when the game player moves to this new scene. In this case there are no such flags to be set. This list ends the specification of the walk region. And since the scene contains no further regions, a simple token indicates the end of the scene's definition: Room_end Obviously, the only way to leave (short of quitting the game) is to walk forward to the scene defined in scenes\island1a\island1a.txt. The entire AGE Tutorial Document gives plenty of detail on how its scripts were built, with clear explanations that will allow you to incorporate the same functionality into your own game. The tutorial documents all other technical aspects of putting your game together, so that once you've read the tutorial, you'll have seen everything it takes to make your very own adventure game. The manual consists of 21,000 words, 58 A4 pages of extensive and very well-written documentation. The Twilight Software Adventure Game Engine is a serious game engine, for serious game makers! When you licence the engine you receive the Twilight Software AGE Developer Kit CD-ROM. This kit includes the Adventure Game Engine "runtime" - the program that is the engine itself. In fact, you'll receive the following on the AGE Developer Kit CD: complete Tutorial Document (covering the sample game) the Sample Game (with full script source code) the engine runtime (licensed appropriately) If you order a Release edition of the engine, you'll also receive the following: the enduser setup program, designed to "AutoPlay" from CD-ROM. (This launches your game, and optionally installs DirectX and/or DirectXMedia, which are available free from Microsoft, onto the enduser's computer.) Different developers must purchase different types of licenses. Here are the possibilities: Hobbyist Evaluation license - $49 Purchase this and you can make your own adventure game on your own home computer, and you can release it on the Internet. You can release the game you make. A small message box will appear at the beginning of the game, giving the identity of the engine. The complete game must be released for free via the Internet, although on additional channels if you wish. (To make this fair, Twilight Software reserves the right to post your released product on its own website.) You get access to every feature of the engine! (There's a generous limit of 7 inventory items and 25 game-state flags.) Hobbyist Release license - Only $199 (Subtract $49 if upgrading from Hobbyist Evaluation) This license is the same as above, except that you receive a slightly more powerful version of the engine. The conditions are the same as above, except that: There's no message box displayed before the game begins. The limits are increased to 20 inventory items and 80 game-state flags. Commercial Evaluation license - Only $399. This includes high-priority email support. If the engine is to be used on a commercial premises, then you must purchase this license. You cannot release the game you'll make (you'll need to purchase the extra release license to do so) but you can try out everything in the engine, with no limitations. Commercial Release license - Only $1999 (Subtract $399 if upgrading from Commercial Evaluation) This license is the same as above, while it also allows you or your company to release one title commercially through any distribution channels you like, and it's royalty free. Complete source code - Only $5499. If you're interested in modifying the engine, want to train your own engineers on the source code for future maintenance, or simply want to learn how it works, then the full source code to the engine is available. Programmed in fully object-oriented C++, the engine has a clean design, is very well-engineered, is comprised of robust code and is fully commented. Technical Questions ------------------- Question: What video modes does the engine support: Answer: 640x480 in 16-bit colour. It will automatically cope with "555" or "565" (for RGB bits) video modes, whichever one is available. Game-making Questions Question: How do I animate an opening door: Answer: Create a "once" animation (with a series of overlay images showing the door opening). When the door is closed, have a region available that allows the user to open the door. This region can set a "door opening" flag true. The animation should trigger on this flag. Once the animation ends, it should in turn set a "door open" flag true, and a new region should allow the user to travel through this door. Licensing Questions ------------------- Question: Can I try the engine for free, before buying? Answer: Yes, you can download the Sample Game for free, to see that the engine is indeed powerful and complete. See the Sample page for more details. Question: I don't plan on making any money from a game, but I want make one and then put it on the Net. What option do I need to purchase? Answer: You should purchase the very inexpensive Hobbyist Evaluation License for only $49! You can then release your game for free on the net. Question: Why do I have to pay for the engine? Answer: The engine has been developed for use in professional computer games. It has taken over two years to develop, and is of commercial quality. If you want Twilight Software to continue supporting the engine in the years to come, and to give you the kind of assistance, support and professionalism that you'd like, then you have to expect to pay some money. Additionally, if you ever dream of releasing your games commercially, then your publisher will probably want you to use a professional game engine. - o -