Skip to content

1.23.1 - Sprite Batching and Fixes

Choose a tag to compare

@KilledByAPixel KilledByAPixel released this 02 Oct 07:17
· 321 commits to main since this release

New Changes

  • 3D sprites are batched: an object with a tile and no mesh, or a drawBillboard, that is not transparent is drawn as one instanced batch with the other sprites of its sheet, its clear pixels cut out, so many sprites cost little; transparent and additive sprites still draw sorted, one by one
  • A level's block map works in a game with no images: it shows plain colored blocks, where it used to fail
  • glTF: emission stronger than 1 from Blender is read (KHR_materials_emissive_strength), a texture is smooth or pixelated as its sampler says whatever the game's tiles are, and a model with basis textures says they are not read
  • The 2D level editor keeps the last 100 undo steps, as the 3D one does
  • The npm package and the release zip include REFERENCE.md and EDITOR.md
  • EDITOR.md says how to keep a level as a script for a game opened from disk, and what changing the editors' own tools takes
  • The deprecated names from 1.20 are kept until 1.25 at least

Fixes

  • A UI button pressed and released inside one frame was clicked twice
  • drawRegularPoly, and circles with setGLCircleSides, hung on a side count that was not a whole number
  • 2D level editor: a click on an object no longer rewrites its position with rounding noise and adds an undo step; applying saved edits to a file that gained an object layer leaves that layer alone; a level whose url has a %20 in it matches its file again
  • 3D level editor: saves of a prefab are written in the order they were asked for when onSave is async, a prefab edit that was undone no longer comes back after a reload, and objects a game's tool adds without ids get ids
  • An attached prefab inside another prefab is placed where it belongs, and its collision box follows parts that are turned
  • levelEditor.onSave may be an async function in TypeScript too
  • A Sound made while sound is off counts as loaded, so a loading screen that waits for sounds finishes
  • A tween callback that throws no longer leaves the tween system allocating on every update
  • The build and the docs build leave dist/ and docs/ untouched when a step fails

Check out the latest on GitHub to see everything we've been working on!