[sf-perl] November 28: Steve Fink on the Metreon Game

Steve Fink sphink at gmail.com
Sat Nov 18 15:12:12 PST 2006


On 11/10/06, Quinn Weaver <qw at sf.pm.org> wrote:
>
> You know that thing in the Metreon?  The video game that's projected
> onto the floor, where you can run around and "kick" objects, and they
> bounce around?  http://westfield.com/metreon/
>
> Turns out it's written in Perl.  Our own Steve Fink will talk
> about how he used XS and OpenGL to accomplish the task.  This will be
> a highly technical talk.


To clarify: the system is not really "written in Perl". It is written in
C++, but both extends and embeds Perl as a scripting language for advanced
functionality (or, not uncommonly, working around bugs in the built-in
functionality of the last release!) I did it in such a way that you *could*
implement almost anything in Perl that you could in the C++ code, although
in practice we limit our use of Perl to areas where scripting is just a much
better fit (complex behavior, integration with external services,
prototyping).

Most of my talk will not be directly related to the Reactrix system,
however. Instead, I'll be focusing on using Inline::CPP to extend Perl
(though most of what I say will apply equally well to Inline::C, which is in
general a safer bet.) I'll describe how to do it with a simple example in
hopefully enough detail that you can use it for any wacky ideas you might
have, then move on to talking about all the bumps I needed to smooth over
when using this stuff in production (example: we have a couple of hundred
systems installed across the country in places like malls and movie
theaters, and for security and predictable maintainability, we'd really
prefer for it to not be compiling C++ code at runtime! Minimizing the number
of modules and devel libraries that need to be installed is also good.)

If I had no sense of taste whatsoever, I might title the talk "Perl
Extending and Embedding With a Production-Ready Inline Development
Environment". But I am not quite sick enough --  "PEE With PRIDE" goes a
little too far.

At the end, I'll talk some about how this stuff is used specifically in the
Reactrix system, and you can feel free to ask whatever questions you have. I
felt like Inline::CPP and the Reactrix Effects Engine were really (at least)
a complete talk each, so I didn't want to squish them together. The Reactrix
stuff is sexier, but I thought Inline::CPP might be applicable to more
people. If you guys aren't sick of the sound of my voice, I might do the
Reactrix Effects Engine talk sometime later (basically, using Perl to
implement real-time camera-driven reactive user experiences, or something
like that).

Or at least, that's the plan. I haven't done either talk before, nor
completely finished planning this one out.

If anyone has any opinions of what they'd like to see covered (all of
Inline, Inline::CPP, XS, etc. are open, though I'm not exactly the expert on
any of them), please let me know. Or if you don't care about Inline or XS,
and just want to hear about pretty graphical things, let me know that too,
before I bore the wits out of you.

Links:

Inline::CPP:
http://search.cpan.org/~neilw/Inline-CPP-0.25/lib/Inline/CPP.pod

Reactrix's (not so interesting) web site: http://www.reactrix.com

In my opinion, the best YouTube video showing the system:
http://www.youtube.com/watch?v=w6d48ksCpc8
(you can search for 'reactrix' for a few more)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/sanfrancisco-pm/attachments/20061118/826d847b/attachment.html 


More information about the SanFrancisco-pm mailing list