[Openmcl-devel] Simple Agent-based Engine 0.2

Alexander Repenning ralex at cs.colorado.edu
Sat May 30 10:04:11 PDT 2009

On May 29, 2009, at 11:30 PM, Neil Baylis wrote:

> OK, this thing is really cool. You've been burning the midnight  
> oil ;- I downloaded it a week or so back, and it was crashing and  
> burning. Today it seems much more solid, all the demos seemed to  
> work properly.

I am glad to hear that! Yes, a lot of midnight oil got burned...

The CCL IDE has still some issues but we are pretty excited about the  
result. XMLisp is really part of AgentCubes  which has been  
implemented with MCL and Allegro. The CCL version is already better  
then the MCL version (Carbon, non native threading) ever was. There  
has been a lot of discussion recently about things that are bad in CCL  
and some people pointed me to other Lisp implementation including PLT  
Scheme. I ran some benchmarks and the CCL version not only blew the  
doors off Scheme (running the same OpenGL demo 2x - 5x faster) but was  
also much more stable. Running multiple animations in different  
windows at the same time, resizing/moving window, changing the camera,  
running other stuff, ... no problem with CCL. OpenGL in Scheme, in  
contrast, fell completely apart. Doing just about anything using the  
mouse would slow the animation down or when moving or resizing any  
window stop the entire thing. Running even two animations at the same  
time: completely impossible.

A huge thanks goes to Clozure. The IDE including some of the debugging  
tools may still be rough but the basic machinery is amazing. Native  
threading, incremental garbage collection, incremental compilation,  
64bit, solid event handling will allow CCL to go where few, if any,   
Lisp implementations have gone before ;-) This is a powerful tool that  
not only does great compared to other Lisps but also in comparison to  
just about any programming language. I think Lisp programming is  
becoming fun again!

> This comes at a good time for me, as I'm just getting ready to start  
> a new project. Really it only requires 2d graphics (I was planning  
> to use Quartz 2d) but you've made the 3D very easy. I could probably  
> do it with 3D without too much trouble. It's an application that  
> places colored tiles from a collection into an on-screen rectangle,  
> subject to constraints.

OpenGL is actually quite good for these kinds of 2D applications. Have  
a look at AgentCubes:  http://www.cs.colorado.edu/~ralex/papers/PDF/AgentCubes_JVLC_article_inpress.pdf 
    Lots of 2D

> Questions:
> Is there documentation, or do I just need to read the code in the  
> source & examples?

documentation is planned and has started but for now the best  
documentation are the examples. It would help to hear what kind of  
minimal documentation people need.

> Is full-screen supported?

not yet but the MCL version already had this. I think we will go the  
same simple route. It may sound like a hack but has many advantages.  
The MCL version hides the menu bar and resizes the window so that its  
content becomes the full-screen. This is slightly slower but keeps  
event handling simple (you need to handle full screen event  
differently) and allows for other window layers to be on top. We need  
this for transparent annotation windows and drag and drop.

> Is Quartz 2D supported? (Quartz provides antialiased graphics on my  
> Mac, but OpenGL does not)

Apple has a nice demo of mixing Quartz, as layer, and OpenGL. The  
problem for us with this idea is that we need to be cross platform. We  
are exploring options with Clozure to get LUI with OpenGL to work on  
windows as well.

In OS X ultimately everything goes through OpenGL but certainly Quartz  
has some nice functions. Btw, OpenGL can do full scene antialiasing  
and XMLisp has that enabled by default. Are you not getting  
antialiased output? Some graphics cards need additional encouragement.

> Can I use it with Emacs & Slime, or must I use the embedded IDE?

I have not tried this but as long as you require :cocoa things should  
work. You probably need to replicate some startup code from the cocoa- 
application to get the event loop and other things initialized.

> (I hope the answers to these are 'yes', but none is a show stopper  
> for me).
> Thanks for making this available,

sure thing!

> Neil Baylis
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

Prof. Alexander Repenning

University of Colorado
Computer Science Department
Boulder, CO 80309-430

vCard: http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf

More information about the Openmcl-devel mailing list