Adventure Game Engine - Official Tutorial

Adventure Game Engine - Official Tutorial written by Sylvain Seccia and translated by Christophe Cuny Thi...
Author: Hilary Sullivan
0 downloads 1 Views 4MB Size
Adventure Game Engine - Official Tutorial written by Sylvain Seccia and translated by Christophe Cuny

This tutorial is designed to assist new users of AGE. It is designed to help you learn enough to design your first game. The author encourages you to create your own tutorials in order to contribute to the documentation and to the wider AGE community.

Copyright © 2015 Sylvain Seccia



Adventure Game Engine (AGE) is a free editor developed by Sylvain Seccia, which enables users to create 2D adventure games of the Point n Click persuasion, for Windows, Mac OSX, Linux, iOS and Android.

The strength and originality of AGE resides first in its scenario-building approach, which offers game authors an intuitive, easy and practical creation tool. No prior programming knowledge is required.. The primary mission of AGE is to empower authors to develop their Point n Click adventure game project simply, without any fuss. The philosophy behind the software is as follows/ to do one thing and to do it well. No sledgehammer to crack a nut! It goes straight to the point, without any generic functionality that would otherwise introduce unnecessary complexity that would lead authors away from their initial goals.

Copyright © 2015 Sylvain Seccia

By way of comparison, AGE will allow you to develop games in the style of the Lucasarts favourites such as Day of the Tentacle, Full Throttle, or Monkey Island ignoring verbs and the action scenes of these titles.

Copyright © 2015 Sylvain Seccia



Before learning AGE, it is important to understand its overall spirit and structure.

AGE uses the concept of assets. For information, an AGE is an XML file representing a game resource. There are six types of assets: game SCENES, les OBJECTS including characters, , DIALOGUES that lauch conversation between characters, PLAYERS that control characters, CINEMATICS that play videos and SHADERS that add visual effects in real time.

Multimedia files are not stored in assets. They are stored ion your hard drive, accessible from your standard file locator, and are not altered by AGE in any way. Copyright © 2015 Sylvain Seccia

All the elements are staged in the scenario editor, thanks to a system of nodal boxes. A nodal box comprises an input and an output so that boxes can be linked and chained. The logic of the game is handled by nodal box diagram, which means that all you then have to worry about is the validation of puzzles.

Here is a concrete example: your game hero needs to find a key and use it to unlock a door. To create the game logic for this first mission, there are two puzzles to implement and validate: To get the key and unlock the door. In this case, the chronological order is important, as it should not be possible to unlock the door before first obtaining the key.

Copyright © 2015 Sylvain Seccia

All that is required, therefore, is to chain them inside the editor.

Then, your next task is to validate the puzzles at the right time, that is to say at the time the player has triggered the relevant event. AGE will handle the validation of puzzles by verifying the chronological order of events, and to proceed with the unfolding of the scenario as you planned it for the storyline.

Copyright © 2015 Sylvain Seccia

It is crucial to understand that it is not possible to go backwards with puzzles. In order to better understand this principle, consider puzzles as events in the past, present or future in a world in which you cannot travel in time.

Copyright © 2015 Sylvain Seccia


Creating assets

{ montrer GUI sans projet } 3_00.png It is now time to get some practice to familiarise yourself with the interface/ we’ll do that by implementing the simple scenarios outlined previously. a. Project creation

To create a new project, click on FILE, the NEW PROJECT. Choose a project name and a location where your project files will be saved on your hard drive. A new folder will be created in the location of your choice. All necessary ancillary files will also be created at that time. At this stage, AGE has generated several assets on your behalf: a default scene with a background, an object representing your main character, and a player object that will be used to control your main character.

Copyright © 2015 Sylvain Seccia

AGE also generates three nodal boxes: START, which will always be the first box called when the game launches, END, which will be the last and a puzzle box, which will be used later.

Before we start in earnest, look at the Setting icon on the toolbar. Click on it to see the project configuration. It is here that you will change the appearance of your game. b. Object creation In our example, we are going to need three objects: a key, a door and a character. A Library folder containing the required assets has been created in the AGE folder.

Copyright © 2015 Sylvain Seccia

