Releases: ceramic-engine/ceramic
Ceramic v2.1.0
This release brings a new cross-platform shader system named Shade, and many more improvements and fixes.
Changelog
New Features
- Shade: New cross-platform shader system with GLSL output support
- Add
ceramic shadecommand to convert Haxe shaders into GLSL or ShaderLab - Shade plugin is now enabled by default and Haxe shaders are converted automatically
- Add
- Graphics: New
Graphicsclass for immediate-mode drawing (Canvas 2D / Flash-like API) - Runtime: Add
Visual.addBefore()andVisual.addAfter()methods for precise child ordering - Runtime: Add
ScrollView.autoComputeContentSizeoption - Runtime: Add
Float32type andFloat32Utilsutilities - Runtime: Add
lerp32function - Runtime: Add basic support for Construct 3 bitmap font format
- Runtime: Add window size configuration defines for HD/4K defaults
- Tilemap: Add
useMeshtoTilemapLayerfor more efficient rendering using a single mesh - Tilemap: Add
shaderfield toTilemapLayerData
Improvements
- Clay: Abstract OpenGL into cross-platform GLGraphicsDriver and GLGraphicsBatcher API
- Clay: Fix antialiasing not working through WebGL
- HTTP: Improved native download implementation with cleaner per-target code
- Tools: Move from C++11 to C++17 on native targets
- Tools: Add
--no-downloadoption fornode tools/install - Tools: Improved plugin discovery
- Tools: Allow plugins to be enabled by default via
+pluginsin runtime config - Android: Fix compatibility with more recent Gradle/JVM versions
- Unity: Various fixes for new shader pipeline compatibility
- Renderer: Non-linear z-depth progression to avoid z-fighting issues
- Renderer: Per-render-target z tracking
Bug Fixes
- Runtime: Fix
IntFloatMapoff-by-one error - Runtime: Fix inaccurate check when using
floatColorsinstead ofcolors - Runtime: Make
Float32Utils.f32()work on C# target - LDtk: Fix entity
layerInstanceand level not being assigned to layer instance - Loreline: Fix assets not loading when using runtime assets/hot reload
- Loreline: Fix C# target compatibility
- Elements: Restore
LabeledFieldView
Documentation
- Comprehensive API documentation overhaul
- Expose more types from
AllApi.hxfor documentation generation
New Contributors
- @CodeLazier made their first contribution in #165
Full Changelog: v2.0.2...v2.1.0
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
AudioFilterandAudioFilterWorkletclasses - 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
AsepriteParserby @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-apkoption 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
Cameraimprovements - [tools] Better vscode launch.json
- Add
text.glyphCodeoptional callback used to override the char code of each glyph to be displayed. #140 - Allow to track down meshes with invalid
colorsorfloatColorsarray using debug build orceramic_debug_mesh_colorsas well asceramic_debug_entity_allocsdefines. Fix #141 - [runtime] Remove the use of
datafield (can still use it withceramic_entity_datadefine) - [runtime] Add
EntityDatautil to manage data associated with an entity (usingDynamicDatacomponent 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
haxe4.3.6 - Update
tracker - Update
ase - Move to
hxcppfrom 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
MeshExtensionsandMeshUtils - [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_logdefine to disable logging (could be improved by actually removing the log calls from the resulting code), andceramic_mute_logsthat doesn't print logs but still fire log events - [runtime] Update
soloudto 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.listmore 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/exitfield names - [runtime] Fix
bindToNativeScreenSize()not updating size when screen native size changes without changing the matrix (when usingRESIZEscreen scaling) - [elements] Better handling of
disabledstate 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
@componentfield 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
.fragmentsfile 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]
depthcan 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
darkColorfield to quad and the possibility to add custom float attributes to quad vertices (requiresceramic_quad_dark_colorandceramic_quad_float_attributesdefines) - [tools] Do not use hardcoded hxml output path anymore (usage with vscode extension)
- [tools] Add
select: autooption on ide variant - [runtime] Add
Filter.neverEmptyproperty - [web] Fix async loading failing when watching a directory via electron
- [sprite] Fix
Sprite.timeScalebeing inverted (⚠️ breaking change) - [runtime] Add
Scroller.pagingEnabledfield, 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_iosandceramic_fake_androiddefines to force Utils.isAndroid/isIos() to return truc for debug purposes - [runtime] Add pinch gesture detector
- [runtime] Add
Scroller.dragThresholdto make it wait for a drag to the correct direction before scrolling - [runtime] Provide a
Transformobject as a convenience from theCamerainstance - [runtime] Remove
Rectclass (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
EditTextfrom 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
hscripta dependency only whenscriptplugin 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
CeramicLogovisual class that you can use to display a Ceramic logo anywhere you want! - [runtime] Add a method to move asset from one
Assetsinstance 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.Preloaderclass 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