LegacyShell WikiLegacyShell Wiki
Back to LegacyShell
Home
Wiki
Plugins
Docs
Back to LegacyShell
Home
Wiki
Plugins
Docs
  • Documentation

    • Getting Started

      • What is LegacyShell?
      • Speed Setup
      • Requirements
      • Installation
      • First Run
      • Config Files
      • Making an Account
      • Troubleshooting (Getting Started)
    • Running a Server

      • Architecture Overview
      • The Database
      • Users and Ranks
      • Adding Game Servers
      • Client Mirrors
      • Perpetual
      • Backups
      • Rate Limiting
      • Moderation
      • Closed Mode
      • Deployment
      • Troubleshooting (Running a Server)
      • Hosting for Someone Else's Instance
    • Content Creation

      • Maps
      • Dealing with Babylon Models
      • Map Blocks
      • Items and Skins
      • Hats and Stamps
      • Sounds
      • Gamemodes
      • Seasonal Events
    • Plugin Development

      • Quickstart
      • I Want To...
      • Anatomy of a Plugin
      • Lifecycle
      • Dependencies
      • Events (Concept)
      • Event Reference

        • services: events
        • game: events — shared logic (src/shell/)
        • game: events — main-thread server process
        • game: events — per-connection client object
        • game: events — room lifecycle & tick loop
        • game: events — in-browser gameplay
        • client: events — client server & build pipeline
      • Commands
      • Client-Side Code
      • Static Assets
      • Content Packs
      • Networking
      • Workers and State
      • Prediction and Authority
      • Recipes

        • Recipe: Killstreaks
        • Recipe: New Pickup Item
        • Recipe: New Gamemode
        • Recipe: Custom Weapon
        • Recipe: UI Modification
        • Recipe: Discord Integration
        • Recipe: Replacing Core Behaviour
        • Recipe: Persistent Plugin Storage
        • Recipe: Rewarding Players with Currency
        • Recipe: Custom Per-Player Data
        • Recipe: Custom Theme
      • Publishing
      • Pitfalls
      • Modifiers
      • Sound and Apollo
    • Codebase Reference

      • Repo Layout
      • Shared Shell Layer
      • Server-Only Markers
      • The ss Object
      • Build Pipeline
      • Stamps and Babylons
      • Game Loop
      • Rooms and Workers
      • Wire Protocol
      • Generated

        • Wire Protocol Opcodes
        • Enums & Lookup Tables
        • Database Schema
        • Config Reference
        • Slash Command Reference
      • Services Internals
      • Catalog and Items
      • Permissions Internals
      • Physics and Collision
      • Known Quirks
      • Codebase Anecdotes
      • Development Timeline
    • Contributing

      • Documentation Style Guide
      • Generators
      • For AI Agents

What is LegacyShell?

Audience: Total newbies · Prereqs: None

LegacyShell is a from-scratch, open-source rebuild of the backend and browser client for Shell Shockers (shellshock.io), an egg-themed multiplayer shooter, preserved as it played at version 0.17.0 - plus a bunch of things the original never had (a commands system, new gamemodes, an in-game map editor, and a plugin system for adding your own features).

You can just play it in a browser like the original game. This section of the docs is for people who want to run their own copy - either to host a private server for friends, or to develop/mod it.

The three servers

Unlike a simple website, LegacyShell is made of three separate programs that talk to each other over the network. You don't need to understand how they work yet - just what each one is responsible for:

ServerWhat it doesAnalogy
ServicesKeeps the database - accounts, passwords, stats, inventories, which maps/items exist, which game servers are allowed to connect.The "back office." There should only be one of these per LegacyShell deployment.
GameActually runs matches - physics, hit detection, keeping every player's screen in sync.The "arena." You can run several of these (even in different countries) to spread out players.
ClientServes the actual web page and game files your browser downloads when you visit the site.The "storefront." You can run several of these too, as simple mirrors.

When you play LegacyShell in a browser, your browser is talking to a Client server to download the game, then to a Game server once you actually join a match, and a Game/Client server is separately talking to a Services server behind the scenes for account and stats info.

What you need to run all three yourself

For just trying LegacyShell out on your own computer, you run all three servers locally with one command (npm run all - covered in First Run), and everything talks to localhost. You don't need three computers, three IP addresses, or anything like that to get started.

You only need to think about running them separately once you want to do something like add a second game-server region, or run a public instance where the client is mirrored across several machines - that's covered in Running a Server.

What you need before installing

Just three things, expanded on in Requirements:

  • Node.js
  • Git (technically optional, but strongly recommended)
  • A terminal

Head to Installation next for the full walkthrough, or Speed Setup if you already know your way around Node/git and just want the commands.


This page was drafted with AI assistance and reviewed for accuracy. If something looks wrong, please open a PR or flag it.

Edit this page on GitHub
Next
Speed Setup