Start by creating the door. Click on the on the Create new asset icon (the 3rd one) and select the New Object menu. Assets must start with a letter that describes the type of asset: O pour objet, S pour scène, D pour dialogues, etc... This is required by the engine and cannot be altered. In our case, we create the object O_DOOR. The underscore and capitalised letters are not compulsory, but they are conventional and abide with good practice. When the object list is displayed inside the main window, you will see a new element appear with an XML extension. This file is located in the ASSETS folder. It is manually editable, but it it is strongly recommended that you do not alter this file. Double click on the line to modify the door in the object editor. Note that each asset type has its own editor. The object editor’s interface contains several groups of controls. Later, we will cover the editors in the lower part, which are reserved for scripts and events. Note also that the cat is the default picture for created assets. The Folder button enables direct access to the path containing the object’s image. The Update button refreshes the asset, modifying the XML file, and the textures PACK_XXX.png. When the editor opens, an update is performed automatically. The area dedicated to object properties is located in the right-hand side of the window. Without going into detail, know that it is possible to specify a pivot point by double clicking, to change the colour of text displayed for conversations, to change the speed of a character’s walk cycle, to add sub-objects, to apply image filters etc... Add a name to the object in the title field, in order to make it clickable in the game (My Door). On the left hand-side, the STOP, WALK and TALK animations are the default animations and only the STOP animation has a frame by default that is generated on creation. It is important to understand that every animation references a folder on your hard drive and that the editor only looks for the relevant sub-folders on your hard drive. Copyright © 2015 Sylvain Seccia

So, in order to change the cat into a door, you need to click on the Folder button and copy the file DOOR_CLOSE.png supplied with AGE STOP folder. Then, you need to delete RIGHT_00.png (the cat) et rename DOOR_CLOSE.png to RIGHT_00.png. While you’re at it, create an OPEN folder and copy the DOOR_OPEN.png file and rename it RIGHT_00.png also. Back inside the editor, you will need to refresh the asset by clicking Update. Then, place the pivot point at the bottom of the door (always in relation to the ground), activate the infinite animation loop OPEN and save the changes. Repeat all steps for the key. This object possesses certain characteristics not found in the door object. In Point n Click adventure games, some objects can be collected and kept in an inventory. In this particular case, AGE needs an icon to represent the object in order to display it in the inventory list. All you need to do is to place an ICON.png file at the root and update. To simplify this task, take the object image to turn it into an icon. This picture has to be square, and preferably measure 256x256 pixels for a full HD resolution. Now, you need to create the game’s main character. As the O_HERO asset already exists, just edit it as explained previously, adding the png files supplied with AGE.

Copyright © 2015 Sylvain Seccia

Of course, one would expect your game characters to be somewhat more evolved than static assets, which implied that configuring properties will require additional steps. To start with, play the WALK animation by clicking the Play button to visualise a preview. You will notice that the animation is a bit slow, as it is earmarked to play at 6 frames per second. Change the speed to 10 fps and watch the preview again: the result should look more natural. Now, activate the Flip RIGHT to ensure your character can walk left. Finally, give him a walking speed of 200 for both X and 100 for Y. Chances are you main character speaks. He will therefore need a TALK animation. TALK animations are different from other animations. You can either use them as standard animations, or activate a speech profile selected from a list. Choose the Neutral profile will work in most cases. And change the speed to 8 fps. Don’t forget to activate the Flip RIGHT for both TALK and STOP. Speech profiles are reminiscent of the LucasArts games: they rely on a set of three poses, with three frames per pose (head down, had in the middle and head up). In AGE, your character has four frames per pose or twelve frames in total: these will be played randomly while subject to certain constraints. That’s it: we’re done with creating objects. c. Creation of a player A player is assigned an inventory and enables the control of a character (object). To create a player, you will be using the same button on the toolbar, but as our project already contains a player created automatically when the project is generated, we can skip this step and edit the existing player.

Copyright © 2015 Sylvain Seccia

The player editor is very simple, as you can see on the screenshots; It only displays two parameters. It is possible to activate or deactivate the scrolling as the camera follows the character moving left or right.

Before we proceed, let’s clarify game behaviour in relation to the many alternative computer screens, tablets and phones. You will know that screen ratios differ from one device to another. As a result, designing a game interface for various platforms becomes a particularly complex, sometimes insoluble, problem. As we said earlier, AGE is not a sledgehammer to crack a nut! Copyright © 2015 Sylvain Seccia

This is why AGE simplifies the problem by offering only horizontal scrolling. This ingenious fix is a real gift. All you need to know is that the height of the game will always be equal to the height of the destination screen. Scene scrolling only occurs when the width of the game is greater than that of the target screen. Note also that AGE forces a landscape mode on phones. The editor also offers an option to make scrolling smother. When the fluid mode is activated, camera movement blurs away progressively before stopping. This is the default scrolling mode. d. Scene creation

