Differences

This shows you the differences between the selected revision and the current
version of the page.


wmebook:ch1 2007/12/05 15:48 wmebook:ch1 2007/12/12 06:22 current
Line 1: Line 1:
====== 1. Getting to know what WME is ====== ====== 1. Getting to know what WME is ======
-You’ve downloaded WME and now you’re probably wondering what actually this WME is. WME is a professional adventure game development kit which consists of two parts. Highly advanced development tools used for creating adventure games and WME interpreter which brings the games you’ve created alive.+You’ve downloaded WME and now you’re probably wondering what this WME actually is. WME is a professional adventure game development kit which consists of two parts: Highly advanced development tools used for creating adventure games, and the WME interpreter which brings the games you’ve created to life.
-Now before we start, let’s talk about some of the adventure games so you’d recognize, you’ve selected the correct tool. There’re many types of games called “adventure games” by different gamers. Some says adventure games are so called “interactive fiction”, you proceed through game world by typing commands as “open door, push button, kill troll” and the game responds with text or with some basic imagery. Then there are many action/adventure games where the adventuring consists of pushing a lever here or there etc. Although you probably could make the aforementioned games in WME too, it’s not primary focus of the engine.+Now before we start, let’s talk about some adventure games so you’ll know if you’ve selected the correct tool. There are many types of games called “adventure games” by different gamers. Some say adventure games are so called “interactive fiction”. You proceed through the game world by typing commands such as “open door, push button, kill troll” and the game responds with text or with some basic imagery. Then there are many action/adventure games where the adventuring consists of pushing a lever here or there etc. Although you probably could make the aforementioned games in WME too, it’s not the primary focus of the engine.
-WME is focused (but not limited to) on so called Point’n’Click adventure games. Those games may or may not contain inventory, they may or may not contain avatar for main hero or other non playable characters. Basic of the game play is focused mainly on puzzle solving being it intricate dialogues, logic or inventory combining puzzles and interacting with a game world. There have been hundreds of such games created in the history. You can start with Lucas Arts (Lucas Film) games from Maniac Mansion to Full Throttle or Grim Fandango. Or you can look at the recent games like Syberia or The Longest Journey. Key of those games lies in a story. You basically need to tell a tale and use game as a medium to do so. As a side note there is a certain subset of so called Puzzle Adventures. There is story not as much important as puzzle solving. You can for example think of Myst and various Myst clones, where the stories are more basic. Also currently you can also use keyboard control to control your characters as Grim Fandango or Silent Hill does. So if you feel, this is what you wanted the engine to do, then WME is the right choice for you.+WME is focused on (but not limited to) so called Point’n’Click adventure games. Those games may or may not contain inventory. They may or may not contain an avatar for the main hero or other non playable characters. Game play is focused mainly on puzzle solving, intricate dialogs, logic or inventory puzzles and interacting with a game world. There have been hundreds of such games created in history. You can start with Lucas Arts (Lucas Film) games, from Maniac Mansion to Full Throttle or Grim Fandango. Or you can look at the recent games like Syberia or The Longest Journey. The key to these games lies in the story. You basically need to tell a tale and use the game as a medium to do so. As a side note, there is a certain subset of so called Puzzle Adventures. There is a story, but it is not as important as puzzle solving. You can for example think of Myst and various Myst clones, where the stories are more basic. Currently you can also use the keyboard to control your characters, such as in Grim Fandango or Silent Hill. So if you feel this is what you want the engine to do, then WME is the right choice for you.
Let’s first look what lies inside your WME package: Let’s first look what lies inside your WME package:
-  * **Project Manager** is the top level view of your game. Here you can see your project tree. This is also the place where to setup global parameters of the game you’re creating. You can run your game from here and mainly - you always start here. +  * **Project Manager** is the top level view of your game where you can see your project tree. This is also the place where you set up global parameters for the game you’re creating. You can run your game from here, and mainly you always start here. 
-  * **Scene Edit** is an editor of individual Scenes. As WME is not fully 3D engine yet, you have to create separate screens (named scenes in WME terminology) and as player progresses through the game world, you change scene after scene. Scene is usually one gaming screen although WME supports scene scrolling for larger backgrounds then your resolution.  +  * **Scene Edit** is an editor of individual Scenes. As WME is not a full 3D engine yet, you have to create separate screens (named scenes in WME terminology) and as the player progresses through the game world, you change scene after scene. A Scene is usually one gaming screen although WME supports scene scrolling for backgrounds larger than your resolution.  
-  * **Sprite Edit** is a support tool for creating 2d animated sprites used by WME. +  * **Sprite Edit** is a support tool for creating 2d animated sprites (animations) used by WME. 
-  * **String Table Manager** is a tool used for localization of your game. You can localize your game into any possible language including right to left languages. String Table Manager will be your invaluable tool on the way because it’s able to extract strings from your scripts and scenes and prepare them for translation.+  * **String Table Manager** is a tool used for localization of your game. You can localize your game into any possible language including right to left languages. The String Table Manager will be an invaluable tool because it’s able to extract strings from your scripts and scenes and prepare them for translation.
  * **Debugging Console** is a support module, which can help you trace what’s going on and why your scripts behave badly.   * **Debugging Console** is a support module, which can help you trace what’s going on and why your scripts behave badly.
  * **Templates for new game items and demo projects** demonstrating various capabilities of WME.   * **Templates for new game items and demo projects** demonstrating various capabilities of WME.
