TypeScript MIT

RPG-JS

Framework to create an RPG or MMORPG (with the same code) in the browser with Typescript

R

RSamaium

Dernière activité 28 sept. 2026
RSamaium/RPG-JS

1,7 k

étoiles

246

forks

2

issues ouvertes

browser-rpggamemmorpgmutliplayerrpg

Ce README est souvent en anglais.

RPGJS

Build the RPG you always wanted to make — then put it online as an MMORPG, with the same code.

npm version Downloads MIT License GitHub stars Discord Follow on X

Quick start · Documentation · Watch the intro · Discord

Real-time action combat running in RPGJS

RPGJS is a TypeScript framework for 2D RPGs and MMORPGs in the browser. Maps, events, dialogs, inventory, skills, combat, save/load, GUI and multiplayer synchronization are already there — you write the game, not the engine.

🎬 See it in action

Build an RPG Once, Run It as an MMORPG | RPGJS Explained From Empty Folder to Multiplayer RPG in 5 Steps | RPGJS Tutorial Spritesheets & Maps in RPGJS: Tiled or Your Own Map System
RPGJS explained
Build an RPG once, run it as an MMORPG
Getting started tutorial
From an empty folder to a multiplayer RPG in 5 steps
Spritesheets & maps tutorial
Tiled or your own map system

🚀 Your first game in 30 seconds

npx degit rpgjs/starter#v5 my-rpg-game
cd my-rpg-game
npm install
npm run dev
  VITE v8.0.16  ready in 654 ms

  ➜  Local:   http://localhost:5173/

  RPGJS v5.0.0  RPG

  ➜  Game:    ./src/standalone.ts
  ➜  Server:  runs in the browser (standalone)

Open the link: your hero is already walking around a map. Prefer to follow along? Watch the 5-step getting started tutorial.

🌐 One codebase, two games

The gameplay you write runs on a server-owned model from day one. Switching from a single-player RPG to an MMORPG is a runtime choice, not a rewrite.

Standalone RPG MMORPG
startGame({
  ...config,
  providers: [provideRpg(startServer)],
});
npm run dev
startGame({
  ...config,
  providers: [provideMmorpg({})],
});
RPG_TYPE=mmorpg npm run dev

In MMORPG mode the server stays authoritative, each map becomes a synchronized room, and the client predicts movement so the game still feels instant.

✨ Gameplay reads like a script

import { type EventDefinition, type RpgPlayer } from "@rpgjs/server";

export function Merchant(): EventDefinition {
  return {
    name: "Merchant",
    onInit() {
      this.setGraphic("merchant");
    },
    async onAction(player: RpgPlayer) {
      const choice = await player.showChoices("Need something for the road?", [
        { text: "A potion (20 gold)", value: "potion" },
        { text: "Just looking", value: "no" },
      ]);

      if (choice?.value === "potion" && player.gold >= 20) {
        player.gold -= 20;
        player.addItem("potion");
        await player.showText("Safe travels!");
      }
    },
  };
}

Want enemies that fight back? Give an event a battle AI:

new BattleAi(this, { enemyType: EnemyType.Aggressive });

🎨 Beautiful by default

A map made with RPGJS Studio The prebuilt character selection screen
Maps painted in RPGJS Studio or Tiled Prebuilt, themeable game screens

🧰 What's in the box

🗺️ World Maps, world maps, Tiled support, events, shared and per-player scenarios, weather, lighting, day/night
⚔️ Gameplay Items, skills, states, classes, real-time action battle, projectiles, hotbar, save/load
🌐 Multiplayer Authoritative server, map rooms, client prediction and reconciliation, live map updates, accounts, chat
🖼️ Interface Title screen, dialogs, menus, shop, HUD, character select, themes, mobile controls, gamepad, Vue overlays
🌍 i18n One translation catalog for server dialogs, client menus and modules
🛠️ Tooling TypeScript first, Vite, Vitest testing helpers, dependency injection, modules and plugins
☁️ Deploy Node or Cloudflare Workers, with no lock-in to a database or host

🤖 Build it with your AI assistant

Teach your coding assistant how RPGJS v5 works:

npx skills add https://github.com/RSamaium/RPG-JS#v5

📚 Learn

  1. Quick start and project structure
  2. Create your first map and an event
  3. Design your GUI
  4. Save and load, translate your game
  5. Put your MMORPG online

Want the ideas behind the architecture? Read the RPGJS philosophy.

Coming from RPGJS v4? compatibilityV4Plugin() from @rpgjs/vite runs a v4 project layout on the v5 runtime. See the migration guide.

💬 Community

If RPGJS helps you build your game, a ⭐ on GitHub helps others find it.

License

MIT — free for commercial use.

Projets similaires

Biomes is an open source sandbox MMORPG built for the web using web technologies such as Next.js, Typescript, React and WebAssembly.

TypeScriptbrowserbrowser-gameengine
Iill-inc
2,7 k étoiles346

Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.

TypeScript3dbabylongame-development
BBabylonJS
26,1 k étoiles3,7 k

Online browser-based RTS game

TypeScriptbrowser-gamegameio-game
Oopenfrontio
2,7 k étoiles1,4 k