Releases: ceramic-engine/ceramic
Ceramic v2.0.2
This is another follow-up update after Ceramic v2.0.0 major release.
Changelog
- Revert some screen scaling changes made in v2.0.1 about screen scaling (they were breaking too many things, will try a better version of that in a future release)
- Fix a regression when shutting down the app that would make it freeze
Full Changelog: v2.0.1...v2.0.2
Ceramic v2.0.1
This is a follow-up update after Ceramic v2.0.0 major release. Comes with several bug fixes.
Changelog
- Fix wrong architecture of Haxe binary being embedded on linux archives
- More accurate native window size and density resolution when using SDL
- Fix log output not being flushed, causing not seeing all logs on windows
- Fix vscode URI scheme being incorrect on windows logs
- Various fixes to restore automatic api-docs generation
Full Changelog: v2.0.0...v2.0.1
Ceramic v2.0.0
This is a major update of Ceramic with a lot of internal changes, yet mostly compatible with any existing project.
A lot of care have been taken to ensure the transition is smooth, but if you find any regression since previous version, please file an issue and it will get addressed!
Main changes
- Remove dependency to Node.js for CLI tools: they are now compiled as native C++ binary (Node.js is only required when installing Ceramic from Git, any recent version like Node 22 or higher should work)
- Add installer for Windows and Mac
- Update native targets to SDL3 (it was previously SDL2)
- Use Google ANGLE as default OpenGLES3 backend on Mac (Metal), iOS (Metal) and Windows (D3D11) for future-proof compatibility
- Improve audio API on all targets: support of cross-platform realtime audio processing with
AudioFilter
andAudioFilterWorklet
classes - Update Unity target to make it compatible with latest Unity 6 and Render Graph
Contributions
- Use new arm64 CI runners in place of docker by @l0go in #146
- Update luxe credit with creator's username by @l0go in #132
- Update for Haxe nightlies by @kLabz in #147
- [ase] Fix out-of-bounds write in
AsepriteParser
by @Frixuu in #150 - Check numpad enter for text input submissions by @Jarrio in #149
- Open links in default browser by @MSGhero in #148
Full Changelog: v1.6.0...v2.0.0
Ceramic v1.6.0
This release brings a lot of small bugfixes and improvements. It also bumps Haxe version to 4.3.6
(latest on this day) as well as latest HXCPP (from git).
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [android] Update project template to target API 34
- [runtime] Add
Utils.sign()
- [android] Add gamepad support to Android 🎮
- [android] Add support of
--run-apk
option when usingclay run android
: builds an apk and runs it with adb. Displays clean and coloured logs like other platforms - [runtime] Add
eagerTween()
andeagerTransition()
to start tweens and transitions that update using current frame delta instead of 0 - [runtime] Reuse start vertices when looping arc, and do not change mesh size from
MeshExtensions
- [runtime] Add
GeometryUtils.intersectCircles()
- [tools] Better output when running Ceramic via vscode
- [runtime] A few
Camera
improvements - [tools] Better vscode launch.json
- Add
text.glyphCode
optional callback used to override the char code of each glyph to be displayed. #140 - Allow to track down meshes with invalid
colors
orfloatColors
array using debug build orceramic_debug_mesh_colors
as well asceramic_debug_entity_allocs
defines. Fix #141 - [runtime] Remove the use of
data
field (can still use it withceramic_entity_data
define) - [runtime] Add
EntityData
util to manage data associated with an entity (usingDynamicData
component internally) - [tilemap] Add
hasTileAtPosition()
- [arcade] Explicitly fail when giving invalid tile size
- [tools] Use absolute paths when debugging, use relative paths for release builds but make tools smarter to resolve paths when displaying them in vscode and similar
- [ldtk] Fixes (thanks @carlito767 !)
- [runtime] Fix variant asset not being removed properly in some situations
- [runtime] Additional checks when adding a visual child
Dependency updates
- Update to
haxe
4.3.6 - Update
tracker
- Update
ase
- Move to
hxcpp
from git
New Contributors
- @carlito767 made their first contribution in #142
Full Changelog: v1.5.0...v1.6.0
Release v1.5.0
This release fixes several bugs and brings new features, mostly on the observable data model side of things (tracker library)
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [runtime] A few API improvements to
MeshExtensions
andMeshUtils
- [runtime] Fix an edge case where using a texture in a shared wouldn't make it a dependency of the render target, which could lead to wrong rendering order
- [tilemap] Fix wrong tile texture frame rendering when using tileset with spacing
- [runtime] Add
ceramic_no_log
define to disable logging (could be improved by actually removing the log calls from the resulting code), andceramic_mute_logs
that doesn't print logs but still fire log events - [runtime] Update
soloud
to make it work on recent versions of macos - [elements] Give more control to scrollbar visibility with immediate GUI with
Im.scrollbar()
- [tools] Change default icons for mac
- [elements] Support bold font (if assigned to theme) and point size with
Im.bold()
andIm.pointSize()
- [elements] Various improvements to make
Im.list
more versatile and work better when nested in a scrollable window - [runtime] Add support of
@stateMachine({checkFields: false})
to allow disabling check of{STATE}_enter/update/exit
field names - [runtime] Fix
bindToNativeScreenSize()
not updating size when screen native size changes without changing the matrix (when usingRESIZE
screen scaling) - [elements] Better handling of
disabled
state in TextFieldView - [elements] Add a way to know if an
Im.editText()
field has been blurred (unfocused) - [runtime] Add a fix/workaround to prevent rendering to eat too much CPU even if not much is happening
- [runtime] Add
cease()
anduntil()
in shortcuts - [runtime] When a
@component
field is destroyed, auto-set it tonull
- [ui] Slightly improve view layout system to make it reuse computed values in more situations
- [elements] Various improvements in elements UI
- [runtime] Compatibility with new
.fragments
file format - [runtime] Add
EnumAbstractMacro.fromStringSwitch()
- [http] Add download support on headless (node)
- [ui] Try to avoid marking a parent view as dirty layout in situations where it's not necessary
- [elements] Fix blurred status being fired too many times
- [runtime] Fix runtime assets not premultiplying images all the time
- [runtime] Smarter
Equal.equal()
- [runtime] Add
Fragment.get()
overload to get typed entity - [http] Fix bad resolution of binary response on iOS and Android
- [runtime] Allow implicit cast from ReadOnlyArray to Array
- [runtime] Add
SeedRandom.shuffle()
New Contributors
Full Changelog: v1.4.0...v1.5.0
Release v1.4.0
This release brings various fixes and additions. Haxe has also been updated to 4.3.3!
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [ldtk] Fix tile field type name by @gaboose in #130
- [runtime] Add initial implementation of RoundedRect by @l0go in #128
- [ios] Fix build error with more recent version of cocoapods
- [runtime]
depth
can now be used withVisualTransition
- [runtime] Add
Visual.childWithType()
helper - [runtime] Add helpers to know if we are running on iOS or Android (true on web running on ios/android browsers, or when running as native ios/android app)
- [runtime] Add
darkColor
field to quad and the possibility to add custom float attributes to quad vertices (requiresceramic_quad_dark_color
andceramic_quad_float_attributes
defines) - [tools] Do not use hardcoded hxml output path anymore (usage with vscode extension)
- [tools] Add
select: auto
option on ide variant - [runtime] Add
Filter.neverEmpty
property - [web] Fix async loading failing when watching a directory via electron
- [sprite] Fix
Sprite.timeScale
being inverted (⚠️ breaking change) - [runtime] Add
Scroller.pagingEnabled
field, to enable snap to page feature - [ui] Expose scroller paging options to
ScrollView
- [ui] Add missing parameters to
CollectionView
's smooth scroll to item - [runtime] Correct missing vertical implementation of scroller paging and optimise CollectionView a bit
- [ui] Add an implementation of
PagerView
, with page looping support - [runtime] Add
ceramic_fake_ios
andceramic_fake_android
defines to force Utils.isAndroid/isIos() to return truc for debug purposes - [runtime] Add pinch gesture detector
- [runtime] Add
Scroller.dragThreshold
to make it wait for a drag to the correct direction before scrolling - [runtime] Provide a
Transform
object as a convenience from theCamera
instance - [runtime] Remove
Rect
class (not really used) - Update haxe to 4.3.3
New Contributors
Full Changelog: v1.3.3...v1.4.0
Release v1.3.3
One more release that adds a few contributions (thanks!) and fixes.
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [windows] Fix a compile error on windows after adding the preloader feature
- [ldtk] Support pixel offsets in gridTiles and autoLayerTiles (by @gaboose)
- [spine] Allow to export to a custom output directory (by @goldenPiGames)
- [runtime] Fix a compile error when using
EditText
from native
Full Changelog: v1.3.2...v1.3.3
Release v1.3.2
This release brings more fixes and nice to have improvements.
You can now use ceramic.Preloader
to create a nice preloader with a progress bar when the assets of your scene are loading.
Let's say you were setting your main scene with:
app.scenes.main = new MainScene();
Adding a preloader is easy, simply replace this line with:
app.scenes.main = new Preloader(() -> new MainScene());

