I made a project in Game Maker that would draw a Mandelbrot Set fractal (depending on a few parameters). I ported the project to ENIGMA to test speeds of ENIGMA vs GM.

Visually this is what happened

(ENIGMA on the left, Game Maker on the right)

Speed-wise I got a 10-30 times increase in ENIGMA over GM

I was able to render a fractal in ENIGMA at 50 iterations per x,y coordinate about 10 times in the time it took for GM.

Anyways..

I can't wait to see how far the ENIGMA project goes! Great work so far guys!

The Mandelbrot Set script in GML for anyone who may want it:

`////////////////////////////`

//Mandelbrot set algorithm//

////////////////////////////

draw_set_color(c_black) //sets drawing color to black

draw_rectangle(0,0,room_width,room_height,false) //draws 'background'

screen_refresh(); //refreshes screen

xx = 0; //starting x point

yy = 0; //starting y point

Iteration = global._Iterations; //Maximum Iterations (Number of times it will redraw)

MinReal = global._MinReal; //Minimum Real Number (Smallest, Negative)

MaxReal = global._MaxReal; //Maximum Real Number (Largest, Positive)

MinIm = global._MinImaginary; //Minimum Imaginary (Smallest Imaginary, Negative)

MaxIm = MinIm+(MaxReal-MinReal)*room_height/room_width;

//Maximum Imaginary (Largest Imaginary, Depends on Others)

RealFac = (MaxReal-MinReal)/(room_width-1); //Real factor

ImFac = (MaxIm-MinIm)/(room_height-1); //Imaginary Factor

cReal = MinReal + xx *RealFac; //C real start value

cIm = MinIm - yy * ImFac; //C Imaginary start value

for (yy = 0; yy <room_height; yy+=1)

{

cIm = MaxIm-yy*ImFac; //New C Imaginary value

for(xx = 0; xx<room_width; xx+=1)

{

cReal = MinReal+xx*RealFac; //New C Real value

zReal = cReal; //Z Real value

zIm = cIm; //Z Imaginary value

isTrue = true;

for (i=0; i<Iteration; i+=1)

{

zR2 = sqr(zReal); //New z[Real]^2

zIm2 = sqr(zIm); //New z[Imaginary]^2

if (zR2+zIm2>4) //if the 2 numbers are inside the fractal's limits

{

isTrue = false; //sets isTrue to false

if argument0 = true //if you want to draw a background color

{

draw_set_color(make_color_hsv(zR2*(5*i),0,i*10)) //makes a color

draw_point(xx,yy) //draws the color at the point

}

break;

}

zIm = 2*zReal*zIm+cIm; //New z[Imaginary]^2

zReal = zR2-zIm2+cReal; //New z[Real]^2

}

if (isTrue) //if the point should draw

{

if argument1 = true //if you want to draw inside the fractal image

{ //makes a pretty color for the inside of the fractal

draw_set_color(make_color_rgb(abs((i*zR2)*255),abs((i*zIm2)*255),abs((i+zR2*zIm2)*255)))

}

else draw_set_color(c_white) //else the color is white

draw_point(xx,yy) //draws a pixel at XX,YY w/ color

}

}

screen_refresh(); //refreshes the screen so you can see the fractal creating itself

//Putting the refresh here is faster than after a pixel is drawn.

sleep(1); //sleeps for 1 millisecond. Allows you to

//keep control of the window while drawing in GM

}

keyboard_wait();