Custom frontend for the Emscripten port of isle-portable
Go to file
Christian Semmler d142d5f50d
Stabilize actor position when hat changes
Override centerAndScaleModel in ActorRenderer to exclude the hat
part from the bounding box calculation, so switching between hats
of different sizes no longer shifts the body/head position.
2026-02-07 22:30:41 -08:00
.github/workflows Skip service worker in dev mode and copy isle.js/isle.wasm on build 2026-01-11 20:59:55 -07:00
public Extract BaseRenderer to deduplicate actor and vehicle renderers 2026-02-07 21:51:28 -08:00
scripts Use Node.js built-in parseArgs for CLI argument parsing (#17) 2026-02-03 01:37:08 +01:00
src Stabilize actor position when hat changes 2026-02-07 22:30:41 -08:00
src-sw Migrate frontend to Svelte 5 2026-01-11 19:10:16 -07:00
.gitignore Migrate frontend to Svelte 5 2026-01-11 19:10:16 -07:00
index.html Improve Lighthouse LCP and accessibility scores 2026-02-07 15:38:48 -08:00
LICENSE Initial commit 2025-06-13 00:30:51 +02:00
package-lock.json Add dynamic tooltip positioning using Floating UI (#18) 2026-02-03 02:00:24 +01:00
package.json Add dynamic tooltip positioning using Floating UI (#18) 2026-02-03 02:00:24 +01:00
README.md Add prepare:assets script for game asset setup (#11) 2026-01-31 20:14:44 +01:00
svelte.config.js Migrate frontend to Svelte 5 2026-01-11 19:10:16 -07:00
vite.config.js Improve development mode experience 2026-01-11 21:11:32 -07:00
workbox-config.cjs Vehicle textures (#21) 2026-02-07 23:34:57 +01:00

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. Start the development server:

    npm run dev
    
  6. 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 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/              # Core modules (audio, OPFS, service worker, etc.)
│   └── lib/               # UI components
├── public/                # Static assets (images, fonts, PDFs)
├── scripts/               # Build 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)
└── 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
  • Vite - Build tool and dev server
  • Workbox - Service worker and offline support

License

See LICENSE for details.