Building the Pokemon engine in JavaScript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Building the Pokemon engine in JavaScript


The goal for this project is to create a lightweight, browser version of the 1996 Nintendo game Pokemon. The game will be initially created in the style of the original Pokemon Red and Blue, but made highly modular to support multiple versions of the game engine, graphics and UI, rules, and Pokemon set.


The purpose for this project isn't to replace Pokemon or get people playing the game in browser instead of on the 3DS, but rather to investigate the behind-the-scenes mechanics that make the game so great and timeless, and eventually carry the lessons learned over into a new game.


Build complete battle engine

Build battle engine UI and sprites

Build "overworld" engine

Build "overworld" UI and sprites

Add all Generation 1 Pokemon

Tweak battle engine to match the modern version's more expansive ruleset

Add Pokemon from generations 2-7

Build the complete Gen 1 Kanto region

OAuth login for game saves

"New Game" options, including Support for an "enforced" Nuzlocke run (including variant rules)

Mobile interface

Build various visual interfaces that mimic generations 2-7

Testing Assets:

We'll begin testing the battle engine with only three Pokemon evolution lines (the Bulbasaur, Charmander and Squirtle lines, of course). This will limit the number of Pokemon and moves to a manageable size while giving a good, representative amount of diversity to the testing.

The overworld will begin testing with only Pallet Town, the brief path of tall grass to the north, and the short stretch of ocean to the south; but we will make the NPCs in the town battleable to test the integration between the overworld engine and the battle engine.

A note about the é:

Yes, the word should actually be spelled with an accent (Pokémon), which means that the name of this project should be "pokéjs" and the code should include accents wherever the monster or game is mentioned. While the game's title screen, UI, and dialogue will all use the correct form, I'm an English-speaking American developer, which means that the code itself will be limited to characters that actually appear on my keyboard. A keyboard that doesn't include é, unfortunately.

Development Blog:

I'm keeping a developer blog for this project at . Come take a look!