Fae - 2D WebGL Renderer
Warning: In heavy development, API subject to break before v1.0.0 is released.
Fae is meant to be a highly modular ecosystem of modules. The primary target use-case for Fae is to be easily intregrable into larger application frameworks. However, the plugin library for Fae enables it to be useful to end users as well when used as a standalone framework.
Fae contains some code that is originally based on pixi.js. However, Fae takes a different approach to rendering and modularity than pixi. Some notable differences in philosophy are:
- Fae is focused on WebGL
- Fae uses a flat entity structure with z-ordering instead of a heirarchal scene tree
- Fae uses an assemblage-heavy Entity-Component-System (ECS) approach to composing objects
- Using our custom @fae/ecs lib.
and a few other core design differences that result in a familiar but slightly different API.
Pre-built versions of the library are hosted on Amazon S3. These are "full builds" meaning they include all the official, open-source, plugins.
Each build of Fae includes these files:
fae.js- Development build. Unminified and includes debug asserts and other checks that negatively affect performance.
fae.js.map- Development source-map file that maps compiled
fae.jsfile back into source code.
fae.min.js- Production build. Minified and all debugging code is stripped out for maximum performance.
Below is information on how to download each build type.
You can download the builds for any particular release at:
http://fae-builds.s3-website-us-west-2.amazonaws.com/release/<version>/fae.js http://fae-builds.s3-website-us-west-2.amazonaws.com/release/<version>/fae.js.map http://fae-builds.s3-website-us-west-2.amazonaws.com/release/<version>/fae.min.js
<version> with the version of the library you want. For example, to get
You can download the builds for any particular branch or git-sha at:
http://fae-builds.s3-website-us-west-2.amazonaws.com/unstable/<branch-or-git-sha>/fae.js http://fae-builds.s3-website-us-west-2.amazonaws.com/unstable/<branch-or-git-sha>/fae.js.map http://fae-builds.s3-website-us-west-2.amazonaws.com/unstable/<branch-or-git-sha>/fae.min.js
<branch-or-git-sha> with a branch name (like
master) to get the latest successful
build of that branch or with the git-sha of a particular commit (like
Note that only builds that succeed will have files on S3. If the build fails there will be no built files, so not every git-sha in the history may work.
Developing Fae takes a lot of time and effort. The multiple services and servers that run for the Fae project cost a non-trivial amount of money. If you want to help support the continued development of Fae, please consider making a donation.
There are a couple ways you can have an impact:
All donations go right back into the Fae community in the form of server hosting, and development time.
Issues are tagged with labels to help give a good view of the current state of the project.
For example, to see what plugins need to be made you can look at the New Plugin label.
Guides/Tutorials to write:
- Intro to the ECS architecture Fae uses
- General Performance Guidelines
- How batching happens and how you can take advantage of it.
- How to write efficient systems.
renderGroupHintto make batching better.
- Batching the addition of entities (skipping sort in
- Rendering looks weird on my old XYZ Mobile Device
- Description of the options that may fix issues on old mobile
- Shader precision, batch sizes, multi-texture sizes, VAO usage, etc.
The Contributing Guide contains the full details on how to contribute changes to the project.
- Report bugs on GitHub Issues and include a code sample.
- Pull Requests should be made against
- Before contributing read the Code of Conduct.