abîme command reference - extended

abîme works on a "cursor list" which is modified by most commands. you start with a single cursor pointing upwards in the center of the screen.

for example, if you have five cursors, poly 3 will draw five triangles. Most arguments to commands are optional; the program will try to fill them with something that makes sense.

poly SIDES SIDELENGTH - polygon, need to add a parameter for side length. nodes from this are 'base', 'face' and 'corner'
rect LENGTH WIDTHBASE WIDTHTOP - rectangle. nodes are 'base', 'side' and 'top', need to add corner nodes
bend ANGLE LENGTH WIDTHBASE WIDTHTOP - rectangle that bends towards one side or another. nodes are 'base', 'side', 'inner', 'outer' and 'top'
cap ANGLE LENGTH WIDTHBASE WIDTHTOP - Like a rectangle but the sides are curved (by default, outwards)

from NODE - if the last command was poly or rect, pick cursors from the nodes in that object and start drawing from them
along FRACTION - done after from. offsets the cursor along the side you chose (0.0 - 1.0, default is 0.5)

trans X Y - translates cursor
rot ANGLE - rotates cursor, degrees clockwise
scale X Y - scales cursor

repeat N - repeats the following lines N times, takes the cursors produced at the end of the loop and continues execution with those
fork N - copies the existing cursor list N times and continues execution on all of them simultaneously
branch - executes the indented lines after the branch clause. if there is more than one branch clause in sequence, after executing all of them, combines their cursor lists

hsl HUE SATURATION LIGHTNESS - adds values to current HSL (0.0-1.0, default is 0 0 1)
hslset HUE SATURATION LIGHTNESS - sets values instead of adding them

mirrorx 1 - [WIP] makes it so building things from the left side of objects makes them mirrored horizontally. use it if you want to build horizontally mirrored objects with less hassle.


you can use basic math operators as well: +, -, *, /, even ( and )

x?y - returns a value randomly selected between x and y (inclusive). automatically determines whether to use integer or decimal values based on whether there's a decimal point on x or y

a,b,c,d.... - returns a value randomly selected from the list

x:y[:z] - Forks the cursor list Z times, executing the command with values evenly spread between X and Y

a;b;c;d... - forks the cursor list X times where X is the length of the list,  executing the command with one value of the list each time

@ - the length of the side this cursor is set on

Leave a comment

Log in with itch.io to leave a comment.