Excalibur 0.30.1
See the version list below for details.
dotnet add package Excalibur --version 0.30.1
NuGet\Install-Package Excalibur -Version 0.30.1
<PackageReference Include="Excalibur" Version="0.30.1" />
paket add Excalibur --version 0.30.1
#r "nuget: Excalibur, 0.30.1"
// Install Excalibur as a Cake Addin #addin nuget:?package=Excalibur&version=0.30.1 // Install Excalibur as a Cake Tool #tool nuget:?package=Excalibur&version=0.30.1
This is one of the biggest releases of Excalibur yet! Huge thanks to all the new contributors and everyone that assisted in the discord.
Special thanks @jyoung4242, @mattjennings, @cdelstad, @kamranayub, Drew Conley, and @jedeen for being constant support and help for the project and the entire community!
New Contributors
- @muhajirdev made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3026
- @aruru-weed made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3023
- @gavriguy made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3051
- @jellewijma made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3052
- @Autsider666 made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3094
- @robbertstevens made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3125
- @egodjuks made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3131
- @SamuelAsherRivello made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3174
- @mosesintech made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3214
- @blakearoberts made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3285
- @Adamduehansen made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3292
Features
- Added
ex.SpriteSheet.getTiledSprite(...)
to help pulling tiling sprites out of a sprite sheet - Alias the
engine.screen.drawWidth/drawHeight
withengine.screen.width/height
; - Added convenience types
ex.TiledSprite
andex.TiledAnimation
for Tiling Sprites and Animationsconst tiledGroundSprite = new ex.TiledSprite({ image: groundImage, width: game.screen.width, height: 200, wrapping: { x: ex.ImageWrapping.Repeat, y: ex.ImageWrapping.Clamp } }); const tilingAnimation = new ex.TiledAnimation({ animation: cardAnimation, sourceView: {x: 20, y: 20}, width: 200, height: 200, wrapping: ex.ImageWrapping.Repeat });
- Added new static builder for making images from canvases
ex.ImageSource.fromHtmlCanvasElement(image: HTMLCanvasElement, options?: ImageSourceOptions)
- Added GPU particle implementation for MANY MANY particles in the simulation, similar to the existing CPU particle implementation. Note
maxParticles
is new for GPU particles.var particles = new ex.GpuParticleEmitter({ pos: ex.vec(300, 500), maxParticles: 10_000, emitRate: 1000, radius: 100, emitterType: ex.EmitterType.Circle, particle: { beginColor: ex.Color.Orange, endColor: ex.Color.Purple, focus: ex.vec(0, -400), focusAccel: 1000, startSize: 100, endSize: 0, life: 3000, minSpeed: -100, maxSpeed: 100, angularVelocity: 2, randomRotation: true, transform: ex.ParticleTransform.Local } });
- Added
ex.assert()
that can be used to throw in development builds - Added
easing
option tomoveTo(...)
- Added new option bag style input to actions with durations in milliseconds instead of speed
player.actions.rotateTo({angleRadians: angle, duration: 1000, rotationType}); player.actions.moveTo({pos: ex.vec(100, 100), duration: 1000}); player.actions.scaleTo({scale: ex.vec(2, 2), duration: 1000}); player.actions.repeatForever(ctx => { ctx.curveTo({ controlPoints: [cp1, cp2, dest], duration: 5000, mode: 'uniform' }); ctx.curveTo({ controlPoints: [cp2, cp1, start1], duration: 5000, mode: 'uniform' }); });
- Added
ex.lerpAngle(startAngleRadians: number, endAngleRadians: number, rotationType: RotationType, time: number): number
in order to lerp angles between each other - Added
pointerenter
andpointerleave
events toex.TileMap
tiles! - Added
pointerenter
andpointerleave
events toex.IsometricMap
tiles! - Added new
ex.BezierCurve
type for drawing cubic bezier curves - Added 2 new actions
actor.actions.curveTo(...)
andactor.actions.curveBy(...)
- Added new
ex.lerp(...)
,ex.inverseLerp(...)
, andex.remap(...)
for numbers - Added new
ex.lerpVector(...)
,ex.inverseLerpVector(...)
, andex.remapVector(...)
forex.Vector
- Added new
actor.actions.flash(...)
Action
to flash a color for a period of time - Added a new
ex.NineSlice
Graphic
for creating arbitrarily resizable rectangular regions, useful for creating UI, backgrounds, and other resizable elements.var nineSlice = new ex.NineSlice({ width: 300, height: 100, source: inputTile, sourceConfig: { width: 64, height: 64, topMargin: 5, leftMargin: 7, bottomMargin: 5, rightMargin: 7 }, destinationConfig: { drawCenter: true, horizontalStretch: ex.NineSliceStretch.Stretch, verticalStretch: ex.NineSliceStretch.Stretch } }); actor.graphics.add(nineSlice);
- Added a method to force graphics on screen
ex.GraphicsComponent.forceOnScreen
- Added new
ex.Slide
scene transition, which can slide a screen shot of the current screen:up
,down
,left
, orright
. Optionally you can add anex.EasingFunction
, by defaultex.EasingFunctions.Linear
game.goToScene('otherScene', { destinationIn: new ex.Slide({ duration: 1000, easingFunction: ex.EasingFunctions.EaseInOutCubic, slideDirection: 'up' }) });
- Added inline SVG image support
ex.ImageSource.fromSvgString('<svg>...</svg>')
, note images produced this way still must be loaded. - Added ability to optionally specify sprite options in the
.toSprite(options:? SpriteOptions)
- The
ex.Engine
constructor had a newenableCanvasContextMenu
arg that can be used to enable the right click context menu, by default the context menu is disabled which is what most games seem to want. - Child
ex.Actor
inherits opacity of parents ex.Engine.timeScale
values of 0 are now supportedex.Trigger
now supports all valid actor constructor parameters fromex.ActorArgs
in addition toex.TriggerOptions
ex.Gif
can now handle default embedded GIF frame timings- New
ex.Screen.worldToPagePixelRatio
API that will return the ratio between excalibur pixels and the HTML pixels.- Additionally excalibur will now decorate the document root with this same value as a CSS variable
--ex-pixel-ratio
- Useful for scaling HTML UIs to match your game
.ui-container { pointer-events: none; position: absolute; transform-origin: 0 0; transform: scale( calc(var(--pixel-conversion)), calc(var(--pixel-conversion))); }
- Additionally excalibur will now decorate the document root with this same value as a CSS variable
- New updates to
ex.coroutine(...)
- New
ex.CoroutineInstance
is returned (still awaitable) - Control coroutine autostart with
ex.coroutine(function*(){...}, {autostart: false})
.start()
and.cancel()
coroutines- Nested coroutines!
- New
- Excalibur will now clean up WebGL textures that have not been drawn in a while, which improves stability for long game sessions
- If a graphic is drawn again it will be reloaded into the GPU seamlessly
- You can now query for colliders on the physics world
const scene = ...; const colliders = scene.physics.query(ex.BoundingBox.fromDimensions(...));
actor.oldGlobalPos
returns the globalPosition from the previous frame- create development builds of excalibur that bundlers can use in dev mode
- show warning in development when Entity hasn't been added to a scene after a few seconds
- New
RentalPool
type for sparse object pooling - New
ex.SparseHashGridCollisionProcessor
which is a simpler (and faster) implementation for broadphase pair generation. This works by bucketing colliders into uniform sized square buckets and using that to generate pairs. - CollisionContact can be biased toward a collider by using
contact.bias(collider)
. This adjusts the contact so that the given collider is colliderA, and is helpful if you are doing mtv adjustments during precollision. angleBetween
medhod added to Vector class, to find the angle for which a vector needs to be rotated to match some given angle:const point = vec(100, 100) const destinationDirection = Math.PI / 4 const angleToRotate = point.angleBetween(destinationDirection, RotationType.ShortestPath) expect(point.rotate(angleToRotate).toAngle()).toEqual(destinationDirection)
Fixed
- Fixed issue where
ex.ParticleEmitter.clearParticles()
did not work - Fixed issue where the pointer
lastWorldPos
was not updated when the currentCamera
moved - Fixed issue where
cancel()
'd events still bubbled to the top level input handlers - Fixed issue where unexpected html HTML content from an image would silently hang the loader
- Fixed issue where Collision events ahd inconsistent targets, sometimes they were Colliders and sometimes they were Entities
- Fixed issue where
ex.Engine.screenshot()
images may not yet be loaded in time for use inex.Transition
s - Fixed issue where there would be an incorrect background color for 1 frame when transitioning to a new scene
- Fixed issue where
blockInput: true
on scene transition only blocked input events, not accessors likewasHeld(...)
etc. - Fixed issue where users could not easily define a custom
RendererPlugin
because the type was not exposed - Fixed issue where
ex.Fade
sometimes would not complete depending on the elapsed time - Fixed issue where
ex.PolygonColliders
would get trapped in infinite loop for degenerate polygons (< 3 vertices) - Fixed issue where certain devices that support large numbers of texture slots exhaust the maximum number of if statements (complexity) in the shader.
- Fixed issue where
ex.Label
where setting the opacity of caused a multiplicative opacity effect when actor opacity set - Fixed issue where the
ex.Loader
would have a low res logo on small configured resolution sizes - Fixed issue where
ex.Gif
was not parsing certain binary formats correctly - Fixed issue where the boot
ex.Loader
was removing pixelRatio override - Fixed
ex.RasterOptions
, it now extendsex.GraphicsOptions
which is the underlying truth - Fixed issue where rayCast
filter
would not be called in hit order - Fixed issue where rayCasts would return inconsistent orderings with the
ex.SparseHashGridCollisionProcessor
strategy - Fixed issue where CircleCollider tangent raycast did not work correctly
- Fixed issue where you were required to provide a transition if you provided a loader in the
ex.Engine.start('scene', { loader })
- Fixed issue where
ex.Scene.onPreLoad(loader: ex.DefaultLoader)
would lock up the engine if there was an empty loader - Fixed issue where
ex.Scene
scoped input events would preserve state and get stuck causing issues when switching back to the original scene. - Fixed issue where not all physical keys from the spec were present in
ex.Keys
including the reportedex.Keys.Tab
- Fixed invalid graphics types around
ex.Graphic.tint
- improve types to disallow invalid combo of collider/width/height/radius in actor args
- only add default color graphic for the respective collider used
- Fixed issue where
ex.SpriteFont
did not respect scale when measuring text - Fixed issue where negative transforms would cause collision issues because polygon winding would change.
- Fixed issue where removing and re-adding an actor would cause subsequent children added not to function properly with regards to their parent/child transforms
- Fixed issue where
ex.GraphicsSystem
would crash if a parent entity did not have aex.TransformComponent
- Fixed a bug in the new physics config merging, and re-arranged to better match the existing pattern
- Fixed a bug in
canonicalizeAngle
, don't allow the result to be 2PI, now it will be in semi-open range [0..2PI) - Removed circular dependency between
Actions
andMath
packages by movingRotationType
intoMath
package.
Changed/Updated
Remove units by default from parameters
Perf improve PolygonCollider.contains(...) perf by keeping geometry tests in local space.
Perf improvement to image rendering! with ImageRendererV2! Roughly doubles the performance of image rendering
Perf improvement to retrieving components with
ex.Entity.get()
which widely improves engine performanceNon-breaking parameters that reference
delta
toelapsedMs
to better communicate intent and unitsPerf improvements to
ex.ParticleEmitter
- Use the same integrator as the MotionSystem in the tight loop
- Leverage object pools to increase performance and reduce allocations
Perf improvements to collision narrowphase and solver steps
- Working in the local polygon space as much as possible speeds things up
- Add another pair filtering condition on the
SparseHashGridCollisionProcessor
which reduces pairs passed to narrowphase - Switching to c-style loops where possible
- Caching get component calls
- Removing allocations where it makes sense
Perf Side.fromDirection(direction: Vector): Side - thanks @ikudrickiy!
Perf improvements to PointerSystem by using new spatial hash grid data structure
Perf improvements: Hot path allocations
- Reduce State/Transform stack hot path allocations in graphics context
- Reduce Transform allocations
- Reduce AffineMatrix allocations
Perf improvements to
CircleCollider
bounds calculationsSwitch from iterators to c-style loops which bring more speed
Entity
component iterationEntityManager
iterationEventEmitter
sGraphicsSystem
entity iterationPointerSystem
entity iteration
Perf improvements to
GraphicsGroup
by reducing per draw allocations in bounds calculationsApplied increased TS strictness:
- Director API subtree
- Resource API subtree
- Graphics API subtree
- TileMap API subtree
Breaking Changes
ex.Engine.goto(...)
removed, useex.Engine.goToScene(...)
ex.GraphicsComponent.show(...)
removed, useex.GraphicsComponent.use(...)
ex.EventDispatcher
removed, useex.EventEmitter
instead.ex.Engine.getAntialiasing()
andex.Engine.setAntialiasing(bool)
have been removed, use the engine constructor parameter to configurenew ex.Engine({antialiasing: true})
or set on the screenengine.screen.antialiasing = true
ex.Physics.*
configuration statics removed, use the engine constructor parameter to configurenew ex.Engine({physics: ...})
ex.Input.*
namespace removed and types promoted toex.*
- Removed legacy
ex.Configurable
function type used for doing dark magic to allow types to be configured by instances of that same type 💥 - Collision events now only target
ex.Collider
types, this previously would sometimes emit anex.Entity
if you attached to theex.ColliderComponent
ex.PreCollisionEvent
ex.PostCollisionEvent
ex.ContactStartEvent
ex.ContactEndEvent
ex.CollisionPreSolveEvent
ex.CollisionPostSolveEvent
ex.CollisionStartEvent
ex.CollisionEndEvent
System.priority
is refactored to be static.ex.Timer
now only takes the option bag constructorPreDrawEvent
,PostDrawEvent
,PreTransformDrawEvent
,PostTransformDrawEvent
,PreUpdateEvent
,PostUpdateEvent
now useelapsedMs
instead ofdelta
for the elapsed milliseconds between the last frame.460696Trigger
API has been slightly changed:action
now returns the triggering entity:(entity: Entity) => void
target
now works in conjunction withfilter
instead of overwriting it.EnterTriggerEvent
andExitTriggerEvent
now contain aentity: Entity
property instead ofactor: Actor
ex.Vector.normalize()
return zero-vector ((0,0)
) instead of(0,1)
when normalizing a vector with a magnitude of 0ex.Gif
transparent color constructor arg is removed in favor of the built in Gif file mechanism- Remove core-js dependency, it is no longer necessary in modern browsers. Technically a breaking change for older browsers
ex.Particle
andex.ParticleEmitter
now have an API that looks like modern Excalibur APIsparticleSprite
is renamed tographic
particleRotationalVelocity
is renamed toangularVelocity
fadeFlag
is renamed tofade
acceleration
is renamed toacc
particleLife
is renamed tolife
minVel
is renamed tominSpeed
maxVel
is renamed tomaxSpeed
ParticleEmitter
now takes a separateparticle: ParticleConfig
parameter to disambiguate between particles parameters and emitter onesconst emitter = new ex.ParticleEmitter({ width: 10, height: 10, radius: 5, emitterType: ex.EmitterType.Rectangle, emitRate: 300, isEmitting: true, particle: { transform: ex.ParticleTransform.Global, opacity: 0.5, life: 1000, acc: ex.vec(10, 80), beginColor: ex.Color.Chartreuse, endColor: ex.Color.Magenta, startSize: 5, endSize: 100, minVel: 100, maxVel: 200, minAngle: 5.1, maxAngle: 6.2, fade: true, maxSize: 10, graphic: swordImg.toSprite(), randomRotation: true, minSize: 1 } });
<details> <summary>Raw Changes</summary>
What's Changed
- chore: ensure consistent toEqualImage() resolution when running on hidpi displays by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3018
- chore: enforce prettier and eslint by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3014
- Fix url typo by @muhajirdev in https://github.com/excaliburjs/Excalibur/pull/3026
- Make Entity Constructor's
components
option optional by @muhajirdev in https://github.com/excaliburjs/Excalibur/pull/3027 - Fix typo in system docs by @muhajirdev in https://github.com/excaliburjs/Excalibur/pull/3028
- Update Input docs by @muhajirdev in https://github.com/excaliburjs/Excalibur/pull/3029
- Add actor.oldGlobalPos, deprecate getGlobalPos in favour of globalPos getter by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3017
- fix: getSceneName use scenes #3022 by @aruru-weed in https://github.com/excaliburjs/Excalibur/pull/3023
- feat: Implement unique action ids by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3031
- Feat: provide development build for bundlers, warn on unadded entity by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3032
- updated authors.yml and added mookie blog post by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3035
- fix: [#3047] Animation glitch cause by uninitialized state by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3048
- Update 00-your-first-game.mdx by @gavriguy in https://github.com/excaliburjs/Excalibur/pull/3051
- Update 07-tilemap.mdx kenny.nl url changed to kenney.nl by @jellewijma in https://github.com/excaliburjs/Excalibur/pull/3052
- fix: Cirular dependency on Actor by @JumpLink in https://github.com/excaliburjs/Excalibur/pull/3056
- fix: [#3060] SpriteFont measureText with scale by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3062
- fix: Polygon winding correct after negative transforms by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3063
- pathfinding part 1 by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3069
- Feat: z-indexes are relative to their parent by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3070
- blog: added pathfinding part 2 by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3074
- blog: update link in part 1 by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3075
- fix: improve types to disallow invalid combo of collider args by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3024
- blogpost: wfc article, modified for mdx by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3090
- feat: Added default value to Canvas constructor by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3094
- feat: removed invalid null as value from Random.shuffle() by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3095
- feat: added getters width and height to Tilemap by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3091
- blogpost: Cellular Automata by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3100
- Simplified contains BoundingBox code by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3096
- doc config tweak by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3105
- blogpost: Cellular Automata Typos by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3108
- marketing: Print size + SVG logo by @kamranayub in https://github.com/excaliburjs/Excalibur/pull/3109
- perf: Reduce allocations on the hot path by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3111
- perf: Hash Grid Broadphase + Allocation Reduction by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3071
- fix: getTile return type should include null by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3112
- feat: expose all actor exports by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3113
- perf: Improve narrowphase and realistic solver performance by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3114
- chore: Update babel monorepo to v7.24.7 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3036
- chore: Update dependency @fortawesome/fontawesome-free to v6.5.2 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3037
- chore: Update dependency css-loader to v6.11.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3045
- chore: Update dependency @octokit/rest to v20.1.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3115
- chore: Update dependency serve to v14.2.3 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3040
- chore: Update storybook monorepo to v7.6.20 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3043
- chore: Update dependency core-js to v3.37.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3044
- Blogpost: auto tiling by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3116
- chore: Update dependency node to v20.15.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3039
- chore: Update dependency eslint-plugin-jsdoc to v48.5.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3038
- fix: [#3119] Fix graphics type + apply strictness to Graphics types by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3120
- feat: add CollisionContact.bias(collider) by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3122
- Update JSDoc for System class by @robbertstevens in https://github.com/excaliburjs/Excalibur/pull/3125
- fix: rewrite ClosestLine and PolygonPolygonClosestLine logic for improved accuracy on sloped polygons by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3124
- refactor: Improve CPU Particles API + Perf by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3118
- fix: [#3126] Fix keyboard events in scene scope by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3127
- feat: WebGLTexture garbage collection by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/2974
- Add more common colors by @egodjuks in https://github.com/excaliburjs/Excalibur/pull/3131
- chore: Upgrade docusaurus to 3.4.0 + new patch by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3129
- fix: [#3128] Unused scene loader locks up engine by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3133
- chore(deps-dev): bump ejs from 3.1.9 to 3.1.10 by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3046
- chore(deps-dev): bump braces from 3.0.2 to 3.0.3 by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3097
- fix: Emitter pool was created whether you used it or not by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3138
- feat: Implement Collision Sub-Stepping by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3136
- docs: #3132 Update all Markdown comment symbol links to {@apilink} by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3137
- feat: Flash Action by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3142
- chore: Update dependency @types/webpack-env to v1.18.5 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3144
- chore: Update dependency karma to v6.4.4 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3145
- chore: Update dependency remark-emoji to v5.0.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3148
- chore: Update dependency rimraf to v5.0.10 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3149
- chore: Update dependency semver to v7.6.3 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3150
- chore: Update babel monorepo by @renovate in https://github.com/excaliburjs/Excalibur/pull/3151
- chore: Update coverallsapp/github-action action to v2.3.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3152
- chore: Update dependency @fortawesome/fontawesome-free to v6.6.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3155
- chore: Update dependency lint-staged to v15.2.7 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3147
- chore: Update dependency husky to v9.1.4 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3158
- chore: Update dependency eslint-plugin-jsdoc to v48.11.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3156
- chore: Update dependency jasmine to v5.2.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3159
- feat: Coroutine instances by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3154
- chore: Update dependency jasmine-core to v5.2.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3160
- chore: Update dependency node to v20.16.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3161
- fix: [#3167] Increase strictness in Resource types by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3168
- feat: add Jetbrains .idea dir to .gitignore by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3169
- fix: Gif parsing did not work with certain formats by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3173
- docs: Add limitations of SolverStrategy.Arcade by @SamuelAsherRivello in https://github.com/excaliburjs/Excalibur/pull/3174
- Feat: [#3171] normalize zero vector by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3179
- Feat: [#3157] return target on trigger by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3176
- chore: Update dependency lint-staged to v15.2.9 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3188
- chore: Update dependency webpack to v5.94.0 [SECURITY] by @renovate in https://github.com/excaliburjs/Excalibur/pull/3183
- chore: Update dependency @babel/preset-env to v7.25.4 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3184
- chore: Update dependency husky to v9.1.5 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3187
- chore: Update dependency node to v20.17.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3190
- chore: Update dependency docusaurus-plugin-typedoc-api to v4.2.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3185
- chore: Update dependency lint-staged to v15.2.10 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3195
- chore: Update react monorepo by @renovate in https://github.com/excaliburjs/Excalibur/pull/3189
- chore: Update dependency prism-react-renderer to v2.4.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3191
- chore: Update docusaurus monorepo to v3.5.2 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3196
- chore: Update typescript-eslint monorepo to v7.18.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3197
- chore: Update dependency replace-in-file to v7.2.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3192
- revert "chore: Update docusaurus monorepo to v3.5.2" by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3198
- fix: Rename delta to elapsedMs by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3200
- On addon remove by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3143
- feat: static System priority by @Autsider666 in https://github.com/excaliburjs/Excalibur/pull/3207
- [#3213] Fix link typo in 02-conventions.mdx by @mosesintech in https://github.com/excaliburjs/Excalibur/pull/3214
- fix: [#3215] Check shader complexity to avoid crash on certain hardware by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3216
- chore: Update dependency babel-loader to v9.2.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3221
- chore: Update dependency @types/node to v20.16.10 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3217
- chore: Update dependency @types/react to v18.3.10 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3218
- chore: Update dependency karma-jasmine-order-reporter to v1.2.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3225
- chore: Update dependency eslint to v8.57.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3219
- chore: Update dependency husky to v9.1.6 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3220
- chore: Update dependency eslint-plugin-storybook to v0.9.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3222
- chore: Update dependency webpack to v5.95.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3226
- docs(events): Fuller example with pub/sub by @kamranayub in https://github.com/excaliburjs/Excalibur/pull/3232
- chore: Update dependency jasmine to v5.3.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3223
- chore: Update dependency jasmine-core to v5.3.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3224
- chore: Update TimonVS/pr-labeler-action action to v5 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3229
- [#3236] Fix missing word typo in 06.1-actions.mdx by @mosesintech in https://github.com/excaliburjs/Excalibur/pull/3237
- feat: Add alias fixed update timestep by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3239
- chore(deps): bump cookie, express and socket.io by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3240
- chore(deps): bump cookie and express in /site by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3242
- chore: Update actions/stale action to v9 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3230
- chore: Update dependency @octokit/rest to v21 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3231
- feat: [#150] Implement SVG support in ImageSource with static builder by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3244
- fix: [#3087]
blockInput: true
blocks input accessors by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3235 - Fix Typo in Documentation: 15-tiled-plugin by @mosesintech in https://github.com/excaliburjs/Excalibur/pull/3246
- feat: Add Slide Transition by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3248
- chore: Update dependency mermaid to v10.9.3 [SECURITY] by @renovate in https://github.com/excaliburjs/Excalibur/pull/3252
- chore(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 in /site by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3253
- chore(deps): bump webpack from 5.89.0 to 5.95.0 in /site by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3243
- fix: [#3098] Make collision events consistent targets by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3238
- fix: [#3250] Stop cancelled pointer events from bubbling to the top level by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3255
- feat: Nine-slice by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3241
- chore: Update coverallsapp/github-action action to v2.3.4 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3256
- chore: Update dependency @types/react to v18.3.12 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3257
- chore: Update dependency serve to v14.2.4 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3258
- chore: Update dependency @mdx-js/react to v3.1.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3260
- chore: Update dependency eslint-plugin-storybook to v0.10.2 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3261
- chore: Update babel monorepo by @renovate in https://github.com/excaliburjs/Excalibur/pull/3259
- chore: Update dependency node to v20.18.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3264
- chore: Update dependency jasmine to v5.4.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3262
- chore: Update dependency jasmine-core to v5.4.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3263
- chore: Update dependencies by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3272
- chore: Update docusaurus monorepo to v3.5.2 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3228
- fix: [#3078] Pointer lastWorldPosition updates when the camera does by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3245
- Probably a typo in explaining actor children by @isokissa in https://github.com/excaliburjs/Excalibur/pull/3274
- perf: Improve ex.Entity.get(...) by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3276
- docs: attempt a typedoc bump by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3281
- chore(deps): bump cross-spawn from 7.0.3 to 7.0.5 in /site by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3279
- feat: Add ex.BezierCurve and CurveBy/CurveTo actions by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3282
- Docs: Correct small typo by @isokissa in https://github.com/excaliburjs/Excalibur/pull/3286
- feat: Actions with option bags and duration by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3289
- [#3284] perf: reduce allocations for GraphicsGroup draw calls by @blakearoberts in https://github.com/excaliburjs/Excalibur/pull/3285
- chore: update api with new deprecations by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3290
- perf: Use geometry instancing in new ImageRendererV2 by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3278
- perf: Improve pointer perf by keeping geometry local space by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3013
- fixes broken link on screen element page. by @Adamduehansen in https://github.com/excaliburjs/Excalibur/pull/3292
- chore: Update dependency @types/jasmine to v5.1.5 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3293
- chore: Update dependency husky to v9.1.7 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3295
- chore: Update dependency react-live to v4.1.8 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3297
- chore: Update dependency @types/node to v20.17.9 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3294
- chore: Update dependency mermaid to v11.4.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3296
- chore: Update dependency @fortawesome/fontawesome-free to v6.7.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3298
- chore: Update dependency eslint-plugin-storybook to v0.11.1 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3300
- chore: Update docusaurus monorepo to v3.6.3 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3304
- feat: GPU particles implementation by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3212
- Revert "chore: Update docusaurus monorepo to v3.6.3" by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3308
- chore(deps): bump path-to-regexp from 1.8.0 to 1.9.0 in /site by @dependabot in https://github.com/excaliburjs/Excalibur/pull/3307
- chore: Update dependency @types/node to v22 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3305
- chore: Update dependency css-loader to v6.11.0 by @renovate in https://github.com/excaliburjs/Excalibur/pull/3299
- feat: Tiling Sprites and Animations by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3309
- feat: Make RotateTo+RotationType functionality more available by @isokissa in https://github.com/excaliburjs/Excalibur/pull/3291
- Fix/docs typo mosesintech by @mosesintech in https://github.com/excaliburjs/Excalibur/pull/3313
</details>
Full Changelog: https://github.com/excaliburjs/Excalibur/compare/v0.29.3...v0.30.0
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.30.3 | 89 | 1/2/2025 |
0.30.2 | 83 | 12/26/2024 |
0.30.1 | 115 | 12/13/2024 |
0.29.3 | 162 | 5/5/2024 |
0.29.2 | 183 | 4/7/2024 |
0.29.1 | 192 | 2/23/2024 |
0.29.0 | 189 | 2/20/2024 |
0.28.7 | 214 | 1/27/2024 |
0.28.6 | 194 | 1/13/2024 |
0.28.5 | 228 | 1/6/2024 |
0.28.4 | 213 | 12/22/2023 |
0.28.3 | 197 | 12/12/2023 |
0.28.2 | 219 | 12/2/2023 |
0.28.0 | 307 | 8/11/2023 |
0.25.3 | 630 | 2/6/2022 |
0.25.2 | 500 | 1/22/2022 |
0.25.1 | 561 | 11/6/2021 |
0.25.0 | 485 | 10/4/2021 |
0.24.5 | 801 | 9/7/2020 |
0.24.4 | 702 | 9/3/2020 |
0.24.3 | 708 | 5/10/2020 |
0.24.1 | 606 | 4/24/2020 |
0.24.0 | 644 | 4/24/2020 |
0.23.0 | 798 | 6/8/2019 |
0.22.0 | 788 | 4/6/2019 |
0.21.0 | 964 | 2/2/2019 |
0.20.0 | 962 | 12/23/2018 |
0.19.1 | 956 | 10/23/2018 |
0.19.0 | 1,006 | 10/13/2018 |
0.18.0 | 1,068 | 8/4/2018 |
0.17.0 | 1,126 | 6/16/2018 |
0.16.0 | 1,193 | 4/6/2018 |
0.15.0 | 991 | 2/17/2018 |
0.14.0 | 1,153 | 12/2/2017 |
0.13.0 | 1,077 | 10/7/2017 |
0.12.0 | 1,166 | 8/12/2017 |
0.11.0 | 1,249 | 6/10/2017 |
0.10.0 | 1,209 | 4/8/2017 |
0.9.0 | 1,228 | 2/10/2017 |
0.8.0 | 1,156 | 12/4/2016 |
0.7.1 | 1,355 | 10/4/2016 |
0.7.0 | 1,391 | 8/30/2016 |
0.6.0 | 1,615 | 1/20/2016 |
0.5.1 | 1,407 | 6/26/2015 |
0.5.0 | 1,374 | 6/4/2015 |
0.2.2 | 1,754 | 4/16/2014 |
0.2.1 | 1,593 | 4/16/2014 |
0.2.0 | 1,613 | 4/10/2014 |
0.1.1-alpha | 1,229 | 12/19/2013 |
0.1.0-alpha | 1,319 | 12/12/2013 |