Skip to content

isledecomp/isle.pizza

Repository files navigation

isle.pizza Frontend

A custom web frontend for the Emscripten port of isle-portable, allowing LEGO Island to run directly in modern web browsers.

image

Requirements

Quick Start

  1. Clone the repository:

    git clone https://github.com/isledecomp/isle.pizza.git
    cd isle.pizza
  2. Install dependencies:

    npm install
  3. Obtain the game files (isle.js and isle.wasm) by building the Emscripten version of isle-portable, then copy them to the project root.

  4. Set up the LEGO Island game assets:

    npm run prepare:assets

    This will prompt you for the path to your LEGO Island installation or mounted ISO and create the necessary symlinks. You can also provide the path directly:

    npm run prepare:assets -- -p /path/to/your/LEGO
  5. Generate the save editor asset bundle (requires game assets from step 4):

    npm run generate:save-editor-assets

    This extracts animations, sounds, textures, and character icons from the game files into save-editor.bin, used by the save editor's 3D previews.

  6. Start the development server:

    npm run dev
  7. Open the URL shown in the terminal (usually http://localhost:5173).

Scripts

Command Description
npm run prepare:assets Set up LEGO Island game assets via symlinks
npm run generate:save-editor-assets Extract save editor assets (animations, sounds, textures, icons) into save-editor.bin
npm run dev Start development server with hot reload
npm run build Build for production (outputs to dist/)
npm run preview Preview the production build locally

Project Structure

isle.pizza/
├── src/
│   ├── App.svelte         # Main application component
│   ├── app.css            # Global styles
│   ├── stores.js          # Svelte stores for state management
│   ├── core/
│   │   ├── formats/       # Binary file parsers/serializers (WDB, save games, animations, textures)
│   │   ├── rendering/     # Three.js renderers (BaseRenderer, VehiclePartRenderer, ActorRenderer, etc.)
│   │   ├── savegame/      # Save game constants, actor data, color tables
│   │   └── ...            # Audio, OPFS, service worker, asset loading
│   └── lib/               # UI components and pages (save editor, configure, etc.)
├── public/
│   └── images/            # UI images (menu buttons, tab icons)
├── scripts/               # Build and asset generation scripts
├── src-sw/                # Service worker source
├── index.html             # HTML entry point
├── isle.js                # Emscripten JS (not in repo, build from isle-portable)
├── isle.wasm              # Emscripten WASM (not in repo, build from isle-portable)
├── save-editor.bin        # Packed save editor assets: animations, sounds, textures, icons (not in repo, generated)
└── LEGO/                  # Game data directory (not in repo)

Building the Game Files

The isle.js and isle.wasm files are not included in this repository. To obtain them:

  1. Follow the isle-portable build instructions for the Emscripten target
  2. Copy the resulting isle.js and isle.wasm to this project's root directory

Alternatively, a Docker image that bundles the runtime with this frontend is available.

Tech Stack

  • Svelte 5 - UI framework
  • Three.js - 3D rendering for save editor previews
  • Vite - Build tool and dev server
  • Workbox - Service worker and offline support

License

See LICENSE for details.

About

Custom frontend for the Emscripten port of isle-portable

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6