4000.0.0-alpha.27
[4000.0.0-alpha.27] - 2026-03-19
Added
- Added
debug.warn()to log warning messages (#1028) - @lajbel - Added
debug.logMessage()to log a messages array with a wrapping style
(warn, error, info) (#1028) - @lajbel - Added per-sprite and per-font
filteroptions, which override the global
texFilterandfontFilteroptions (#1050) - @dragoncoder047 - Added global
fontFilteroption to control default font rasterization filter
(#1050, #1052) - @dragoncoder047 - Added
tileModeoption to 9-slice sprites with four tiling strategies:
'none'(stretch all),'edges'(tile edges only),'center'(tile center
only), and'all'(tile both edges and center) (#996) - @JustKira - Added a
calculate()method to the internal FPS counters, so advanced users
can access them to create their own FPS monitor (#1010) - @dragoncoder047 - Added Intl.Segmenter-based grapheme splitting for proper Indic language
support, via thelocaleoption inDrawTextOpt(#1013) - @shajidhasan - Added topMostOnlyActivate kaplay option. When true, only the topmost object
will receive clicks. This avoids problems in a UI where elements overlap -
@mflerackers - Added a
fill()component - @mflerackers - Added
lerpAngle()helper function to interpolate between clamped angles,
preventing 360° spins during transitions from 180 to -180 (#1054) -
@imaginarny - Added
piecewiseBezier()andpiecewiseCatmullRom()to evaluate curves with
multiple points - @mflerackers
Removed
- (!) The texture uv coordinates for primitives (solid- or gradient-filled
circles, rectangles, lines, and polygons) have now been changed to (1, 1)
instead of (0, 0), so shaders written for primitives will need to be updated.
(#1021) - @dragoncoder047
Changed
- (!) The global
onDraw()handler's no-tag form now always draws before
all game objects are drawn, regardless of whether it was attached after game
objects were added (#977) - @lajbel - (!) The sprite data format has been changed to allow individual frames to
be on different GPU textures. NowSpriteData.texdoesn't exist, and
SpriteData.framesis a list ofFrames instead of a list ofQuads. A
Framecontainstexandq(quad) properties that contain that data.
(#1021) - @dragoncoder047 - Updated the texture packer to use a new packing algorithm which may get more
sprites onto the same texture, improving graphics batching performance
(#1011) - @dragoncoder047 - Updated all sprite and font loading to pack everything in the same texture to
allow it to all batch together, for speed and efficiency (#1021) -
@dragoncoder047 - Added spritesheet repacking, so spritesheet images that contain lots of blank
space don't waste texture memory (#1021) - @dragoncoder047
Fixed
- Fixed vertical alignment of text within a now-consistent bounding box across
browsers (#1053) - @imaginarny - Fixed tiled mode drawing of sprites ignoring opacity when it was 0 (#1020) -
@dragoncoder047 - Now, all global events handlers are available in scopes,
app.onXXXXand
scene.onXXXX()(#977) - @lajbel - Fixed input events attached to paused ancestors not being paused (#1009) -
@amyspark-ng, @dragoncoder047 - Fixed type
UniformValueunion not includingTexture, a valid option
(#1018) - @dragoncoder047 - Text component no longer hangs if the requested width is too narrow for a
single character - @dragoncoder047 - Fixed input events attached to paused ancestors not being paused (#1009) -
@amyspark-ng, @dragoncoder047 - Fixed type
UniformValueunion not includingTexture, a valid option
(#1018) - @dragoncoder047 - Fixed event crash when using
onLoador other events that doesn't return an
EventController, and then usinggo()(#1024) - @lajbel, credits to
@dragoncoder047 - Fixed the unexpected behavior of not preserving the aspect ratio in
drawSprite(#1026) - @benhuangbmj - Fixed
onClick()andonCollide()tag variants no longer working -
@mflerackers - Fixed
destroy()messing up enumeration duringupdate()and
fixedUpdate(), thanks to @imaginarny for helping to find the cause -
@mflerackers - Fixed canvas not resizing to fullscreen on
setFullscreen()(#1055) -
@imaginarny
New Contributors
- @JustKira made their first contribution in #996
- @shajidhasan made their first contribution in #1013
- @ProxyLoader made their first contribution in #1045
Full Changelog: 4000.0.0-alpha.26...4000.0.0-alpha.27