You can also create a subclass of Preloader
if you want to change how it looks like!
Another addition is the support of text input on web target when running on a mobile device. Previously, this wouldn't work because the on screen/virtual keyboard wouldn't show without a regular DOM <input>
element. This new version makes it work by creating <input>
elements on the fly from your EditText
components.
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [runtime] Make
hscript
a dependency only whenscript
plugin is enabled - [runtime] Add an option to only triangulate a subset of vertices with
Triangulate.triangulate()
- [runtime] Fix wireframe colors not being mapped correctly on mesh with per-indice colors
- [runtime] Try to use a better bezier easing cache key
- [runtime] Add
CeramicLogo
visual class that you can use to display a Ceramic logo anywhere you want! - [runtime] Add a method to move asset from one
Assets
instance to another (moveAll()
) - [runtime] Allow a root scene to be moved under a different slot (and overwrite target slot if used already)
- [runtime] Add
ceramic.Preloader
class to facilitate showing a preloader with a progress bar - [runtime] Improve implicit entity subclass constructor generation so that it can support arguments
- [runtime] Make Ceramic compatible with haxe's thread event loop
- [runtime] Fix parent asset not being resolved in some cases
- [runtime] Allow to change edit text cursor width
- [http] Fix 408 status not being taken into account on desktop targets
- [elements] More forgiving color field view input
- [runtime] Add support of text input on web target when running on a mobile devices
Full Changelog: v1.3.1...v1.3.2
Release v1.3.1
A new release with several fixes, including some that come from new contributors, thanks!
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [ldtk] Ensure tiles without alpha property are treated as opaque
- [runtime] Fix Files.getBytes on web target by @inc0der in #120
- [ldtk] Set the def field in LdtkFieldInstance by @gaboose in #122
- [ldtk] parse array type values in LdtkFieldInstance by @gaboose in #123
- [spine] Spine.hx clipping attachments by @goldenPiGames in #121
New Contributors
- @inc0der made their first contribution in #120
- @gaboose made their first contribution in #122
- @goldenPiGames made their first contribution in #121
Full Changelog: v1.3.0...v1.3.1
Release v1.3.0
Another release that fixes several bugs and adds some new features to improve Ceramic usage in general.
How to update Ceramic
Via haxelib: haxelib run ceramic setup
Via git: https://ceramic-engine.com/guides/ceramic-via-git/#update-your-existing-ceramic-via-git
Changelog
- [tilemap] Add support of per-tile alpha, including when using LDtk
- [runtime] Add
Visual.wireframe
to render it as wireframe (disabled by default, enable withceramic_wireframe
define) - [runtime] Ensure Scene
load()
andcreate()
are called from a different callstack than asset load callback to prevent weird stack traces - [runtime] Add new mesh extensions:
createVerticesGrid()
,createIndicesGrid()
andcreateUVsGrid()
- [runtime] Add
mesh
field toFilter
, to allow rendering a texture managed by a filter with a more advanced layout of vertices, not only quads - [runtime] Improve entity macro to support
@content
meta: fields marked with this meta will setcontentDirty
totrue
(note: only visuals have that field, but you can create your own on customEntity
subclasses) - [runtime] Add
Utils.lerp()
- [runtime] Add assets variants concept, to allow loading the same source asset multiple times under different names, with different options
- [arcade] Ensure collision events won't explode if editing a group from a callback
- [ase] Premultiply alpha of resulting pixels by default: fixes alpha not displaying properly
- [ldtk] Fix compile error when targeting native
- [sprite] Sprite quad should inherit alpha by default
- [runtime] Accept width and height options when loading image from ase data
- [runtime] Support displaying an lcd-style grid when using
PixelArt
filter (see it in action: https://jeremyfa.itch.io/six-spaceships) - [unity] Find a workaround to make
Particles<T>
compile fine with C# target... - [runtime] Fix
Visual.destroy()
creating a dependency toscreen.focusedVisual
if object was destroyed under and autorun
Full Changelog: v1.2.0...v1.3.0