Excalibur is a free, open source gaming project written in TypeScript and released under BSD-2-Clause. It has 2,361 GitHub stars, 228 forks and 36 open issues, and was last pushed 8 hours ago. On this registry it ranks #53 of 75 tracked projects in Gaming, with 5 head-to-head comparisons available. It gained 1 stars over the last 5 tracked days.

What is Excalibur?

Excalibur is a free, open-source 2D game engine written in TypeScript that renders to HTML5 canvas, aimed at both people new to game development and experienced developers who want the engine boilerplate and cross-platform browser targeting handled for them.

What it is

Excalibur is a game engine and framework for the JavaScript and TypeScript ecosystem, published as the npm package excalibur and as the NuGet package Excalibur. It is written in TypeScript, targets 2D games rendered to HTML5 canvas, and is developed in the open on GitHub under the 2-clause BSD license. The project ships user documentation and a fully annotated API reference at excaliburjs.com, a compiled sample collection, and a Discord community for support and discussion.

The concrete problem it addresses is the boilerplate sitting between an idea for a 2D browser game and a working one: the engine code, the cross-platform targeting, and the surrounding plumbing that each project would otherwise write and maintain itself. Rather than displacing a named competing product, it replaces that hand-rolled engine layer, and it is explicitly designed to be adopted incrementally, so a developer can use as much or as little of it as a given game needs.

Key capabilities

  • Provides a TypeScript 2D game engine and framework rendering to HTML5 canvas, covering the boilerplate engine code a team would otherwise write.
  • Handles cross-platform browser targeting, which the maintainers exercise using BrowserStack.
  • Is consumable incrementally, so a project can lean on a small part of the engine or on most of it.
  • Ships through two package managers, as the npm package excalibur and the NuGet package Excalibur.
  • Documents the API in a fully annotated reference at excaliburjs.com/docs, alongside installation and getting-started guides and a sample collection.
  • Is licensed under the 2-clause BSD license, which the README notes permits use in commercial projects.
  • Maintains an ecosystem of associated plugins, which the README cautions may be rough around the edges while the core remains in 0.x.

Who uses it and how

  • Newcomers to game development follow the Installation and Getting Started guides as a structured path into 2D browser games.
  • Experienced developers adopt it to skip the boilerplate engine layer while retaining control over how much of the framework they take on.
  • Commercial teams can build on it because the 2-clause BSD license permits commercial use.
  • Community members share projects in the GitHub Discussions "Show and tell" category and ask questions in the same Discussions area.
  • Documentation contributors work in the repository's /site directory, with Dev Container support offered in editors such as Visual Studio Code.

Getting started

Excalibur is installed from npm as the package excalibur, with a NuGet package Excalibur also published, and the Installation and Getting Started guides at excaliburjs.com/docs walk through the first steps.

How it compares

The facts provided name no paid products or alternative engines that Excalibur is positioned against, so it stands alone in this registry with no comparable entry recorded alongside it. Any contrast with other 2D web engines would have to be drawn from sources outside this listing rather than asserted here.

When to use it โ€” and when not to

Choose Excalibur when the goal is a 2D HTML5 canvas game and the value of having engine boilerplate and browser targeting handled outweighs the cost of tracking a moving API. Teams that need a frozen, 1.0-stable surface should wait, because the project is still in version 0.x, its API changes are minimized rather than eliminated, and breaking changes will occur in new releases; the README also warns that the project and its associated plugins may be a little rough around the edges. Setup is a package install with no server-side component mentioned in the facts, so the operational burden is the game's own build and hosting rather than infrastructure this engine asks an adopter to run.

project readme (upstream, from github) โ€” read inline

Logo

CI Coverage Status npm version npm downloads NuGet version Discord

Sweep Stacks

Excalibur is a free game engine written in TypeScript for making 2D games in HTML5 canvas. Our goal is to make it easier for you to create 2D HTML/JS games, whether you're new to game development or you're an experienced game developer. We take care of all of the boilerplate engine code, cross-platform targeting (using browserstack ๐Ÿ˜Ž), and more! Use as much or as little as you need!

Excalibur is an open source project licensed under the 2-clause BSD license (this means you can use it in commercial projects!). It's free and always will be. We welcome any feedback or contributions! If you make something with Excalibur, please let us know!

Get Started

Our user documentation is at https://excaliburjs.com/docs (and you can contribute to the docs at https://github.com/excaliburjs/Excalibur/tree/main/site)

:exclamation: Note: Excalibur is still in version 0.x, which means this project and its associated plugins may be a little rough around the edges. We try to minimize API changes, but breaking changes will occur in new released versions. Excalibur is a labor of love and the product of many hours of spare time. Thanks for checking it out!

API Reference

Visit the API Reference section for fully-annotated documentation of the API.

Questions

Samples

Compiled examples can be found in the Excalibur Samples collection.

Contributing

Please read our Contributing Guidelines and our Code of Conduct. Whether you've spotted a bug, have a question, or think of a new feature, we thank you for your help!

Writing Documentation

We love when people help improve our documentation. You can contribute to the docs in this repo under /site

Environment Setup

The Excalibur.js team primarily uses Visual Studio Code as a platform agnostic editor to allow the widest contributions possible. However, you can always use your own preferred editor.

Dev Container Support

In supported editors, you may be prompted to Open in a Dev Container. This is a great way to contribute if you don't want to install Playwright and its dependencies on your machine and keep everything isolated.

Dev Containers require Docker (or Podman) to be installed and should work across all platforms.

Supported Editors

Testing

Browserstack

Excalibur is committed to supporting the latest 2 versions of popular desktop and mobile browsers. We leverage browserstack automated testing to ensure that Excalibur is automatically tested as thoroughly as possible on all our supported platforms.

Prerequisites

After cloning the repository, run:

npm install
npx playwright install --with-deps

[!TIP] If you are using a Dev Container, this is handled for you automatically! The --with-deps flag installs system dependencies, which may be needed depending on your OS.

You can then run the npm tasks for various purposes:

# Run compilation, linting, and all unit & visual tests
# Recommend to do this before finalizing pull requests
npm run all

# Run engine core compilation only
# Useful for quick checks to ensure everything compiles
npm run build

# Run engine tests only (does not run compile task)
# Useful to run tests ad-hoc
npm test
npm run test

# Start Storybook-based sandbox
# Used for creating interactive visual tests and examples for docs
npm run sandbox

# Build a nuget package and specify a version
npm run nuget -- 1.1.1

License

Excalibur is open source and operates under the 2-clause BSD license:

BSD 2-Clause License

Copyright (c) 2014, Erik Onarheim
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Frequently asked questions

Is Excalibur free to use?

Excalibur is open source under the BSD-2-Clause licence. There is no licence fee and no seat count โ€” you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Excalibur do?

๐ŸŽฎ Your friendly TypeScript 2D game engine for the web ๐Ÿ—ก๏ธ

What is Excalibur written in?

Excalibur is primarily written in TypeScript. Its source is publicly available at https://github.com/excaliburjs/Excalibur, and it has 2,361 GitHub stars.