AGI Studio is a program which allows you to view, create and edit AGI games.
Its goal is to provide a friendly, easy to use interface to work with AGI games in a powerful, integrated environment.
Its features include:<p>
<li>Viewing of view and picture resources
<li>Editing of view and picture resources and the WORDS.TOK and OBJECT files
<li>Listening to sound resources
<li>Compiling and decompiling of logic resources
<li>Adding, deleting, extracting and renumbering of resources
<li>Rebuilding of VOL files
QT AGI studio is an enhanced port of the Windows AGI Studio v.1.31 developed by Peter Kelly. It is designed to closely resemble the original program, however some (hopefully non-critical) features are missing and some new features are added.
The picture editor is a port of the MSDOS Picedit developed by Lance Ewing.
The QT AGI studio online help was converted from the original (Windows) AGI Studio online help. Therefore, "I" in this help almost everywhere refers to Peter Kelly - the author of the Windows AGI studio.
The name "AGI studio" refers to the QT AGI Studio. There are a few differences between the QT port and the native Windows version, the relevant help text has been changed, but there is no list of the differences.
This command supposedly disables the <ahref="get_string.html">get.string</a> and <ahref="get_num.html">get.num</a> commands when the <ahref="prevent_input.html">prevent.input</a> command has been used, but it does not seem to do this so I am
There are five main ways an object's movement around the screen can be limited:<p>
<li>Control lines on the priority screen
For any of these, no part of the object's baseline (the bottom row of pixels of the object) can be on a part of the screen the object is not allowed on.<p>
<B>Control lines on the priority screen</B><p>
On the priority screen, the first four colours (0-3) have special meaning. Colour 0 (black) is an unconditional barrier. No object is ever allowed to be on parts of the screen with a pixel of this
colour in the priority screen.
Colour 1 (dark blue) is a conditional barrier. Objects are not normally allowed to be on a conditional barrier, unless the <ahref="ignore_blocks.html">ignore.blocks</a> command is used to allow them to do so.<p>
Colour 2 (dark green) is a signal barrier. This can be used to test if ego is walking into a certain place. Whenever ego is touching a signal barrier, flag 3 is set.<p>
Colour 3(dark cyan) signifies water. This is explained shortly.<p>
You can set up an invisible rectangular block on the screen using the <ahref="block.html">block</a> command. The interpreter will not allow objects to cross the borders of the block (unless they are told to ignore
blocks). You can remove the block using the <ahref="unblock.html">unblock</a> command. Objects can be told to ignore blocks using the <ahref="ignore_blocks.html">ignore.blocks</a> command and be told to observe blocks by using
the <ahref="observe_blocks.html">objserve.blocks</a> command.
Parts of the priority screen which are colour 3 (dark cyan) are considered to be "water". If you look at the priority screen of rooms that have lakes or rivers in them, you will usually see this. Parts
of the priority screen which are not colour 3 are considered to be "land". You do not have to use colour 3 to represent water - it could also represent some other surface such as ice, lava, sand, a
slippery floor, or whatever you need for that particular room.
Objects can be allowed only on water, only on land or on both. This is set be the <ahref="object_on_water.html">object.on.water</a>, <ahref="object_on_land.html">object.on.land</a> and <ahref="object_on_anything.html">object.on.anything</a>
Whenever ego's baseline is completely on water, flag 0 is set.<p>
The horizon is an invisible horizontal line, usually near the top of the screen. Its position is set using the <ahref="set_horizon.html">set.horizon</a> command.<p>
Normally, objects can not go above the horizon. This can be changed using the <ahref="ignore_horizon.html">ignore.horizon</a> and <ahref="observe_horizon.html">observe.horizon</a> commands.<p>
Objects are normally blocked by other objects on screen - that is, the baselines of objects are not allowed to touch each other. This can be changed, however, with the <ahref="ignore_objs.html">ignore.objs</a> and
To create a new game, select "New" from the game menu. You can choose whether you want to create a completely "empty" game, or a game based on the template. Once you have done this, select the directory
you want the game to be in (if this directory already contains an AGI game, the program will ask if you want to erase it).
The template game is a game with only one room, and all the menus, keys etc. already set up for you, along with names for most variables used and comments here and there. It is recommended you choose
this option, as you can jump straight in and start programming your first room from here. For more information on the template game, see the readme.txt file in the template directory.
When you create a game, only the data files (and source code, if based on the template game) are placed in the directory you chose.
There is no interpreter there. To run the game, you will need to install an AGI interpreter and specify the interpreter command line in the "Settings" menu. You don't have to install it in the same directory with your game - enough that it will be accessible by PATH, or just specify the full path in the "Settings". The interpreter must be version 2.915 or higher (but not version 3). You can usually find out the version number of an interpreter when
you enter debug mode in a game.
See the <ahref="files_used.html">files used by AGI</a> section to see what files you need to copy into the game directory. If you copy the files into the template directory, then whenever you create a new game from
the template these will be copied also.
Note: If you are using a newly written AGI interpreter, then the version number will probably be different but new interpreters should
support this format. The files you have to copy over will also be different.
The animation of an object is called "cycling". This is the successive display of several cels from the same loop in order. When you initialize an object, it cycles the cels in the first loop (loop 0)
by default. To change the loop number, use the <ahref="set_loop.html">set.loop</a> command. To change the speed of cycling, use the <ahref="cycle_time.html">cycle.time</a> command. If you want to display a single cel without
animation, set the loop number and cel number you want to display using the <ahref="set_loop.html">set.loop</a> and <ahref="set_cel.html">set.cel</a> commands and then use the <ahref="stop_cycling.html">stop.cycling</a> command (you can start
cycling again by using the <ahref="start_cycling.html">start.cycling</a> command).
Here is an example of initializing an object that displays cel 2 of loop 1 without animating:<p>
The objects aren't updated on screen until the start of the next cycle (or until the <ahref="force_update.html">force.update</a> command is issued), so whatever changes you make to an object's position or appearance
do not take affect till then.
Normally when an object is moving around, it's loop number is determined by it's direction:<p>
Direction Loop no
0 (not moving) not changed
1 (up) 3 (if loop 2 and 3 exist) otherwise not changed
2 (up-right) 0
3 (right) 0
4 (down-right) 0
5 (down) 2 (if loop 2 and 3 exist) otherwise not changed
6 (down-left) 1 (if loop 1 exists) otherwise 0
7 (left) 1 (if loop 1 exists) otherwise 0
8 (up-left) 1 (if loop 1 exists) otherwise 0
The direction is only chosen automatically if there are less than 5 loops in the view assigned to the object.<p>
To stop the interpreter from chosing a loop number based on the object's direction, use the <ahref="fix_loop.html">fix.loop</a> command. To let it chose the loop number, use the <ahref="release_loop.html">release.loop</a> command.<p>
To play the animation in reverse, use the <ahref="reverse_cycle.html">reverse.cycle</a> command. To play it forwards again, use the <ahref="normal_cycle.html">normal.cycle</a> command.<p>