February 16, 2013 — The first time I came across openlase a little over two years ago, my first thought was to write an openlase output driver for Word War vi:
I totally need to write an openlase output driver for Word War vi.
I instrumented Word War vi to see how many lines it draws per second, just to see if it was in the ball park, and in a 54 second run, it drew 2516975 lines, about 46000 lines per second. Since openlase is designed for a 48Khz sound card, I’m gonna take a wild guess and say that 46000 lines per second is beyond its capabilities. Oh well.
Last month, my friend Jeremy informed me that he’s building a laser projector, and suggested Word War vi would be something good to run on it. Great minds think alike, I guess.
But not quite, because Jeremy didn’t give up when I told him Word War vi makes ~40000 lines per second, two orders of magnitude more than the laser projector could handle smoothly. So we started cutting down models in the game, and reducing the number of sparks, debris and other crap in the game, like, oh, the frame rate. And holy shit, it’s actually playable!
Here’s a poorly shot video:
watch on youtube
The video doesn’t really do it justice. In person, the thing just looks incredible.
If you want to try it on your own openlase laser projector (all 10 of you on the planet) the code is on github, here: https://github.com/smcameron/wordwarvi on the open-lase branch. I will probably merge this branch to master fairly soon. To compile with openlase support, you will need to build openlase, and copy libol.h and libopenlase.so into the Word War vi source directory, then:
if you don’t have full color RGB, but only a monochromatic laser projector, you can do:
make OPENLASE=1 OPENLASEGRAYSCALE=1
It’s much better with color though. Everything kind of runs together in the monochrome version.
If you don’t have a laser projector, you can still try it, as openlase has a simulator. For color, you’ll need Jeremy’s modified variant of openlase: https://github.com/jv4779/openlase.
To run it in the simulator:
- Start qjackctl
- Start jack running at 48000Hz.
- Start the openlase simulator
- Start Word War vi (you will need to “export LD_LIBRARY_PATH=.” to pick up libopenlase.so.)
- Connect “libol” in qjackctl to “simulator”
You should see Word War vi running in both the normal gtk manner (but with cut down graphics and frame rate) and in the simulator. Input (keyboard) should be directed to the gtk window, but things are a lot better if you have a joystick, preferably an Xbox 360 joystick.
When we began cutting down Word War vi for the laser projector, I was a bit worried we’d never get it to be playable, so I made a 2nd game — very simple — a lunar lander simulator. Laser Lander. This game requires an xbox 360 controller. The buttons control 3 thrusters, and the idea is to land on the little rainbow colored landing pads. There’s no monochrome setting for laser-lander, as it was written in rather a hurry.