-While the aforementioned tools are critical for the basic design, the heart and soul of your game lie in scripts which you’ll be writing. WME is not a tool where you can click your way through. But as a reward for your scripting it is the most flexible engine for creating adventure games which is also completely accessible to independent developers.+While the aforementioned tools are critical for the basic design, the heart and soul of your game lie in the scripts which you’ll be writing. WME is not a tool where you can click your way through. But as a reward for your scripting, it is the most flexible engine for creating adventure games and is also completely accessible to independent developers.
-Before we dive into the details of WME game creating, I want to speak a bit more about game design process in general. There are always many ways leading to the same or similar result so if you feel that your way is better simply go with it. My advice here is for people who are clueless or who are interested in the way how other people do the job. +Before we dive into the details of WME game creating, I want to speak a bit more about the game design process in general. There are always many ways leading to the same or similar result, so if you feel that your way is better simply go with it. My advice here is for people who are clueless or who are interested in how other people do the job.
-Here’re some basic questions you could ask yourself before you start with a game coding.+Here are some basic questions you should ask yourself before you start with game coding:
  * What resolution is my game going to be in?   * What resolution is my game going to be in?
Line 26: Line 26:
    * If so, will those be 3d models or sprites?     * If so, will those be 3d models or sprites?
    * Will my game use multiple players each having his/her own inventory?     * Will my game use multiple players each having his/her own inventory?
-  * Will my game use standard point’n’click interface?+  * Will my game use a standard point’n’click interface?
    * If not will it be utilizing direct control?     * If not will it be utilizing direct control?
    * Will it use some special interface like verb coin or similar?     * Will it use some special interface like verb coin or similar?
-  * How big my game will be (in terms of estimated hours or gaming screens)?+  * How big will my game be (in terms of estimated hours or gaming screens)?
  * Do I have enough material to actually start working on game?   * Do I have enough material to actually start working on game?
