Bingo: 30+ fps [was Re: [cells-devel] I'm Back]

Kenny Tilton ktilton at nyc.rr.com
Sun Apr 25 23:00:48 UTC 2004



Michael Naunton wrote:

>Thanks, this looks really promising as a video game development
>environment:
>
Yes. I am fast (specifically, at around 30fps) losing interest in 
finishing the GUI to do educational software. Lisp always does this to me.

>  o  Cells gives us MVC for free.
>  o  Cello looks pretty good as a platform-independent GUI
>  o  Lisp gives us the abstractions we need to hide OpenGL's complexity.
>
And boy does it need hiding. But once hidden, the user can really have 
some fun. At 25-35fps.

>  o  Lisp makes so many tasks (asset management, etc) easy.
>  o  Sound is lurking in the wings.
>
With 3d effects, no less. This should be one of the easier bolt-ins 
(famous last words). But I am getting so busy now it is hard to justify. 
Maybe after a good day (like today?) I'll treat myself to adding OpenAL.

>The big win is, of course, Cells.  Cello demonstrates it's power.
>
Yep. I always figured Cells would not catch on without a "demo" GUI, 
though Cells transcend GUIs. But the GUI would have to be fast.

>  With
>the abstraction (A depends on B,) many software reuse issues just
>vanish.  
>
>With a few good examples on line, many newbie programmers are going to
>want to try this environment out.
>
...and serious gamers, too, perhaps. We've had a couple of newbies land 
on our shores in the past because Lisp is always being mentioned 
favorably on same gamers forum or other. Gotta remember to make an 
announcement over there when Cello gets a little polish.

Speaking of polish, I am hoping that is all we need. The groovy 
340-widget Light Panel now runs at 25-35fps. The variation now comes 
from the complexity of the shape being displayed! That used to be noise 
compared to the cost of re-rendering each frame the entire window. Now 
if I am just watching the thing spin I just need to re-render the 
spinning shape. Working a slider means that also needs to be 
re-rendered. Otherwise display lists (after a subtle tweak to the Cello 
imaging algorithm) do all the work. And they are almost working properly 
as well as fast. :)

No jumping up and down yet. Interactions with FTGL are spotty, but I 
think that is simply because FTGL caches its own display lists, and I 
think I am pulling the rug out from under it on each run by 
re-initializing OpenGL and not re-initializing FTGL. So it sits there 
happily using display list numbers OpenGL does not recognize (an NOP).  
It is really neat because as I click around individual letters disappear 
one or two at a time. Kinda Vanna White in reverse. Hang on. That can't 
be initialization then, because they always start out fine. We'll see.

Also, I am not sure the current rates will hold up. It may be that 
refreshing a display list requires refreshing all display lists above it 
in the tree. We'll see. That would still be mad fast I think. I am not 
refreshing up now and it works, but I think it should not, so no 
champagne yet.

>-- Michael
>(resisting the urge to port to CMUCL this second.)
>
Just curious: how did you reach all these conclusions? Don't tell me you 
actually read the code?! :)

kenny

-- 
Home? http://tilton-technology.com
Cells? http://www.common-lisp.net/project/cells/
Cello? http://www.common-lisp.net/project/cello/
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film 
Your Project Here! http://alu.cliki.net/Industry%20Application






More information about the cells-devel mailing list