Skip to the content.

Luna Purpura

This software is totally a work in progress and very few things are actually functional. It’s still in a research phase.

Luna Purpura is a portable reimplementation of Purple Moon’s classic computer games from the 1990s:

It is a modern interpreter of the original game files. The goal is: if you have the original CD-ROMs, then you can play these games on today’s computers, even on platforms which Purple Moon did not originally support. You should also be able to use the engine to make your own games, too!

Support for Secret Paths in the Forest and the other Secret Paths games is planned, but not currently being worked on. Get in touch if you’d like to help out!

Building Luna Purpura

In order to build games and support libraries from Luna Purpura, you must have CMake.

$ mkdir build
$ cd build
$ cmake .. [cmake-options]
$ make

The following CMake configuration options are supported:

So, for example:

$ cmake .. -DLUNAPURPURA_DEBUG=ON -DLUNAPURPURA_PNG_SUPPORT=OFF

If you turn on the Lua bindings, you need to also define the following:

If you turn on the mruby bindings, you need to also define the following:

build.sh Usage

For the most basic use cases, we provide an easy script that does it all for you:

$ ./build.sh [make(1) args ...]

You can force a fresh, clean rebuild with the ‘clean’ argument:

$ ./build.sh clean

Using the tools

Currently, the most feature-complete software are the Ruby scripts in the tools/ directory. Most versions of Ruby >= 2.3 should work just fine on them. Note that these are merely prototypes which are designed to make research on Purple Moon’s exotic file formats easier. Eventually, the C implementation will become Luna Purpura’s reference code.

Actually playing games

Currently, we’re targeting LÖVE as the means to creating actually playable games. This means coming up with C code to decode the game files, and then devising Lua bindings so that a LÖVE application can access them.

LÖVE is merely an implementation detail for rapid prototyping. A more sophisticated, portable and standalone implementation – written in C and likely based on SDL – will eventually come around. But in any case, we expect that scripts will be used in some capacity, no matter what.

License

Luna Purpura is released under a highly permissive 2-clause BSD-style license. Take a look at the LICENSE document for more details.