-As you can see, the first three points are very practical whilst the others are more conceptual. Nonetheless, those are the basic questions, which determine the fundamental way how to approach the game creation. Especially the last point deserves a very special attention. It’s very easy to have an idea about some game. It can be even pretty, pretty, ultra mega giga cool idea with sugar on top, but the path from an idea to a complete game lying on the shelf is very hard. And how would you feel if after one year of intense work you’re stuck and you don’t know how to proceed?+As you can see, the first three points are very practical whilst the others are more conceptual. Nonetheless, those are the basic questions, which determine the fundamental way to approach game creation. The last point especially deserves very special attention. It’s very easy to have an idea about some game. It can even be a pretty, pretty, ultra mega giga cool idea with sugar on top, but the path from an idea to a complete game lying on the shelf is very hard. And how would you feel if after one year of intense work you’re stuck and you don’t know how to proceed?
-So my moral of this, maybe a bit unrelated to WME talk is, that you can make an incredible amount of work without even touching the tools, which will save you a lot of problems down the road. You could have the story written (when the game is in production, you don’t have that much time for that anyway), you could have your ideas about the puzzle design (you don’t want to realize that you made a clickable movies without any challenges in it), you can write dialogues, flesh out characters, have your ideas about sounds, music, graphic style etc. etc. All this belongs to something called a design document and it’s the document where you can also concentrate all your ideas about the game. It doesn’t mean that everything from the document will get into the game. It’s usually much less, but it’s a vital thing of any game developer, who means it seriously with a game design.+So the moral of this, maybe a bit unrelated to WME, is that you can do an incredible amount of work without even touching the tools, which will save you a lot of trouble down the road. You could have the story written (when the game is in production, you don’t have that much time for that anyway), you could have your ideas about the puzzle design (you don’t want to realize that you made a clickable movie without any challenges in it), you can write dialogs, flesh out characters, have your ideas about sounds, music, graphic style etc. etc. All this belongs to something called a design document, and it’s the document where you can also concentrate all your ideas about the game. It doesn’t mean that everything from the document will get into the game. It’s usually much less, but it’s a vital thing of any game developer, who is serious about a game design.
But I think that this was enough of boring chat and you’re definitely eager to start with something more WME’ish so here goes. But I think that this was enough of boring chat and you’re definitely eager to start with something more WME’ish so here goes.
-Let’s look at the architecture of your typical WME game. I’ll give you an overall, a bit simplified diagram of WME functionality so you can grasp the basic concept.+Let’s look at the architecture of your typical WME game. I’ll give you an overview, a simplified diagram of WME functionality so you can grasp the basic concept.
{{wmebook:ch1diag.jpg|Diagram}} {{wmebook:ch1diag.jpg|Diagram}}
-As you can see, it’s easy to split functions in two halves - global functionality for the whole game and local functionality for individual scenes. In the following chapters we’ll dive deep about each area of this diagram. Before we move on the individual tools, I’d like to explain some terminology used in the diagram.+As you can see, it’s easy to split functions into two halves - global functionality for the whole game and local functionality for individual scenes. 
 + 
 +In the following chapters we’ll dive deep into each area of this diagram. Before we move on to the individual tools, I’d like to explain some terminology used in the diagram.
  * **Script** is a text file containing programming instructions. It will be thoroughly explained in the scripting chapter.   * **Script** is a text file containing programming instructions. It will be thoroughly explained in the scripting chapter.
-  * **Actor** is a 2d or 3d avatar, which represent either your playable character or other characters in the game. He has built in abilities to walk, talk, store items and unless you’re going to make a game without them (Myst, Darkfall, Barrow Hill, Shivers etc.), actor will keep you nicely occupied for quite some time. +  * **Actor** is a 2d or 3d avatar, which represents either your playable character or other characters in the game. He has built in abilities to walk, talk, store items, and unless you’re going to make a game without them (Myst, Darkfall, Barrow Hill, Shivers etc.), the actor will keep you nicely occupied for quite some time. 
-  * **Inventory** is a placeholder to store items player acquire in the game world.+  * **Inventory** is a placeholder to store items the player acquires in the game world.
  * **Attributes, methods, objects, variables** will be thoroughly explained in the scripting chapter.   * **Attributes, methods, objects, variables** will be thoroughly explained in the scripting chapter.
-  * **Daemon** in WME is not a beast from the dark corners of Earth but rather a piece of program which runs in the background of your game or scene in the loop and performs some important task. For example your typical daemon can see if your mouse hovered over a hotspot and if it detects such a malicious thing, it would display a corresponding caption. As you see this would be global daemon, because you need this behavior for all of the scenes. You can have also local daemon bound to a scene. For example upon entering the scene you are running out of oxygen. If you are not able to escape, you die. This time can be monitored by a daemon attached to a particular scene, which keeps track of the passed time in the scene and if you won’t make it, it would kill you.+  * **Daemon** in WME is not a beast from the dark corners of Earth but rather a bit of code which runs in a loop in the background of your game or scene and performs some important task. For example your typical daemon can see if your mouse is hovering over a hotspot and if it detects such a malicious thing, it would display a corresponding caption. As you see this would be a global daemon, because you need this behavior for all of the scenes. You can also have a local daemon bound to a scene. For example, upon entering the scene you are running out of oxygen. If you are not able to escape, you die. This time can be monitored by a daemon attached to a particular scene, which keeps track of the passed time in the scene and if you don’t make it, it will kill you.
  * **String table** is a text file which contains key/value pairs which then identify the string in the game. You can easily replace this file and your game can speak Russian or Chinese instead of English.   * **String table** is a text file which contains key/value pairs which then identify the string in the game. You can easily replace this file and your game can speak Russian or Chinese instead of English.
  * **Entities and Regions** will be explained in detail in Scene Editor chapter.   * **Entities and Regions** will be explained in detail in Scene Editor chapter.
