Excalibur.js
@excaliburjs.com
81 followers 17 following 49 posts
Your friendly TypeScript 2D game engine for the web! ⚔️ https://excaliburjs.com
Posts Media Videos Starter Packs
Reposted by Excalibur.js
erikonarheim.com
We did it! Check out our Ludum Dare 58 Game!

ldjam.com/events/ludum...

#gamedev #excaliburjs #ludumdare #ldjam
excaliburjs.com
We have 4 types right now!
4 different types of stickers, sword logo, text logo, May-trix from Sum-Monsters Game, and Cal the robot
excaliburjs.com
We got excalibur stickers for purchase now via Stripe!

excaliburjs.com
https://excaliburjs.com sticker link for purchase
Reposted by Excalibur.js
igdatc.bsky.social
Ludum Dare 58 Approaches!

We are hosting an in person event with @2dcon.gg

* **Virtual ONLY Friday** October 3

* In-Person 2D Con HQ October 4-6

1325 Winter St NE #108, Minneapolis, MN 55413
Hours: 9AM-6PM Central US

* Discord discord.gg/Qw6Yj9CUvQ

* Message @erikonarheim.com with Q's
Join the IGDATC Jam Server Discord Server!
Check out the IGDATC Jam Server community on Discord - hang out with 61 other members and enjoy free voice and text chat.
discord.gg
Reposted by Excalibur.js
erikonarheim.com
Hi friends! The State of JS 2025 survey is now open!
survey.devographics.com/en-US/survey...

Please fill it out! It helps all us web peeps out with data!!

Also if you mention you use Excalibur.js or listen to TypeScript.fm that'd be cool too 🥰
State of JavaScript 2025
Take the State of JavaScript survey
survey.devographics.com
excaliburjs.com
DevContainers for contributors to run the development environment in a consistent way!
Screenshot of VSCode running the new excalibur dev container

```json
// .devcontainer/devcontainer.json
{
  "name": "Node.js & TypeScript (Playwright)",
  "image": "mcr.microsoft.com/playwright:v1.55.1-noble",
  // Install browsers
  "postCreateCommand": "npm install; npx playwright install",
  // Start virtual Xserver for tests and leave running
  "postStartCommand": "nohup bash -c 'Xvfb $DISPLAY -screen 0 1280x720x16 &'",
  "containerEnv": {
    "DISPLAY": ":99"
  },
  "portsAttributes": {
    "51204": {
      "label": "Vitest UI"
    },
    "5173": {
      "label": "Vite Dev Server"
    },
    "6006": {
      "label": "Storybook"
    },
    "3000": {
      "label": "Docs Site"
    }
  }
}

```
excaliburjs.com
ECS Queries can now take additional options to filter in/out by components or tags.
```typescript
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)
```
excaliburjs.com
SoundManager can manage groups of audio clips volume at once, great for background music, sound effects, and more!
```typescript
import * as ex from 'excalibur'

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);

```
excaliburjs.com
⚔️🔥Excalibur v0.31.0 is out! TypeScript Game Engine!

Tons of new features, QOL, and fixes! Now with NPM Provenance!

* New SoundManager for managing groups of audio
* ECS query enhancement for "all", "any", and "not" querys
* Animation data storage
* EX Playground!
* Dev Containers!
* And lots more!
excaliburjs.com
We are hosting an event with @2dcon.gg and @igdatc.bsky.social

* **Virtual ONLY Friday** October 3

* In-Person at 2D Con HQ October 4-6

1325 Winter St NE #108, Minneapolis, MN 55413
Hours: 9AM-6PM Central US

* Join the [IGDATC Jam Discord](discord.gg/Qw6Yj9CUvQ) to participate virtually
ldjam.com
excaliburjs.com
🕹️ Game Jam: Ludum Dare 58 🕹️

ldjam.com/events/ludum...

What: Let's make a game in 72 hours!!!

Who: Anyone that wants to make a game!

When: Friday October 3rd - Monday October 6th

How:
* Rules: ldjam.com/events/ludum...
* Suggest/vote on themes! ldjam.com/events/ludum...
Reposted by Excalibur.js
jeffgerstmann.com
Wow, Blippo+ is pretty amazing.
Reposted by Excalibur.js
mattreyn.games
I really recommend Blippo+ - it lands the absurd alien tone its going for, has some great earworms, and emulates that bygone channel hopping sensation wonderfully (while never feeling overwhelming with the amount of shows 'required' to follow the story). And A++++ for having a Teletext mode.
Reposted by Excalibur.js
distraction.engineer
🎉

I found that if I prop it up just right, with a certain charger, I'm able to charge my laptop.

Anyway, I made an #LDJam post. Letting it juice up some more before I edit other things for the event. Theme Suggestions open.

ldjam.com
Thinkpad with USB C cable wedged in port, laying against couch. One of the few ways I'm able to successfully charge it.
excaliburjs.com
🧱 Excalitris! A brand new Excalibur tetris-like sample is live! Check it out now! You can even do vim motions! Thanks to @chrisk-7777.bsky.social

Did you know you can do game dev with TypeScript?

Play: excaliburjs.com/sample-excal...

Repo: github.com/excaliburjs/...

#typescript #gamedev #tetris
Reposted by Excalibur.js
jolexxa.bsky.social
🥳 congrats!! i hear it was made in #Godot + C# with lots of chickensoft tools 👀🤠

#indiedev #gamedev #dotnet
martinpi.bsky.social
Our SPARROW WARFARE playtest just went live for the public! Join the struggle against the evil storyteller that has enthralled all the other birds. Fight for the freedom of birdkind using wicked combinations of tiles in this mahjong-inspired deckbuilder.

store.steampowered.com/app/3473440/...
Reposted by Excalibur.js
mookie4242.bsky.social
I have a new blogpost out on using dual Tilemaps for autotiling.

#indiedev #gamedev #tilemap @excaliburjs.com

excaliburjs.com/blog/Dual%20...

I have a demo application to play with this technique on Itch.io...
mookie4242.itch.io/dual-tilemap...

Leave a comment and let me know your thoughts!
Dual Tilemap Autotiling Technique | Excalibur.js
Intro
excaliburjs.com
Reposted by Excalibur.js
mookie4242.bsky.social
Checkout my buddy’s NDC talk on how to make JavaScript performant!

This is what powers ExcaliburJS as a game engine.

#gamedev #indiedev

youtu.be/xCB9cB9YZL8?...
JavaScript Blazingly FAST! Lessons from a Game Engine - Erik Onarheim - NDC Oslo 2025
YouTube video by NDC Conferences
youtu.be
Reposted by Excalibur.js
Reposted by Excalibur.js
mookie4242.bsky.social
Fooled around and made a ExcaliburJS level design tool that uses Excel or Google Sheets to design the level, parses it, and automagically creates your tilemap and entities for you in Excalibur!!!!

#gamedev #indiedev
@excaliburjs.com
Reposted by Excalibur.js
jolexxa.bsky.social
stylized night sky shader i've been poking at...might be cooking up an actual game project who knows 🙈🫣 #godot #gamedev #indiedev