Ceramic is a cross-platform 2D framework written in Haxe that can export natively to:
- Desktop (windows, mac, linux)
- Mobile (ios, android), web (js + webgl)
- Unity projects
Ceramic was created by Jérémy Faivre, as well as multiple libraries used internally, but is also possible thanks to the following works:
-
Luxe Engine (alpha) by ruby0x1 which was used as a transitional backend before
claybackend was ready. Some snippets of Ceramic still directly come fromluxe. -
HaxeFlixel's FlxColor class by Joe Williamson which was ported into to
ceramic.Colorandceramic.AlphaColorclasses. -
OpenFL by Joshua Granick and PixiJS by Mathew Groves to implement
ceramic.Transformclass. -
Haxe by Nicolas Cannasse, maintained by the Haxe Foundation, which is a fantastic cross-platform toolkit and programming language making it much easier to create a portable engine.
-
Node.js and its huge amount of community supported modules, helping a lot to create feature-complete and cross-platform command line tools.
-
Janicek Core Haxe by Richard Janicek, for some borrowed code for
ceramic.Utils.hashCode(). -
Slugify by Simov, and Slug haxelib port to provide
ceramic.Slug. -
HaxeFlixel's FlxEmitter class used as a starting point to implement
ceramic.Particlesandceramic.ParticleEmitter. -
Optimised HashMaps by Mikhail Vorontsov to implement
ceramic.IntIntMapand related on static targets. -
Some crash logging snippets by Lars Doucet to handle errors with
ceramic.Errors. -
Cardinal Spline JS by Gleb Denisov, used to create
ceramic.CardinalSpline. -
Nuclear Blaze's GameBase Camera by Sébastien Bénard, used as a model to create
ceramic.Camera. -
Bezier Easing by Gaëtan Renaudeau, used to create
ceramic.BezierEasing. -
Some GLSL shader code by Richman Steward.
-
Some browser mess handling from Howler.js to help implement Ceramic audio backend for web.
-
Heaps Aseprite by Austin East, from which several snippets were ported for make Ceramic
aseformat parsing and rendering. -
Aseprite Blend Functions by Igara Studio S.A. and David Capello, which were ported to Haxe in order to implement ase frame blending at runtime in Ceramic.
-
Extrude Polyline by Matt DesLauriers, via Haxe port used in Ceramic to draw lines.
-
LibGDX, used as a reference for polygon triangulation.
-
Haxe Format Tiled by Pavel Alexandrov to parse Tiled Map Editor's TMX format.
-
Akifox Async HTTP by Simone Cingano, used to implement HTTP backend on native targets.
-
Nape Physics by Luca Deltodesco and contributors.
-
HSLuv to provide additional color manipulation helpers to
ceramic.Colorandceramic.AlphaColor. -
Dear ImGui by Omar Cornut, via Haxe bindings initially created by Aidan Lee.
-
Gif Capture ported by Tilman Schmidt and Sven Bergström from Moments.
-
Linc RTMidi by Tilman Schmidt.
-
Rectangle Bin Packing by Sam Twidale, used for
ceramic.TextureAtlasPacker. -
Ase format parser by Michael Miriti to read
.ase/.asepritefiles. -
Fuzzaldrin from Atom to provide some auto-completion features at runtime debug UI.
-
SoLoud by Jari Komppa to implement audio on both C++/Native targets and C#/Unity audio mixing (via MiniLoud port)
-
LDtk by Sébastien Bénard, a modern 2D level editor, compatible with Ceramic
-
GPUI by Zed Industries, the UI framework of the Zed editor (gpui-pre 0.3.10, Apache-2.0), ported to Haxe as the
glazeplugin, with its examples (samples/gpui-examples) and the text contrast code GPUI adapted from Windows Terminal by Microsoft (MIT). -
GPUI Kit by Longbridge (gpui-component and gpui-base 0.8.1, Apache-2.0), ported to Haxe as
glaze.kit, with its themes (which adapt the color schemes listed inplugins/glaze/assets/themes/LICENSE.md) and its story gallery (samples/story). -
rust-i18n by Longbridge (MIT), ported for the locale lookup of
glaze.kit. -
Taffy by Visly Inc. and the Taffy Authors (MIT), ported to Haxe as the
taffylibrary, the layout engine ofglaze. -
lyon by Nicolas Silva (MIT OR Apache-2.0, used under MIT), adapted for the path building and tessellation of
glaze, with parts of euclid by the Servo Project Developers (MIT OR Apache-2.0, used under MIT). -
etagere by Nicolas Silva (MIT OR Apache-2.0, used under MIT), ported for the glyph atlas allocator of
glaze. -
unicode-properties and unicode-script by The Rust Project Developers (MIT OR Apache-2.0), whose Unicode tables are used by the Canvas2D font fallback of
glazeon the web. -
Ropey by Nathan Vegdahl (MIT OR Apache-2.0, with parts of str_indices), ported to Haxe as the
ropeylibrary, the text buffer of theglaze.kitinputs and editor. -
unicode-segmentation by The Rust Project Developers (MIT OR Apache-2.0) and unicode-linebreak by Axel Forsman (Apache-2.0), ported to Haxe as the libraries of the same names, with tables from the Unicode Character Database (Unicode License v3).
-
similar by Armin Ronacher (Apache-2.0), ported to Haxe as the
similarlibrary, the diff engine of theglaze.kiteditor. -
html5ever by The html5ever Project Developers (Servo) (MIT OR Apache-2.0, with parts of tendril and utf-8), ported to Haxe as the
html5everlibrary, the HTML parser of theglaze.kitrich text. -
markdown-rs by Titus Wormer (MIT, with the tables of unicode-id), ported to Haxe as the
markdownlibrary, the Markdown parser of theglaze.kitrich text. -
data-url by The rust-url developers (MIT OR Apache-2.0, used under MIT, with fixtures of the web-platform-tests project, BSD-3-Clause) and html5minify by Martin Gallagher (MIT), ported for the
glaze.kitrich text. -
lsp-types by Markus Westerlind (MIT), ported for the LSP data types of the
glaze.kiteditor. -
chrono by Kang Seonghoon and contributors (MIT OR Apache-2.0, used under MIT), ported for the dates and times of
glaze.kit. -
serde_json by David Tolnay (MIT OR Apache-2.0, used under MIT), ported for the JSON style editor of the
glaze.kitinspector. -
fake by cksac (MIT OR Apache-2.0, used under MIT), ported for the generated data of the
glazestory gallery. -
Oniguruma by K. Kosako (BSD-2-Clause), ported to Haxe as the
onigurumalibrary with the API of vscode-oniguruma by Microsoft (MIT), whoseonig.wasmbuildglazecan also use on the web. -
vscode-textmate by Microsoft (MIT), ported to Haxe as the
textmatelibrary, with the TextMate grammars of tm-grammars (shiki), each under the license of its origin (plugins/glaze/assets/glaze/grammars), for the code highlighting ofglaze.kit. -
lunasvg and plutovg by Samuel Ugochukwu (MIT, plutovg includes code derived from FreeType), ported to Haxe as the
lunasvgandplutovglibraries, used by thevectorandttfplugins and byglaze. -
zeno by Chad Brokaw (MIT OR Apache-2.0), whose scan converter is ported in the
ttflibrary. -
Inter by The Inter Project Authors and JetBrains Mono by The JetBrains Mono Project Authors (SIL Open Font License 1.1), the fonts bundled with
glaze, and Noto Color Emoji by Google (SIL Open Font License 1.1 for the font, Apache-2.0 for the images, public domain flags of region-flags), its optional emoji font. -
Lucide icons by the Lucide Contributors (ISC, with icons derived from Feather by Cole Bemis, MIT), the icons of
glaze.kit, and SVG files of the resvg test suite (Apache-2.0 / MIT) inplugins/glaze/samples/vector.
Ceramic is MIT licensed.
The glaze plugin (plugins/glaze) is licensed under the Apache License 2.0, see plugins/glaze/LICENSE and plugins/glaze/NOTICE.md. The libraries and fonts it ports or bundles keep their own licenses, found in their folders (plugins/glaze/LICENSES, the license files next to the bundled fonts and grammars, and the LICENSE of each library in git/).
