Acelgoyobis Table Editor

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.

Overview

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.

Brush bar

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.

Paint area

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.

Object bar

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.

Walls

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.

Wall layers

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:

Final look

You can verify the final appearance yourself by hiding the red and blue layers in the editor.

Objects

There are five types of objects you can put on the table:

TypeDescription
Gizmo’physical’ object: either a visible target or a detection area
Timerautomatic countdown that dispatches events when it reaches zero
Countersimilar to the timer, but it decreases its value when it’s explicitely told so
Bouncea rectangular area that makes the walls inside sort of elastic
Flipperthe 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.

Gizmo

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:

  1. dimensions: X, Y - coordinates of the top left corner; W, H - the distance between the top left and the bottom right corner (width and height). This means that a single-pixel object would have zero for both W and H.
  2. dynamic properties: visible - the object is drawn with black pixels (when it’s ‘invisible’ it’s actually drawn with white pixels!); active - the object reacts to being hit by the ball by executing its events (when inactive this doesn’t happen even if it’s visible). These properties are independent, so an invisible object can also be hit if it’s active. In the editor you can set the initial state for each object when each ball is launched.
  3. sprite related: sprite present - uncheck it if you don’t need a sprite, the resulting calculator file will be smaller. Note that the editor’s file format keeps your sprite data regardless of whether this box is checked.
  4. events

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.

Timer

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.

Counter

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.

Bounce

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.

Flipper

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.

Events

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:

EventDefinition
Score S1, S2Add S1 to the score and S2 to the bonus. Both S1 and S2 can be between 0 and 65535.
BonusIncrease bonus multiplier.
SetFlags G, FPerform binary OR of the flags of gizmo G and the value F.
ResetFlags G, FPerform binary AND of the flags of gizmo G and the value F.
Activate GSet gizmo G visible and active. (Same as SetFlags G, 6.)
Hide GSet gizmo G invisible and inactive. (Same as ResetFlags G, 249.)
SetCounter C, VSet the value of counter C to V.
Decrease CDecrease 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, VSet 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.