explaingit

netease/pomelo

11,884JavaScriptAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

A legacy Node.js game server framework by NetEase for building distributed multiplayer game backends, with support for mobile and web clients, no longer actively maintained as of 2017.

Mindmap

mindmap
  root((Pomelo))
    What it does
      Game server framework
      Real-time connections
      Multi-process routing
    Architecture
      Connector servers
      Game logic servers
      Chat servers
    Client support
      JavaScript
      Android
      iOS
    Status
      Legacy since 2017
      MIT license
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Study the architecture of a distributed game server to understand how player connections, routing, and broadcasting are structured across multiple Node.js processes.

USE CASE 2

Use the reference MMO demo Lord of Pomelo as a starting point for understanding how a complete multiplayer game server is assembled.

USE CASE 3

Run an existing Pomelo-based legacy game server and add new server process types without rewriting the core routing logic.

Tech stack

JavaScriptNode.js

Getting it running

Difficulty · hard Time to first run · 1day+

Project has had no updates since 2017, Node.js version compatibility and dependency conflicts are likely with modern environments.

Free to use, modify, and distribute for any purpose including commercial use under the MIT license.

In plain English

NetEase/pomelo is a game server framework built on Node.js, designed for building the server-side infrastructure of multiplayer games and real-time applications. It was created by NetEase, a large Chinese game and internet company. The framework provides the plumbing that game servers need: handling player connections, routing requests between server processes, and broadcasting events to multiple clients simultaneously. The core architecture is distributed, meaning rather than running everything in a single process, Pomelo splits responsibilities across multiple server types, each running as its own Node.js process. A game might have dedicated processes for game logic, chat, player position tracking, and the entry point for incoming connections. This design lets you scale by adding more server processes of whichever type is under load, without rewriting the core logic. The framework supports client libraries for multiple platforms including JavaScript, Android, iOS, and C, which means the same Pomelo server can accept connections from mobile apps, web browsers, and desktop clients at the same time. It also includes command-line tools for managing and monitoring running server clusters, and a performance testing tool. The README positions Pomelo as filling a gap in the open-source ecosystem: at the time of its development, there were few serious open-source game server frameworks compared to the large number of web frameworks available. NetEase also published a demo MMO RPG game called Lord of Pomelo as a reference implementation, showing the framework used in a complete working game. The copyright dates in the license run from 2012 to 2017, and the repository shows no recent activity, which suggests this is primarily a historical or legacy project. The license is MIT.

Copy-paste prompts

Prompt 1
I'm building a real-time multiplayer game server using NetEase/pomelo. Show me how to define a new server type for handling in-game chat, register it in the server config, and broadcast a message to all players in a room.
Prompt 2
Using pomelo's distributed architecture, help me write the server config file to set up three server types: a connector for player connections, a game logic server, and a chat server, each as separate Node.js processes.
Prompt 3
I have a pomelo game server running locally and want to add a new remote procedure call from the game server to the chat server. Walk me through defining the remote handler and calling it from another server type.
Open on GitHub → Explain another repo

← netease on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.