AGTEdit allows you to build your own tables for Acelgoyobis. You need the Java Runtime Engine to run it. Start AGTEdit.jar to get going. This is a condensed manual of the program. When you are familiar with the editor you should also read the design guide, it will clear up a lot of things.
When the program is started you begin with an empty table. You can either load or save tables (xagt files) or export them to calculator binaries (all 82p, 83p and 8xp files are created). When you export a file, simply use the same filename as the saved table. The program will automatically remove the xagt extension and replace it with the appropriate ones.
The editing screen is divided into three principal parts:
The brush bar contains the tools needed to paint the walls, while the object bar is used to manage the interactive elements of the table. The two components are united in the paint area.
There are three button groups on this toolbar. The first group determines which layers to paint on. The static part of the table is modelled using three layers: decoration (black), walls (red) and holes (blue). When e. g. the black and blue buttons are pressed, the decoration and the hole layer will be affected by the brush and the wall layer will be left intact. The significance of the layers is described below.
The second group is used to show and hide each layer individually. When a layer is hidden it is also protected from modification. E. g. if the black and the red layers are selected in the first group but the red layer is set to hidden in the second one the brush will only draw on the black layer. All three layers are shown by default.
The third group is for selecting brush shape. You can choose from four shapes from Br1 to Br4. The Obj button activates the object selection mechanism. In this state you can use the mouse to manipulate objects. More on that in the next section.
There are two modes of manipulation: painting and selection. Painting mode is active when one of the four brushes is chosen. You can paint by pressing the left mouse button and erase the components chosen with the right button (e. g. when the area is dark red and the red layer is chosen for painting erasing results in black colour). It is possible to drag the mouse in the process. When you are in selection mode (Obj is pressed on the left) you can select individual objects with the left mouse button and also drag them. If you want to select multiple objects just hold Ctrl while clicking with the mouse button. To move all selected objects simultaneously you don’t need to do anything special just drag one of them. Note that they will collide with the edges of the paint area.
You can also magnify the view using the Zoom menu. This is useful when working on small details. Besides, you can copy the decoration layer into the wall layer (check the Table menu). This is useful when you import an image instead of drawing it in the editor, because importing fills the decoration layer and clears the others. Note that an image must be 96x160 pixels big (gif, png, jpg or bmp), otherwise it cannot be imported. The program will convert it to black and white, but you are advised to do that yourself before this operation for the best result.
The object bar is divided into two parts: object list (top) and object editor (bottom). When there are no or multiple objects selected, you can edit the name of the table in the bottom part. When a single object is selected, you can edit its properties including its name. When changing the name of an object you have to press Enter in the text field, otherwise the change will be discarded. There is no need to press Enter in any other text field in the program. Information on various types of objects is below.
You can select multiple objects in the usual way by holding Ctrl or Shift (Ctrl for individual objects and Shift for intervals). All selected objects can be deleted at once. When a new object is created, it is inserted before the first selected one in the list. If you want to move an object in the list, you can use the up/down buttons next to Delete. They do not do anything when more than one object is selected.
As mentioned above, there are three layers: decoration (black), walls (red) and holes (blue). Decoration is what you’ll actually see in the game. The wall layer should be a simplified copy of the decoration layer: the walls should be completely filled, and the area reserved for the ball completely white or black without any red. The pixels on the boundaries of the red patches must be blackened on the decoration layer as well (so they should be dark red), otherwise the ball will go through them in the game. Use blue ink to open a hole on a wall. If any pixel has the blue (hole) component on, it will be penetrable regardless of the contents of the other two layers. This is only useful when you want a wall penetrable in one direction. If you want a ‘wall’ that’s completely penetrable, you should simply draw it with black without red.
The a) piece is simply a collidable blob with some decoration (white pixels) on it. The b) case is a wall that can be entered only from the left, while the c) wall can be entered from both directions. This is how they’ll look like in the game:
You can verify the final appearance yourself by hiding the red and blue layers in the editor.
There are five types of objects you can put on the table:
Type | Description |
---|---|
Gizmo | ’physical’ object: either a visible target or a detection area |
Timer | automatic countdown that dispatches events when it reaches zero |
Counter | similar to the timer, but it decreases its value when it’s explicitely told so |
Bounce | a rectangular area that makes the walls inside sort of elastic |
Flipper | the paddles you can control the ball with |
Additionally you can use ‘Comment’ objects that don’t affect the table at all but might be put into good use by documenting your work.
The details on each one are discussed in the following sections.
The primary use of these objects is creating hittable targets. When the ball touches a gizmo that’s active, the associated event script is executed. The event system is described later.
Each gizmo has the following properties:
Some of the properties are stored in an 8-bit flag that can be manipulated during game. The flag's bits are the following:
Sprite editing happens in the little window. Press the left button to draw black pixels, and the right button for white pixels. The white pixels will let the background show through, the black pixels will be black or white depending on the visibility of the gizmo while in the game. You can use the ‘Fit size’ button to set the W and H values in accordance with the sprite data.
Important: you must have at least one gizmo, otherwise the table will cause a crash. While you are testing the empty table in the early phase, you should simply create an inactive, invisible dummy object. More on this in the design guidelines.
The timer has only one property: a counter value. This value can be between 0 and 255. When it’s 0, the timer is inactive. When it’s positive, the game engine decreases it by one in each internal frame; a value of 255 gives you a couple of seconds. If the decrease results in zero, the events are executed and the timer goes inactive. To reactivate it simply give it a positive value. The one you specify is what it starts with when a ball is launched. If you want to deactivate a running timer without having its events run, simply set it to zero in an event.
The counter is almost identical to the timer in its behaviour. The only difference is the way it decreases: instead of the game time it is induced by the appropriate event.
This is a rectangular area, and the dimensions have the same meaning as in the gizmo. When the ball is inside in such an area the collision with the wall gives it an extra thrust away from the wall. There are no events associated with it.
These are the paddles that allow you to play the game in the first place. Simply put them in the appropriate place and set the direction by pressing the button next to the coordinates.
Important: when you select such an object you can see a 16x8 pixel area go grey. Everything in this area will be deleted to white while in the game, so you shouldn’t draw on it, because the background won’t make it to the screen anyway.
Event scripts are invoked when a) an active (but not necessarily visible) gizmo is hit, b) a counter reaches zero after decreasing, c) a timer reaches zero. An event script consists of consecutive events that are executed instantaneously in the time frame of the game. In reality, events are executed in the order you wrote them. Let’s see the elementary events:
Event | Definition |
---|---|
Score S1, S2 | Add S1 to the score and S2 to the bonus. Both S1 and S2 can be between 0 and 65535. |
Bonus | Increase bonus multiplier. |
SetFlags G, F | Perform binary OR of the flags of gizmo G and the value F. |
ResetFlags G, F | Perform binary AND of the flags of gizmo G and the value F. |
Activate G | Set gizmo G visible and active. (Same as SetFlags G, 6.) |
Hide G | Set gizmo G invisible and inactive. (Same as ResetFlags G, 249.) |
SetCounter C, V | Set the value of counter C to V. |
Decrease C | Decrease the value of counter C by one. If it reaches zero at this point, execute its events before going on with the current script. |
SetTimer T, V | Set the value of timer T to V. If V is zero, the timer is disabled without executing its events. |
The F and V parametres can take values between 0 and 255 only. In the editor they are always Par1. Par2 is only used by the Score event. The G, C and T objects can be picked from a list after the type of event is selected.
The score system works in a way similar to that of computer pinball games. There are three values that take different roles: score, bonus and multiplier. The score is what you see and goes into the high score table. The bonus is an additional value that’s multiplied by the multiplier and added to the score when a ball is lost. When a new ball is started, the bonus is reset to zero and the multiplier to one.