Git Product home page Git Product logo

scumm-8's Introduction

SCUMM-8

What is SCUMM-8?

SCUMM-8 is a "demake" of the SCUMM engine (which powered most of the classic LucasArts adventure games, such as Monkey Island and Maniac Mansion) for the PICO-8 Fantasy Console, created by Paul Nicholas.

Made With PICO-8

See below for some games powered by SCUMM-8:

Return of the SCUMM H A L L O W EƎ N CODE-8 Perfectly Normal Apartment
SCUMM-8 H A L L O W EƎ N CODE-8 Perfectly Normal Apartment
(Play Online) (Play Online) (Play Online) (Play Online)

While it is heavily "inspired" by the SCUMM engine, it isn't a true replica (for that you'll want good ol' SCUMM-VM). However, SCUMM-8 attempts to stay as true as possible to the original SCUMM command reference.

"Cool, so does that mean I can play those old LucasArts games in PICO-8?!"

Er... no. SCUMM-8 cannot play those original games, just that it is intended to provide similar functionality within the (very limited) world of PICO-8.

"It don't work mate, waited forever and 'Monkey Island' never loaded!"

Wow, really? You still here?! OK, once again. Think of SCUMM-8 as an even more retro "mini-me" version of the classic SCUMM engine. Most of the features are planned, but the experience will be... shall we say... "cut down".

"Got it. . . . so what about 'Day of the Tentacle' then?"

*sigh* . . . "Look behind you! It's a three-headed monkey!" . . . *runs away*

Current Features

  • Multiple Rooms (Up to 32+ per cart)
  • Pathfinding for walking
  • Dialogs between Actors
  • Cut-scenes
  • Camera system (pan-to, follow, static)
  • Room transitions ("iris", cut)
  • Customisable Verbs
  • Fake 3D depth "Auto-Scaling" of Actors
  • Z-plane ordering of objects/actors
  • Custom scaling for Actors/Objects
  • Global-level (background) & Room-level scripts
  • Game start-up script
  • Object dependencies
  • Replace Color (to allow re-use of room/object gfx)
  • Adjustable Room Brightness Levels
  • Screen "shake" effect
  • Proximity (between Actors/Objects)
  • Animations for Actors and Objects
  • Multiple font sizes/styles

Getting Started

Please see the SCUMM-8 Wiki for details on how to get started creating your own SCUMM-8 game, as well as the the full API reference.

Building

Using Python 3:

python build.py

This will output scumm-8.min.lua, containing the minified engine code which you can copy to your own cart. It will also output new copies of game.p8 and template.p8, which should be committed to the repository.

Thanks & Useful Resources

A big thanks to Aric Wilmunder (ex-LucasArts developer) for sharing valuable SCUMM documentation. Particularly the SCUMM Tutorial (1991), the example room from which was the first room I actually created in SCUMM-8 (minus the cool Sam & Max gfx, of course)

Thanks also to Dan Sanderson for his picotool - specifically his minifying tool (luamin), which enabled me to squeeze MUCH more code under PICO-8's limits.

Shoutout to @PixelArtM, whose PICO-8 mockup inspired me to wonder whether this could actually be pulled off within the virtual console's limits (and then later used SCUMM-8 to make said mockup a reality!)

Some other great SCUMM resources I found along the way include the following:

Donation

As you can imagine, this project has taken MANY HOURS of spare time to develop.
So, if this project helped you out (and you're in a position to do so), feel free to buy me a drink! ☕ 😊

paypal

scumm-8's People

Contributors

benwiley4000 avatar liquidream avatar sparr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scumm-8's Issues

Compress Room/Object/Actor content to save space?

As the core engine takes up so much space, it would be nice if there was a way to compress the Room, Object and Actor content so that it all took up less space (# of tokens mostly).

Current thought is to use "packed" strings for all data except for functions (similar to the method described here).

One restricting factor is that whatever compression method is used, needs to "play nice" with the lua minifier, which drastically reduces the compressed size/character count.

[Documentation] How to use compressed tiles and maps

Inspecting the source code for CODE-8, it seems it uses an strategy consisting in load game parts dynamically and tiles and maps compressed. It would be very useful some kind of explaination about these techniques and how to use them.

Click to skip dialogue

CODE-8 adds a feature where dialogue can be skipped by clicking the mouse button.

This should be natively supported in SCUMM-8.

Build step

Would it be possible to include an automated build step as part of the repo so any changes to the engine can be built and reflected in the minified version included in the template?

Store additional sprite gfx in cart?

It would be nice if people had the option to swap-in additional sprite tiles for use in their rooms.

Ideally, this would not be stored in additional carts (as this makes the game incompatible with the Lexaloffle BBS).

Current thoughts are:

  1. Storing extra "pages" of sprite data in the cart's own data portion (though this may be needed for game saves)
  2. Storing extra sprite tiles as a single string, then swapping out at run-time (as detailed here)

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.