Laser Moonlander

Moonlander game on a show laser system

I am a big fan of laser shows. Good music, bright light, vibrant colors. And then there's the technology: lasers, electronics, programming. All this became second nature to me. This virus already infected me during my early school days...

But I don't want to talk about laser shows directly. I want to write about a little mini-game I started to develop several years ago. It's a physics game where the Apollo Lunar Module has to be landed on the lunar surface by rotation and skillfully controlling the main engine. If the player lands too fast, the lander breaks apart and the game is over. The game is (like so many of my programming projects) programmed with the SDL library. It is very minimalistic. The displayed objects consist of dots and lines only. Perfect for a show laser system.

I am controlling my show laser systems, which I also want to report about later, with a digital to analog converter via USB. This output card is commercially available and can be addressed by any common laser show software. However, there is a catch. The driver, with which the output card can be addressed, is available in the newest version only for Windows. In addition, the software is closed-source, what bothers me a little.

Since I like to work with macOS, I had to somehow reverse engineer the software for controlling the output card and get it to work under macOS. Reverse engineering is a very time consuming process, even if it's a very small program that doesn't have any major protections like obfuscation, etc. In the end I managed to rebuild the Windows driver in large parts for Unix and Linux. However, I do not want to publish the source code for the time being for obvious reasons.

In the following video one can more or less see how my show laser system renders the game. However, the lasers are so bright that the camera is mercilessly overdriven. In reality it looks better.

The game can be downloaded from https://github.com/MKesenheimer/Moonlander. The macOS and Linux drivers in the compiled version can also be found under this link.

If anyone is also looking for a housing for the Lumax Light Interface, they can download the 3D model here and print it out with a 3D printer.