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!
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:
LUNAPURPURA_DEBUG
-- Enable debug outputLUNAPURPURA_BUILD_LUA_BINDINGS
-- Build the Lua 5.1 (or LuaJIT) bindingsLUNAPURPURA_BUILD_MRUBY_BINDINGS
-- Build the mruby bindingsLUNAPURPURA_BUILD_TESTS
-- Build the test applicationsLUNAPURPURA_PNG_SUPPORT
-- Enable conversion to PNGSo, for example:
$ cmake .. -DLUNAPURPURA_DEBUG=ON -DLUNAPURPURA_PNG_SUPPORT=OFF
If you turn on the Lua bindings, you need to also define the following:
LUA_INCLUDEDIR
-- Location of Lua 5.1/LuaJIT's header filesLUA_LIBDIR
-- Location of Lua 5.1/LuaJIT's libraryIf you turn on the mruby bindings, you need to also define the following:
MRUBY_INCLUDEDIR
-- Location of mruby's header filesMRUBY_LIBDIR
-- Location of mruby's libraryFor 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
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.
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.
Luna Purpura is released under a highly permissive 2-clause BSD-style license. Take a look at the LICENSE document for more details.