Commits
* Tutorial completed
* fixed cloudflare issues
* fallthrough switch case bug
* repush for cloudflare
* Custom Graphics Tutorial
* fixed type issue with Cloudflare
* update and re-push
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Not only is this initial content under the 'How To's' section of Tutorials,
This changes the folder structure of that 'section' of the docs to clean it up a bit (just my opinon)
This has a docusaurus tweak in the config to update the default state of the docs to collapsed, which (in my opinion) is a lot easier to read/navigate
Please review in the cloudfare how this 'looks' to you...
I will be building out the examples next to 'ensure' accuracy of content
<img width="322" height="788" alt="image" src="https://github.com/user-attachments/assets/45d90e92-814b-49d8-9045-54cd78a7dca8" />
Here is example of new Tutorials menu behavior;
<img width="414" height="638" alt="image" src="https://github.com/user-attachments/assets/1fd86b40-17f4-4953-935c-809e34fda599" />
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
New article, wouldn't mind a pre-read and some feedback
Close #1175
Lowercase all the things! Uppercase is evil and causes a lot of issues x-plat
* wip sleeping is more stable
* refactor
* maybe help with floaters
* maybe fix all the thigns
* okay
* fix motion system
* dont interpolate sleeping bodies
* better canonicalizeAngle
* working
* implement islands
* fix tests and refactoring
* tweak
* fix lint
* add system durations
* fix tests
* really fix tests
* really fix tests
* delete commented code
* remove unused param
* remove assert
* add changelog
* fix trail off
* really fix tests
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.0.2 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.0.2...13.2.1)
---
updated-dependencies:
- dependency-name: mdast-util-to-hast
dependency-version: 13.2.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 4.22.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)
---
updated-dependencies:
- dependency-name: express
dependency-version: 4.22.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Added new parameter to `ex.Sounds` to schedule start time, this allows you to synchronize playback of multiple audio tracks
```typescript
const start500MsFromNow = AudioContextFactory.currentTime() + 500;
Resources.MusicSurface.play({ volume: .5, scheduledStartTime: start500MsFromNow });
// Start layered tracks at 0 volume so they are synchronized
Resources.MusicIndDrums.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicIndTopper.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicGroovyDrums.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicGroovyTopper.play({ volume: 0, scheduledStartTime: start500MsFromNow });
```
* feat: new release script
* remove old deploy script
<!--
Hi, and thanks for contributing to Excalibur!
Before you go any further, please read our contributing guide: https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md
especially the "Submitting Changes" section:
https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#submitting-changes
---
A quick summary checklist is included below for convenience:
-->
===:clipboard: PR Checklist :clipboard:===
- [x] :pushpin: issue exists in github for these changes
- [x] :microscope: existing tests still pass
- [x] :see_no_evil: code conforms to the [style guide](https://github.com/excaliburjs/Excalibur/blob/main/STYLEGUIDE.md)
- [x] :triangular_ruler: new tests written and passing / old tests updated with new scenario(s)
- [x] :page_facing_up: changelog entry added (or not needed)
==================
<!-- If you're closing an issue with this pull request, or contributing a significant change, please include your changes in the appropriate section of CHANGELOG.md as outlined in https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#creating-a-pull-request. -->
<!--Please format your pull request title according to our commit message styleguide: https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#commit-messages -->
<!-- Thanks again! -->
<!--------------------------------------------------------------------------------------------->
Relates to https://github.com/excaliburjs/Excalibur/issues/3627
## Changes:
Updated flappy bird tutorial with a note regarding expected behavior of bug when the bird dies.
Updated flappy bird tutorial code snippets to include a few missing imports.
Documentation Updates:
Step 4 of flappy bird tutorial (https://excaliburjs.com/docs/step-4-flying-bird)
Before
<img width="1382" height="748" alt="Screenshot 2025-12-19 at 12 24 33 PM" src="https://github.com/user-attachments/assets/2c2ad3d1-7382-4c84-812a-87c6a03f437a" />
After
<img width="1342" height="659" alt="Screenshot 2025-12-19 at 12 23 30 PM" src="https://github.com/user-attachments/assets/d56682f8-e912-4a3f-bb60-6203ff9eba66" />
Step 8 of flappy bird tutorial (https://excaliburjs.com/docs/step-8-periodic-pipes)
Before
<img width="1413" height="786" alt="Screenshot 2025-12-19 at 12 26 15 PM" src="https://github.com/user-attachments/assets/b7551333-f5e0-4c30-9bf5-f2b08cd89257" />
After
<img width="1054" height="390" alt="Screenshot 2025-12-19 at 12 23 55 PM" src="https://github.com/user-attachments/assets/adb006dc-59aa-447f-85a1-222de52df07e" />
Step 9 of flappy bird tutorial (https://excaliburjs.com/docs/step-9-scoring-points)
Before
<img width="1109" height="725" alt="Screenshot 2025-12-19 at 12 27 33 PM" src="https://github.com/user-attachments/assets/33ff6c43-af87-4883-b062-c44258a35b65" />
After
<img width="1070" height="297" alt="Screenshot 2025-12-19 at 12 24 02 PM" src="https://github.com/user-attachments/assets/9f2d1cdb-1401-428e-b1db-7817820a77e0" />
Signed-off-by: Scott Westover <swestover@manh.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* feat: Add better debug settings
* add some nicer collision group stuff
* update tilemap test
* update body test
Discussed in Discord. This adds a tooltip indicator when the user clicks the share button.
See video (in the video it looks like on hover, but its actually on click):
https://github.com/user-attachments/assets/736d988c-6084-4f9d-b055-58ab6b72c87c
Also fixed up pathing for the playground templates, again. Its like I've never heard of relative links before..
Closes https://github.com/excaliburjs/Excalibur/issues/3623
## Changes:
Instead of looping over available sprite sheet sprites and finding them in spriteSheetIndex, loop over spriteSheetIndex and find them in the sprite sheet sprites.
This allows frames to be repeated. It also saves one loop (one fewer filter).
* docs: Add text quality information
* add another playground
* add mount visible
No issue, but discussed in Discord.
Closes #
## Changes:
- Adds an intersection observer so embedded Playgrounds can optionally mount after they come into view
Can be seen on this preview page: https://fix-playground-intersection.excaliburjs.pages.dev/docs/physics
Moves the Excalibur Playground sub-site into the core Excalibur repo
closes: #3596
## Changes:
- Added new Timer events!
```typescript
const timer = new ex.Timer({...});
timer.events.on('complete', () => {...}); // after the last repeat
timer.events.on('action', () => {...}); // every fire of the timer
timer.events.on('start', () => {...}); // after the timer is started
timer.events.on('stop', () => {...}); // after the timer is stopped
timer.events.on('pause', () => {...}); // after every pause
timer.events.on('resume', () => {...}); // after every resume
timer.events.on('cancel', () => {...}); // after cancel
// or specify the onComplete in the constructor
const timer2 = new ex.Timer({
onComplete: () => {...},
...
});
```
Introduce two new methods for obtaining parsed sprites and images from the sprite sheet, enhancing the functionality for rendering and image manipulation.
closes: #3599
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Not only is this initial content under the 'How To's' section of Tutorials,
This changes the folder structure of that 'section' of the docs to clean it up a bit (just my opinon)
This has a docusaurus tweak in the config to update the default state of the docs to collapsed, which (in my opinion) is a lot easier to read/navigate
Please review in the cloudfare how this 'looks' to you...
I will be building out the examples next to 'ensure' accuracy of content
<img width="322" height="788" alt="image" src="https://github.com/user-attachments/assets/45d90e92-814b-49d8-9045-54cd78a7dca8" />
Here is example of new Tutorials menu behavior;
<img width="414" height="638" alt="image" src="https://github.com/user-attachments/assets/1fd86b40-17f4-4953-935c-809e34fda599" />
* wip sleeping is more stable
* refactor
* maybe help with floaters
* maybe fix all the thigns
* okay
* fix motion system
* dont interpolate sleeping bodies
* better canonicalizeAngle
* working
* implement islands
* fix tests and refactoring
* tweak
* fix lint
* add system durations
* fix tests
* really fix tests
* really fix tests
* delete commented code
* remove unused param
* remove assert
* add changelog
* fix trail off
* really fix tests
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.0.2 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.0.2...13.2.1)
---
updated-dependencies:
- dependency-name: mdast-util-to-hast
dependency-version: 13.2.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [express](https://github.com/expressjs/express) from 4.21.2 to 4.22.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)
---
updated-dependencies:
- dependency-name: express
dependency-version: 4.22.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Added new parameter to `ex.Sounds` to schedule start time, this allows you to synchronize playback of multiple audio tracks
```typescript
const start500MsFromNow = AudioContextFactory.currentTime() + 500;
Resources.MusicSurface.play({ volume: .5, scheduledStartTime: start500MsFromNow });
// Start layered tracks at 0 volume so they are synchronized
Resources.MusicIndDrums.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicIndTopper.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicGroovyDrums.play({ volume: 0, scheduledStartTime: start500MsFromNow });
Resources.MusicGroovyTopper.play({ volume: 0, scheduledStartTime: start500MsFromNow });
```
<!--
Hi, and thanks for contributing to Excalibur!
Before you go any further, please read our contributing guide: https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md
especially the "Submitting Changes" section:
https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#submitting-changes
---
A quick summary checklist is included below for convenience:
-->
===:clipboard: PR Checklist :clipboard:===
- [x] :pushpin: issue exists in github for these changes
- [x] :microscope: existing tests still pass
- [x] :see_no_evil: code conforms to the [style guide](https://github.com/excaliburjs/Excalibur/blob/main/STYLEGUIDE.md)
- [x] :triangular_ruler: new tests written and passing / old tests updated with new scenario(s)
- [x] :page_facing_up: changelog entry added (or not needed)
==================
<!-- If you're closing an issue with this pull request, or contributing a significant change, please include your changes in the appropriate section of CHANGELOG.md as outlined in https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#creating-a-pull-request. -->
<!--Please format your pull request title according to our commit message styleguide: https://github.com/excaliburjs/Excalibur/blob/main/.github/CONTRIBUTING.md#commit-messages -->
<!-- Thanks again! -->
<!--------------------------------------------------------------------------------------------->
Relates to https://github.com/excaliburjs/Excalibur/issues/3627
## Changes:
Updated flappy bird tutorial with a note regarding expected behavior of bug when the bird dies.
Updated flappy bird tutorial code snippets to include a few missing imports.
Documentation Updates:
Step 4 of flappy bird tutorial (https://excaliburjs.com/docs/step-4-flying-bird)
Before
<img width="1382" height="748" alt="Screenshot 2025-12-19 at 12 24 33 PM" src="https://github.com/user-attachments/assets/2c2ad3d1-7382-4c84-812a-87c6a03f437a" />
After
<img width="1342" height="659" alt="Screenshot 2025-12-19 at 12 23 30 PM" src="https://github.com/user-attachments/assets/d56682f8-e912-4a3f-bb60-6203ff9eba66" />
Step 8 of flappy bird tutorial (https://excaliburjs.com/docs/step-8-periodic-pipes)
Before
<img width="1413" height="786" alt="Screenshot 2025-12-19 at 12 26 15 PM" src="https://github.com/user-attachments/assets/b7551333-f5e0-4c30-9bf5-f2b08cd89257" />
After
<img width="1054" height="390" alt="Screenshot 2025-12-19 at 12 23 55 PM" src="https://github.com/user-attachments/assets/adb006dc-59aa-447f-85a1-222de52df07e" />
Step 9 of flappy bird tutorial (https://excaliburjs.com/docs/step-9-scoring-points)
Before
<img width="1109" height="725" alt="Screenshot 2025-12-19 at 12 27 33 PM" src="https://github.com/user-attachments/assets/33ff6c43-af87-4883-b062-c44258a35b65" />
After
<img width="1070" height="297" alt="Screenshot 2025-12-19 at 12 24 02 PM" src="https://github.com/user-attachments/assets/9f2d1cdb-1401-428e-b1db-7817820a77e0" />
Signed-off-by: Scott Westover <swestover@manh.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* feat: Add better debug settings
* add some nicer collision group stuff
* update tilemap test
* update body test
Discussed in Discord. This adds a tooltip indicator when the user clicks the share button.
See video (in the video it looks like on hover, but its actually on click):
https://github.com/user-attachments/assets/736d988c-6084-4f9d-b055-58ab6b72c87c
Also fixed up pathing for the playground templates, again. Its like I've never heard of relative links before..
Closes https://github.com/excaliburjs/Excalibur/issues/3623
## Changes:
Instead of looping over available sprite sheet sprites and finding them in spriteSheetIndex, loop over spriteSheetIndex and find them in the sprite sheet sprites.
This allows frames to be repeated. It also saves one loop (one fewer filter).
* docs: Add text quality information
* add another playground
* add mount visible
No issue, but discussed in Discord.
Closes #
## Changes:
- Adds an intersection observer so embedded Playgrounds can optionally mount after they come into view
Can be seen on this preview page: https://fix-playground-intersection.excaliburjs.pages.dev/docs/physics
Moves the Excalibur Playground sub-site into the core Excalibur repo
closes: #3596
## Changes:
- Added new Timer events!
```typescript
const timer = new ex.Timer({...});
timer.events.on('complete', () => {...}); // after the last repeat
timer.events.on('action', () => {...}); // every fire of the timer
timer.events.on('start', () => {...}); // after the timer is started
timer.events.on('stop', () => {...}); // after the timer is stopped
timer.events.on('pause', () => {...}); // after every pause
timer.events.on('resume', () => {...}); // after every resume
timer.events.on('cancel', () => {...}); // after cancel
// or specify the onComplete in the constructor
const timer2 = new ex.Timer({
onComplete: () => {...},
...
});
```
Introduce two new methods for obtaining parsed sprites and images from the sprite sheet, enhancing the functionality for rendering and image manipulation.
closes: #3599
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>