Copyright © 2015 Sylvain Seccia

The scene editor is where you will place your objects, characters and other components inside your scene. It is also here that you will define walking zones and the cells that will interact with objects. Edit the game scene by double clicking on the line. You need to differentiate between the object assets listed in the main window and the scene objects. An object can be featured in two distinct scenes but can only be visible in one scene at a time. Add our three objects to the scene by clicking on the diamond-shaped button, then move the objects arbitrarily in this way.

In order to enable walking for your main character, you need to define a walking zone. Double click on the character to enter edit mode. All components including the background switch to black and white and a 16x16 pixels grid appears on top. Two labels on the right control the depth. To see more clearly, use your mouse wheel to zoom in or out.

Copyright © 2015 Sylvain Seccia

Choose a larger pen size and press shift + left click to add cells between the position of O_KEY and O_DOOR. If you make a mistake, press the ctrl key to delete cells. When the walk path is correct, click on a green cell about midway on the path, right click and select "Set as default position" to define the character’s initial position in the scene. Before proceeding, test your game a few times. In the main window, click the "Build draft and test" button and move your character horizontally and vertically. Cool, isn’t it? Except that we come across our first issue. The size of the character does not change when s/he moves away from the camera. That is simple enough to fix: move the labels to the path and change the scaling percentage. Hand on: here’s another issue. When the character reaches the wall, the key should come to the foreground naturally. The issue arises because an object’s Y coordinate becomes a Z coordinate in the game to handle depth. Hence the importance of defining pivot points properly relative to the ground. But here, there is a problem because keys hang two metres high up on the wall. You therefore need to tell AGE the key’s position in «3D height. As the Y coordinate is not the height in 3D, but the depth, you need to modify O_Key’s "3D Height" property. As you do, a vertical line will appear to help you adjust the height. Preview the game again and see what these changes have brought.

Copyright © 2015 Sylvain Seccia

Now that you have set the scene, the next step is to interact with components. Once again, there is a simple way to do that in AGE without resorting to coding or scripting. Double click on the main character and select the green cell nearest the door. In the cell’s property, find the SELECT Object group and choose the O_DOOR object in the list. A red line appears between the cell and the door to indicate that they are now linked. When the player clicks on the door, your character will automatically advance to the door before triggering an event. Do the same for the key. Finally, don’t forget to define the cell required when the player selects the key with the door to solve the puzzle. You can use the same cell as before. Although your character kindly obliges by walking to the door, nothing happens. Click on the New button and then SELECT to create a new event. Select O_KEY and edit the script. The logistics are as follows: your character needs to take the key. This means that the key must disappear from the scene and find its way to the inventory. Nothing simpler, thanks to the take function. Type take and a space, then press the down arrow and finally validate by pressing the Enter key. Type another space and choose O_KEY. This instruction simply means that the P_HERO player puts the key O_Key in the inventory. The object therefore disappears from the scene. You can, if you want, add some visual feedback to highlight the fact that the player pocketed the keys: in this case, choose the function takeWithFx.

Copyright © 2015 Sylvain Seccia

Test your game: by clicking on the key ; the character get nearer and the visual feedback from the takeWithFx function is active. You can check the inventory by right clicking. The last step is similar except it has to do with the USE event. First, select the object in the inventory (O_KEY) together with the second object (O_DOOR). In the script, you just need to change the door animation using the anim function, as below. Test again to ensure everything is working as expected. We will revisit the scene editor to cover more of its functionality.

Copyright © 2015 Sylvain Seccia


Scenario unfolding with puzzles

We haven’t yet started to elaborate of the central theme of AGE: nodal boxed and puzzles. In order to build up the storyline, a player needs to validate puzzles as the game unfolds. There are five types of nodal boxes: puzzles (blue), stages (red), cinematics (orange), destiny (purple) and game start & end boxes (green). Each box has two scripts: an ENTER script and an EXIT script. The first script is run when the interpreter enters the box, the second as the box is exited. So far, no surprises.

