GithubHelp home page GithubHelp logo

jbaldus / lunapurpura Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dressupgeekout/lunapurpura

0.0 0.0 0.0 346 KB

Reimplementation of Purple Moon's games from the 1990s (WIP) - NOTE: ScummVM port in progress

Home Page: https://dressupgeekout.github.io/lunapurpura/

License: BSD 2-Clause "Simplified" License

Ruby 14.99% C 71.29% Lua 9.27% CMake 4.45%

lunapurpura's Introduction

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:

  • BOOL LUNAPURPURA_DEBUG -- Enable debug output
  • BOOL LUNAPURPURA_BUILD_LUA_BINDINGS -- Build the Lua 5.1 (or LuaJIT) bindings
  • BOOL LUNAPURPURA_BUILD_MRUBY_BINDINGS -- Build the mruby bindings
  • BOOL LUNAPURPURA_BUILD_TESTS -- Build the test applications
  • BOOL LUNAPURPURA_PNG_SUPPORT -- Enable conversion to PNG

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:

  • PATH LUA_INCLUDEDIR -- Location of Lua 5.1/LuaJIT's header files
  • PATH LUA_LIBDIR -- Location of Lua 5.1/LuaJIT's library

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

  • PATH MRUBY_INCLUDEDIR -- Location of mruby's header files
  • PATH MRUBY_LIBDIR -- Location of mruby's library

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.

Links

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.