Excalibur 0.31.0
dotnet add package Excalibur --version 0.31.0
NuGet\Install-Package Excalibur -Version 0.31.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Excalibur" Version="0.31.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Excalibur" Version="0.31.0" />
<PackageReference Include="Excalibur" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Excalibur --version 0.31.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Excalibur, 0.31.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Excalibur@0.31.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Excalibur&version=0.31.0
#tool nuget:?package=Excalibur&version=0.31.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Added
- Added new
ex.Camera.setStrategies()
andex.Camera.strategies
for additional control of strategy order - Fixed ex.Font measureText always using 10px sans-serif on the first call on some browsers
- Added a new
ex.Sound({...})
option back constructor to set all the same props available on sound - Added a new
ex.SoundManager
type for managing groups of audio/sound effects/music volume in an easier way
const soundManager = new ex.SoundManger({
channels: ['fx', 'music', 'background'],
sounds: {
jumpSnd: { sound: jumpSnd, volume: 0.4, channels: ['fx'] },
forestSnd: { sound: forestSnd, volume: 0.2, channels: ['music', 'background'] },
challengeMusic: { sound: challengeMusic, volume: 0.2, channels: ['music'] },
guitarLoop: { sound: guitarLoop, volume: 0.2, channels: ['music'] }
}
});
// play a specific sound
soundManager.play('jumpSnd');
// mute a specific channel with all member sounds
soundManager.channel.mute('music');
// mute all sound
soundManager.mute();
// unmute all sound that was previously muted, and resume playing from the current location
soundManager.unmute();
// unmute a specific channel that was muted
soundManager.channel.unmute('music');
// play a specific channel
soundManager.channel.play('music');
// set the max volume of an entire channel
soundManager.channel.setVolume('music', 0.9);
- Added
ex.Animation.data
to store arbitrary meta data for an animation. Data can be directly added in the constructor as an option, by using the optionaldata
argument infromSpriteSheet(...)
and as an option infromSpriteSheetCoordinates({...})
- Added a new configuration option to
ex.Engine({global: ...})
where you can provide a keyboard global to override if iframe detection fails for anyway. - Added new way to output data from scenes
onDeactivate()
, returning data will be passed to the nextSceneActivationContext
in thepreviousSceneData
property! - Added new
transitionstart
andtransitionend
events toex.Scenes
- Pipe
navigation*
events toex.Engine
- Added ability to use
ex.Vector
to specify offset and margin inSpriteSheet.fromImageSource({..})
- New PostProcessor.onDraw() hook to handle uploading textures
- Adds contact solve bias to RealisticSolver, this allows customization on which direction contacts are solved first. By default there is no bias set to 'none'.
- Queries can now take additional options to filter in/out by components or tags.
const query = new Query({
// all fields are optional
components: {
all: [ComponentA, ComponentB] as const, // important for type safety!
any: [ComponentC, ComponentD] as const, // important for type safety!
not: [ComponentE]
},
tags: {
all: ['tagA', 'tagB'],
any: ['tagC', 'tagD'],
not: ['tagE']
}
})
// previous constructor type still works and is shorthand for components.all
new Query([ComponentA, ComponentB] as const)
- Queries can now match all entities by specifying no filters
const query = new Query({})
- Adds
maxVel
attribute toMotionComponent
, which clamps velocity on separated X and Y axes - Add
Clock.clearSchedule(id)
and haveClock.schedule
return an ID so you can clear a scheduled callback before it fires
Fixed
- Fixed issue where
ParticleEmitter
Particle
did not receive z index value from emitter when in World space - Fixed issue where an animation that was
anim.reset()
inside of an animation event handler likeanim.once('end', () => anim.reset())
would not work correctly - Fixed issue where
GpuParticleEmitter
did not rotate with their parents - Fixed issue where Cpu
ParticleEmitter
did not respectParticleTransform.Local
- Fixed issue where same origin iframes did not work properly with keyboard & pointer events
- Fixed issue where the initial scene onPreLoad was not being run
- Fixed unecessary coupling with
ex.ColliderComponent
/ex.BodyComponent
that prevented collider tracking on entities that haveex.TransformComponent
/ex.ColliderComponent
, this influenced users doing Entity level ECS with pointer events. - Fixed issue where passing 0 to
ex.Sound.play(0)
would not set the volume to 0, instead the previous volume would play. - Fixed issue where the Actor.color did not respect being set
- Fixed offscreen culling issue when using parallax on TileMaps
- Fixed division by 0 when timescale is 0 in actions
- Fixed
onTransition
on the initial scene transition - Fixed
ex.TriggerOptions
type to all optional parameters - Fixed issue where the ActorArgs type hint would not error when providing a color causing confusion when it didn't produce a default graphic.
- Fixed false positive warning when adding timers
- Fixed issue where gamepad buttons wouldn't progress the default loader play button
- Add defense around middling Safari fullscreen support and update documentation
- Fixed issue where non-standard gamepad buttons would not be emitted by Excalibur
- Added an additional param to the
ex.GamepadButtonEvent
index
to disabiguate betweenex.Buttons.Unknown
- Added an additional param to the
- Fixed issue where Realistic solver would not sort contacts by distance causing some artifacts on seams
- Fixed issue with CompositeCollider where large TileMaps would sometimes causes odd collision behavior in the Realistic Solver when the body & collider components are far apart in a TileMap.
- Fixed crash on Xiaomi Redmi Phones by lazy loading the GPU particle renderer, GPU particles still do not work on these phones
- Add warning if World.add() falls through! This is caused by multiple versions of Excalibur usually
- Fixed CollidePolygonPolygon crash with some defense against invalid separation
- Fixed issue with PostProcessor where it would not run correctly if no actors present
- Removed warning in development for unadded entities
- Fixed memory leaks from retained entities in
Map<Entity>
Changed
- Updated
ex.Camera.addStrategy()
to accept multiple strategies - Changed the behavior of
fromSpriteSheet(...)
,fromSpriteSheetCoordinates({...})
andclone()
ofex.Animation
to return the subclass if called from there - Optimized BoundingBox.rayCast and BoundingBox.rayCastTime
- Optimized BoundingBox.intersect(otherBoundingBox)
- Change logging behavior for entities not in scenes, only log in dev builds
What's Changed
- BUG: fixed actor cloning of null collider, added test by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3345
- docs: update Bluesky href to current by @chrisalley in https://github.com/excaliburjs/Excalibur/pull/3347
- Revert "chore: Update docusaurus monorepo to v3.7.0" by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3349
- fix: composite multi contact by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3351
- fix: Spritesheet Spacing Options, allowing Vectors by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3350
- fix: Add missing events for transitions + Fix onTransition for initial scene transition by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3359
- docs: fix typo "n Excalibur" → "in Excalibur" in tutorial step 03 by @npretto in https://github.com/excaliburjs/Excalibur/pull/3361
- feat: Implement Uniform Buffers Object Support by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3360
- docs: new years post by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3344
- fix: TileMap meshes properly when transform changes by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3384
- DOCS: Update screens-display-modes.mdx by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3407
- docs: adds additional details to building up an isometric scene by @chrisk-7777 in https://github.com/excaliburjs/Excalibur/pull/3411
- chore: migrate tests to vitest by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3381
- fix: [#3389] TileMap culling when using parallax by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3406
- #3424 feat: Add maxVel to MotionComponent by @kfalicov in https://github.com/excaliburjs/Excalibur/pull/3425
- BugFix : Issue 3427, ScreenAppender blocks pointerevents by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3428
- add EulerIntegrator tests by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3429
- updated Meet action to add tolerance by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3385
- feat(Clock): Add API to clearSchedule by @kamranayub in https://github.com/excaliburjs/Excalibur/pull/3446
- Use vite for excalibur build by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3434
- feat: Implement Scene deactivation data passing by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3449
- fix: [#3412] collider body coupling by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3451
- fix: [#3452] Initial scene respects onPreLoad by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3453
- feat: support any, all and not component/tag filters on Query by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3380
- Graph Module by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3433
- refactor: Optimize BoundingBox/Raycast by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3454
- Update 00-z-quick-start.mdx by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3465
- Update 00-z-quick-start.mdx by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3466
- Correct scene-crossfade.ts example by @eugenemed in https://github.com/excaliburjs/Excalibur/pull/3467
- fix: ex.Random improve unique seeding on constructor w/o provided seed by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3470
- fix: Keyboard events on same origin iframes by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3471
- fix: [#3469] GpuParticle rotation is respected by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3473
- Improved flappy bird tutorial by @Clemix37 in https://github.com/excaliburjs/Excalibur/pull/3474
- added AxeNArrow to showcase by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3476
- fix: Animation behavior when reset() from animation event by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3489
- feat: Support meta data for Animation by @thplat in https://github.com/excaliburjs/Excalibur/pull/3490
- removes unadded entity warning by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3492
- change: return subclass for Animation factories by @thplat in https://github.com/excaliburjs/Excalibur/pull/3493
- Feature: Added lerp method to vector class by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3491
- Added 2 references to showcase by @DavDag in https://github.com/excaliburjs/Excalibur/pull/3496
- feat: Add SoundManager for managing music/fx/audio in a friendly way by @eonarheim in https://github.com/excaliburjs/Excalibur/pull/3472
- Add call to super.update by @SanjoSolutions in https://github.com/excaliburjs/Excalibur/pull/3500
- [Bug] Collider.ts, touching(), returning always true by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3498
- [Article-blog] Dual Grid AutoTiling by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3504
- fix: Apply z index to particles [#3503] by @chrisk-7777 in https://github.com/excaliburjs/Excalibur/pull/3505
- fix(Engine): Remove canvas only when it has been created by @SanjoSolutions in https://github.com/excaliburjs/Excalibur/pull/3506
- fix: Clean up memory leaks from Entities in Maps [#3510] by @BaconSoap in https://github.com/excaliburjs/Excalibur/pull/3511
- chore: split out vitest tests into visual & unit by @mattjennings in https://github.com/excaliburjs/Excalibur/pull/3508
- [DOC tweak in material documentation] Update 04.2-material.mdx by @jyoung4242 in https://github.com/excaliburjs/Excalibur/pull/3512
- feat: Add Camera methods to control strategy priority by @chrisk-7777 in https://github.com/excaliburjs/Excalibur/pull/3509
- site: Add Excalitris Sample by @chrisk-7777 in https://github.com/excaliburjs/Excalibur/pull/3518
- Site samples styles by @chrisk-7777 in https://github.com/excaliburjs/Excalibur/pull/3520
New Contributors
- @chrisalley made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3347
- @npretto made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3361
- @chrisk-7777 made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3411
- @kfalicov made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3425
- @eugenemed made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3467
- @Clemix37 made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3474
- @thplat made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3490
- @DavDag made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3496
- @SanjoSolutions made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3500
- @BaconSoap made their first contribution in https://github.com/excaliburjs/Excalibur/pull/3511
Full Changelog: https://github.com/excaliburjs/Excalibur/compare/v0.30.3...v0.31.0
There are no supported framework assets in this package.
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.31.0 | 32 | 9/27/2025 |
0.30.3 | 224 | 1/2/2025 |
0.30.2 | 192 | 12/26/2024 |
0.30.1 | 227 | 12/13/2024 |
0.29.3 | 239 | 5/5/2024 |
0.29.2 | 272 | 4/7/2024 |
0.29.1 | 271 | 2/23/2024 |
0.29.0 | 290 | 2/20/2024 |
0.28.7 | 283 | 1/27/2024 |
0.28.6 | 264 | 1/13/2024 |
0.28.5 | 301 | 1/6/2024 |
0.28.4 | 285 | 12/22/2023 |
0.28.3 | 265 | 12/12/2023 |
0.28.2 | 307 | 12/2/2023 |
0.28.0 | 393 | 8/11/2023 |
0.25.3 | 768 | 2/6/2022 |
0.25.2 | 637 | 1/22/2022 |
0.25.1 | 714 | 11/6/2021 |
0.25.0 | 613 | 10/4/2021 |
0.24.5 | 940 | 9/7/2020 |
0.24.4 | 871 | 9/3/2020 |
0.24.3 | 881 | 5/10/2020 |
0.24.1 | 749 | 4/24/2020 |
0.24.0 | 808 | 4/24/2020 |
0.23.0 | 971 | 6/8/2019 |
0.22.0 | 949 | 4/6/2019 |
0.21.0 | 1,123 | 2/2/2019 |
0.20.0 | 1,117 | 12/23/2018 |
0.19.1 | 1,124 | 10/23/2018 |
0.19.0 | 1,201 | 10/13/2018 |
0.18.0 | 1,397 | 8/4/2018 |
0.17.0 | 1,586 | 6/16/2018 |
0.16.0 | 1,670 | 4/6/2018 |
0.15.0 | 1,310 | 2/17/2018 |
0.14.0 | 1,625 | 12/2/2017 |
0.13.0 | 1,567 | 10/7/2017 |
0.12.0 | 1,660 | 8/12/2017 |
0.11.0 | 1,743 | 6/10/2017 |
0.10.0 | 1,708 | 4/8/2017 |
0.9.0 | 1,730 | 2/10/2017 |
0.8.0 | 1,493 | 12/4/2016 |
0.7.1 | 2,009 | 10/4/2016 |
0.7.0 | 2,025 | 8/30/2016 |
0.6.0 | 2,275 | 1/20/2016 |
0.5.1 | 1,922 | 6/26/2015 |
0.5.0 | 1,883 | 6/4/2015 |
0.2.2 | 2,273 | 4/16/2014 |
0.2.1 | 2,114 | 4/16/2014 |
0.2.0 | 2,131 | 4/10/2014 |
0.1.1-alpha | 1,750 | 12/19/2013 |
0.1.0-alpha | 1,845 | 12/12/2013 |