a. Start and finish The START box, as its name indicates, is the first box to be executed, just as the END is the last to be executed. These boxes are unique and cannot be deleted. b. Stages The STEP box is used essentially to allow a better organisation of the diagram. When the interpreter enters a STEP box, it exits it immediately. c. Cinematics The CINEMATIC box plays a video. The interpreter stays within the box until the video ends or is interrupted by the player. d. Puzzles The PUZZLE box adds a puzzle to the storyline. Unlike previous boxes, the interpreter remains within the PUZZLE box as long as the relevant puzzle has not been solved. A puzzle can be validated in two ways: either using the success function, or using the properties of some editors (the dialogue editor in particulars). Let’s look at linking boxes together, as there are three possible configurations.

Copyright © 2015 Sylvain Seccia

The simplest case is when two boxes are linked in a chain. In this case, the second box is only executed when the first is resolved. To be more precise, the editor functions as follows:     

1. It enters the first box and executes the ENTER script. 2. It waits inside until the player solves the puzzle. 3. After puzzle validation, is exits the box using the EXIT script. 4. It then enters the second box, executing its ENTER script. 5. It waits inside for the second puzzle to be solved.

This model is appropriate for sequential puzzles. It is simple to implement but poor in terms of galeplay.

Copyright © 2015 Sylvain Seccia

In the case where two boxes connect to a third one, the interpreter will of course wait until the first two boxes are resolved before entering the third. This slightly more complex model allows a player to solve puzzles in a non pre-determined order.

The last case if more difficult to picture at first glance. That is when one box connects to two boxes. The ENTER scripts from the last two boxes are executed only when the first box is exited. This model enables non-linear puzzles after the resolution of an initial puzzle. e. Destiny If your storyline is open, allowing the game to change tracks according to choices made by tuskers, it is recommended that you use DESTINY boxes, whose purpose it is to create branches. The box is somewhat similar to the PUZZLE box. But instead of calling the success function, you must call the destiny function and specify which branch to follow. Beware: it is not possible to change tracks once a specific branch is being followed. However, it is possible to get two branches to merge, eventually, and therefore to become the parent branch. To facilitate the development of the game, you can simulate a full game path from the scenario editor, using the context menu of the DESTINY box. f.


Copyright © 2015 Sylvain Seccia

We alluded to this briefly above: it is possible to associate a script to both entering and exiting a box. But what is a script, after all? Scripts implement actions or test conditions. A script is a set of instructions, each instruction on a separate line. An instruction can be made up of an optional conditional word (if, else...), a compulsory function (take, anim...) and parameters separated by a space. There are no loops or complex conditions in AGE. Mathematical operators are also absent as this is not so much a language as a system of actions and conditions. The reason we chose not to implement a full language is simple: Your work is not to program a game here, but to let let the various characters in your storyline interact. In other words, see yourself as the film director who issues guidelines to the various actors. So the purpose of a script is to pick up objects, to change animation, to move a character, to initiate a conversation, and above all to validate puzzles to move along the storyline, meticulously following your scenario in a totally autonomous manner. However, we need to differentiate between two types of scripts: scenario scripts (nodal boxes) and event scripts associated with assets. For example, conditions are not allowed in scenario scripts, and certain functions are only available in certain cases. A warning icon will be displayed on the left of the instructions to let you know when a certain function is authorised but not recommended in events. In short, code likely to modify game states is to be placed preferably in scenario scripts, as it is the only way to recreate a path via the editor to start the game from any box. We will talk about this again in the chapter dedicated to testing.

Copyright © 2015 Sylvain Seccia

There is an html file, accessible from the toolbar that references an exhaustive list of the actions, conditions and events of the game engine. Do consult it every time you are unsure about the scripting language. g. In practice After this theoretical aside, let’s get back to our game. Rename the PUZZLE box "TakeKey" and create two new PUZZLE boxes you will name "OpenDoor" and "SaveTheWorld". Delete the connection between "TakeKey" and "END" by double clicking on the exit connector. Then link the boxes linearly. It is always better to break down puzzles into smaller components. Of course, you could do this without "TakeKey", but breaking down each stage will make it easier to debug your game subsequently. Move the "takeWithFx" function into the "TakeKey" EXIT script, then write "success TakeKey" in its place in the event. Success and Destiny are functions associated to events only. Now write "success OpenDoor" in the USE event for that de la scene. Now, your game is able to validate the first two puzzles. Not convinced? Test it !

Copyright © 2015 Sylvain Seccia


The scene editor

Let’s get back into the scene editor to learn some more functionality. After a bird’s eye view of the functionality, we will now take a closer look at cells, events, labels and goals. Each event has its own script in which you can write actions and conditions. a. Cells

