Estoy tratando de hacer un editor de imágenes y no logro hacer la opción de deshacer. Intente haciéndolo guardando el juego antes de hacer una acción ejemplo (dibujar un circulo) y al deshacer vuelvo hacia atrás cargando el juego guardado, pero no lo logro. Alguna idea amigos de como hacerlo.   :-\ :'(   

Lo que podrias hacer es ir guardando en un arreglo/vector las acciones que se van ejecutando y luego al ocurrir el evento/accion "deshacer", borrar el ultimo elemento y ejecutar las acciones en el arreglo.

global.accion[0]=accion1
global.accion[1]=accion2
global.accion[2]=accion3
etc...


O bien puedes usar tambien una pila, guardando el objeto antes del ultimo cambio y luego en la accion deshacer, sacar de la pila el elemento y cambiar el objeto actual por el antiguo.

global.acciones=ds_stack_create()
ds_stack_push(global.acciones,objeto/accion) //////metemos a la pila el ultimo cambio
ds_stack_pop(global.acciones)  ///////sacamos de la pila la ultima accion o cambio que se realizo.


Se que no es mucho, pero mas o menos esa seria la idea, espero que te sirva.
Saludos.