-Now we have some basic overview of the engine how it’s structured and before we start with discovering the tools, let’s make some preparation work. +Now we have a basic overview of the engine and how it’s structured. Before we start with discovering the tools, let’s do some preparation work.
-=> Go to the directory where your WME resides and locate the folder called projects. In this folder copy the folder wme_demo to something else - for example sandbox. This will be our sandbox as we’ll discover how WME works and build on top of this demo. If you enter the newly created folder, you’ll see inside the file called **wme_demo.wpr**. This is WME project file and if WME was successfully installed, we can open it by double clicking on it. This opens the first tool we’re going to cover: **Project Manager**.+=> Go to the directory where WME resides and locate the folder called projects. In this folder copy the folder wme_demo to something else - for example sandbox. This will be our sandbox as we discover how WME works and build on top of this demo. If you enter the newly created folder, you’ll see inside the file called **wme_demo.wpr**. This is WME project file and if WME was successfully installed, we can open it by double clicking on it. This opens the first tool we’re going to cover: **Project Manager**.
[[wmebook:ch1|Up]] [[wmebook:ch1|Up]]
- 
- 
- 
- 
-====== 1.1. Project Manager ====== 
- 
-{{wmebook:projman1.jpg|}} 
- 
-As you can see, I’ve added numbers to parts of the Project Manager and we’ll discuss them separately. But before we do that, press **F5** or the red exclamation mark located in the area 5 to get your first taste of WME. When you’re done with playing the demo, come back and we’ll speak more about project manager. 
- 
-As you already saw, Project Manager is here for several purposes. You can set the global game parameters here, you can create new scenes you can use additional tools (Sprite Edit, String Table Manager), you can run your game in the debug environment or you can compile your game and create the version other people get without having to install WME.  
- 
-So let’s not waste any time and we’ll start right away with section 1. I’ve cut it into individual section and note, that the + or – sign denotes the tree. So you expand the tree by clicking on + and collapse it by clicking on -. 
- 
-{{wmebook:p1.jpg|}} 
- 
-So the very first section is about the startup settings. First you see the game **resolution**. Demo runs in 800x600 unlike Ghost in the Sheet which you can see here and note, that you cannot change the resolution during the game. Also it would be complicated to convert everything to higher/lower resolution in the course of game creating so think about this well and then set the resolution once for the whole course of the game designing. 
- 
-**Registry path** is the path in Windows Registry where the game stores information (or additionally you can store some custom parameters as well).  
- 
-**Require 3D accel.** (yes/no) if set to Yes the game won’t run unless you have 3d accelerator card. Note that this setting is nowadays obsolete as nearly every single computer has 3d accelerator card installed. Also if you’re going to use 3D actors, you’ll have to check this value to yes. 
- 
-**Require sound** (yes/no) is the option which forces the sound card hardware to be present in the computer otherwise the game won't run. 
- 
-**Hardware T&L** Specifies the usage of hardware transform and lighting. This option is only useful for games using 3D characters, there's no point in enabling it for fully 2D games. Hardware T&L moves some 3D calculations from CPU to video card, which can significantly improve performance when using Direct3D 9. 
- 
-**Use Direct3D 9** If enabled, the game will take advantage of Direct3D 9 (as compared to Direct3D 8 when this option is disabled). Currently the only advantage is better performance for 3D characters when using hardware T&L. 
- 
-**Allow windowed** (yes/no) puts in case of yes to the initial dialogue window option to run the game in window instead of full screen. 
- 
-**Allow 3D settings** Specifies whether the game settings dialog contains advanced 3D settings. These include: antialiasing, hardware T&L. If your game is using 3D characters, enable this option. Otherwise disable it. 
- 
-**Allow accessibility** (yes/no) shows in case of yes in the initial dialogue window the tab with extended accessibility features like sending all captions and other texts to speech synthesizer, setting hotspot highlighting on keyboard shortcuts or pausing the game upon pressing special shortcut. Those are mainly for visually challenged gamers. 
- 
-**Allow about tab** (yes/no) puts in case of yes to the initial dialogue window the About tab which shows WME logo, its creator and other about information. 
- 
-**String table** is the last information in this section. It contains the filename of the translation file. You can here either select another file, remove this file or open the file in the editor. We’ll get more into this file in the chapter dedicated to localization. 
- 
-Let’s move on to section Game settings: 
- 
-{{wmebook:p2.jpg|}} 
- 
-**Caption** is the caption the game window has. You enter a text there. 
- 
-**Name** is the name of your game 
- 
-**Startup Scene** specifies which scene loads at the startup as the very first. You can also use a shortcut by rightclicking on the particular scene in the tree view and choose "Set as Startup Scene" option. 
- 
-**Scripts** are a critical part of the game initialization. This field can contain scripts ranging from single to several. Those are main scripts attached to the game which take care of initialization, first scene preparations, mouse and keyboard handlers etc. We’ll get into those scripts later, but for now try to click on the line and you’ll see that you can open a new dialogue by clicking on [...] In this dialogue you can add, edit or remove other daemon scripts. When the game is run, those scripts get executed and they form the master brain of the game. 
- 
-Note: you can also attach / detach scripts programmatically so there’s no need to feel stressed about having to set everything in the beginning. As long as you have one master brain presented, you can sleep easily. 
- 
-**Speech and Video subtitles ** define if Captions for speech or FMV’s are displayed. Also most of the following parameters are accessible from scripts in case you’ve been wondering about that for your ingame options. 
- 
-**Subtitles speed** – useful for game without voiceovers. In case your game contains voiceovers, this value is overridden by the length of voice sample to achieve synchronization. 
- 
-**System font** contains path to font file which is then used to display system messages. More on the font files in the data blocks chapter. 
- 
-**Video font** contains path to font file which is then used to display FMV captions. 
- 
-**Cursor** – path to an image or sprite which defines how the standard game cursor looks like. More on the sprites later. But as you probably guessed, you can easily use animated cursors. 
- 
-**Active cursor** – path to an image or sprite which defines how the game cursor looks like when it points at some interactive region on screen. 
- 
-**Nonint. cursor** – path to an image or sprite which defines how the game cursor looks like when the game has been switched to non interactive mode. 
- 
-**Inventory window** – defines the window for storing inventory items.  
- 
-**Response window** – defines the window for dialogues. 
- 
-**Items definition** – defines all items used in the game together with their scripts etc. 
- 
-**Talk lines skipped by** – you can choose which mouse action skips individual talk lines.  
- 
-**Scene viewport** – is used when you want to restrict the player’s view. You can define the rectangle from which screen position is scene displayed and how big portion of the scene is displayed. This doesn’t affect other entities, so if you want try the following: 
- 
-=> Click on the Scene viewport line and on the [...] button. Uncheck “No viewport” and set position 100 100 and Size 200 200. Then press Ok and F5 to test your viewport. When you’re sure you understand what happened, return the viewport to fullscreen and let’s continue our ride. 
- 
-**GUID** is used for integrating the game with Game Explorer in Windows Vista, this should be a unique fixed number for each game. 
- 
-**Compatibility** - turns off some script compiler changes which could break older WME games. 
- 
-Next are **Savegame settings**: 
- 
-{{wmebook:p3.jpg| Save games}} 
- 
 
wmebook/ch1.1196866122.txt.gz · Last modified: 2007/12/05 15:48 by metamorphium
Recent changes RSS feed Creative Commons License Driven by DokuWiki