Each object has its own cell sheet. In fact, it can have up to eight distinct cell sheets. An object moves either because the player has clicked on the scene, or because you have called the walk or post functions. An object can only reach coloured cells. It is up to the engine to optimise the path from one cell to another (the shortest path with as few direction changes as possible). If a cell is red or orange, it means that you have modified its properties. Click on a green cell to select it. A small white square appears inside. To deselect it, click outside the cells. If you keep the mouse button down, you can select several cells. Don’t hesitate to change the pen size to make it easier to handle cells. Click again on a green cell and focus on the properties on the right hand-side.    

The index corresponds to the column and line number. The default name is CELL. The trigger pour receive an event when the object reaches the cell. It is possible to force certain directions as the object moves.

In addition to specifying an object to associate with a cell, you can also launch an animation and choose its direction. If you also specify a puzzle, the animation will only be played if the puzzle is solved. This is a way to add a condition without resorting to the script.

Copyright © 2015 Sylvain Seccia

In order to save the world, your character will have to go through the open door. S/he must be prevented from going through the closed door, of course. The solution here is to use triggers. First, extend the cell rank to the right, then select a cell near the door to turn into a trigger. Name it (LIMIT). Do the same for the last cell (END) which will be used to conclude the game. b. Events

A list of events is available by clicking the New button. Here are some explanations about event triggering:          

SELECT : when the player clicks on an object or a character. SELECT EX : when the selectEx function is used. LABEL : when the player clicks a LABEL. DOOR : when a player clicks on a door DOOR. USE : when a player uses an inventory object with another object. USE LABEL : when a player uses an inventory object with a LABEL. CELL IN/OUT : when an object enters or exits a trigger cell (event property activated). POST : when the post function is used. ENTER/EXIT : when the game enters or exits a scene after calling the jump function. DELAY : when the delay function is used to receive an event after a delay defined in milliseconds.

Add an event CELL IN, select the O_HERO object, then the LIMIT cell. If you have understood the principles behind triggers, you will also have understood that the event script will be called as the character reaches the LIMIT cell. For this first trigger, you want the character to stop and to remain blocked by the closed door. First, you need to text the state of the door: open or closed? There are several ways to get at the information, such as verifying with door animation is playing currently. This method is not recommended; it is better to use puzzles to do this. Don’t forget that the diagram

Copyright © 2015 Sylvain Seccia

represents how far into the game the player is. You can know at any time if a puzzle has been solved using the isResolved function. Write the following code to check that the puzzle has not yet been solved. (ifNot isResolved OpenDoor). If the door is closed and there are no bugs in your game, the OpenDoor puzzle has not been solved. The CELL IN and CELL OUT events accept return values. By default, the return value is 0; but if you return a different value, the AGE will stop the object and cancel the last movement. That is precisely what we’re after. Do the same thing for the END trigger and validate the ultimate puzzle in the script. That’s it, you’re done. You game is finished and you can play it now. c. Labels A label is a clickable rectangular defined directly in a scene. This means you don’t have to create an object just to click on some background component. By default, labels are positioned behind objects, but it is possible to bring them on top using the Forward property. d. Doors Doors function like labels but with the added characteristic of giving feedback adapted to changes in the scene. The cursor and the colour of the door name change to indicate to the player whether it is a portal to another scene. It is a visual code which you can elect not to use in your games if you don’t want to. e. Goals

AGE integrates a state engine in scenes using a goal system. A goal has a list of actions to implement, or rather, a list of states. For example, if a guard is doing the rounds, he will be called upon to follow a series of looping behaviours. The idea is to define all the states of his sentinel duty which will be Copyright © 2015 Sylvain Seccia

encapsulated into a single goal. For now, let’s leave aside this aside as it is relevant for more advanced uses of AGE

Copyright © 2015 Sylvain Seccia


The dialogue editor

Let’s finish the body of this tutorial by talking about dialogues: they are, after all, the bread and butter of an adventure game. AGE offers numerous features to intitiate conversations between characters without resorting to multiple lines of code. First, notice the difference between red and blue boxes. Red boxes are clickable choices, displayed at the bottom of the screen. Blue boxes are the actual sentences uttered by the character, including the main character. a. Scripts

In addition to the two scripts executed at the beginning and end of a conversation, each box own its own script, which is always executed at the end of a sentence. b. Choices A default sentence is always attributed to the player, except if you select the "Do Not Say" property. A box represents a choice, but it is possible to offer several choices inside a single box by separating choices with a blank line. A separator is then displayed. If you activate the "Randomly" option, a single choice will be offered at random. It is also possible to make the box invisible by setting its "Visible" property to false. The showChoice and hideChoice functions allow you to control visibility from the scripts. Finally, by default, a choice disappears automatically from the list after being selected by the player. That is to say that it becomes invisible. If you prefer it to be persistent, activate the "Never Hide" property. You can always make it disappear at will using the hideChoice function anyway. If the first choice is visible and contains no text, it will be used by AGE by default. You can only place sentences underneath choices belonging to the same branch. By default, AGE mixes the order of display of sentences randomly, so that you can organise your dialogues easily without impacting gameplay negatively. This option is accessible in the game options. Copyright © 2015 Sylvain Seccia

The first thing to do is to specify the object that will say the sentence using the "Speaker" property. The object must be present in the scene. As for choices, you can use blank line to create sub-sentences. They are linked to the sub-choices of the preceding CHOICE box, but only if the "Randomly" property is deactivated. A carriage return without a blank line will display the text in a new paragraph. Do make use of paragraphs to add rhythm to your dialogues. Paragraphs are easily identifiable as they are preceded by a full stop. c. Options Here are some of the options available:          

Direction: Changes the direction of the speaking character. Look at: Look towards an object. Keep New Dir: Sticks to the direction previously selected. Animation: Changes the speaking animation. Keep New Animation: Sticks to the last speaking animation selected. Hide Branch: Hides a whole branch. Goto: Jumps to another box whose identifier you need to specify (-1 returns to the root of the tree). Exit: Interrupts the discussion (equivalent to the shutup function). Success On Show: Validates a puzzle after a particular choice selection. Show On Success: Activates a choice after a puzzle is validated.

À vous de tester ces options ultérieurement. d. Shortcuts It is possible to copy a box (Ctrl+Shift+C) or a complete branch (Ctrl+C) and paste it into any game asset. It is possible to move boxes using ctrl and shift, following the instructions displayed on the screen. e. A little trick you might want to know about It is often the case that you need to offer new choices after a particular answer. Of course, you could use scripts to automate the process. However, this may not be a trivial matter in certain situations where, for example, you need to produce a third choice only when the first two answers have been triggered.

Copyright © 2015 Sylvain Seccia

Without writing a single line of code, select the box destined to be displayed. Press alt and click on the box, which will then fire up the new sentence. Notice the that indicates that they are linked, and the green background. Note also that the "Mutual Show" show property now contains the identifier of the choice to be displayed. Now, do this again for the second sentence. f.

Launching a conversation

Launching a conversation is very simple: all you need to do is to call the talk function. The first parameter is a DIALOG asset and the second is the box identifier. By default, the conversation begins at the root of the tree if visible choices exist. g. In practice To practice using dialogues in your game, you are going to breathe life into your door and make it talk. To do this, create a new D_DOOR asset of DIALOG type, and edit it. Add two red boxes (choice), then two blue boxes (sentences). Specify some options. Finally, add a third choice that will only appear after the first two have been triggered. Back in the scene, add a SELECT event for the door. Then, simply write talk D_DOOR.

Copyright © 2015 Sylvain Seccia

Let’s see...

Copyright © 2015 Sylvain Seccia


Testing and exporting the game

{ montrer le build draft } 7_00.png The simplest way to test your game is to generate the Windows version in preview mode from the toolbar. This mode ignores palettes (graphical filters) and some optimisations and references the png files directly without using texture packs. On average, using preview mode is around 7 times faster.

You can also simulate part of your game from a given point. Just select a box and press space. Previous boxes are considered as validated. Code located inside assets will be ignored. This is why it is important to alter game states only in scenario scripts, whenever possible. There could be some discrepancies compared to the release version as some variables cannot be initialised correctly. The simulation of part of the game is designed mostly to move forward in the storyline without having to play and save game states first.

Copyright © 2015 Sylvain Seccia

To generate a higher quality preview of your final result, you will need to open up the Build window and click on "Debug & Play". In order to distribute your game, you need to build release versions for each target platform.

That being said, before generating the release version, it is recommended that you clean up the png files by clicking "Update Assets" then on "Solidify PNGs". For Android, you need to install the official SDK to sign your apk files. The AGE.apk file is pre-signed and must only be used for tests. For iOS, you will need Mac OSX installed to test your game on an external device. Copyright © 2015 Sylvain Seccia



Copyright © 2015 Sylvain Seccia