├── pkgs
├── matter
│ ├── README.md
│ ├── examples
│ │ ├── index.html
│ │ ├── terrain.js
│ │ ├── basic.js
│ │ ├── drag.js
│ │ └── bird.js
│ ├── build.js
│ └── package.json
└── create
│ ├── package.json
│ └── README.md
├── src-tauri
├── build.rs
├── icons
│ ├── 32x32.png
│ ├── icon.icns
│ ├── icon.ico
│ ├── icon.png
│ ├── 128x128.png
│ ├── 128x128@2x.png
│ ├── StoreLogo.png
│ ├── Square30x30Logo.png
│ ├── Square44x44Logo.png
│ ├── Square71x71Logo.png
│ ├── Square89x89Logo.png
│ ├── Square107x107Logo.png
│ ├── Square142x142Logo.png
│ ├── Square150x150Logo.png
│ ├── Square284x284Logo.png
│ └── Square310x310Logo.png
├── .gitignore
├── src
│ └── main.rs
├── Cargo.toml
└── tauri.conf.json
├── kaboom.png
├── scripts
├── dev.js
├── build.js
├── test.js
└── autoinput.js
├── sprites
├── k.png
├── bag.png
├── bean.png
├── bobo.png
├── boom.png
├── coin.png
├── dino.png
├── door.png
├── egg.png
├── gun.png
├── ka.png
├── key.png
├── mark.png
├── meat.png
├── moon.png
├── note.png
├── sun.png
├── apple.png
├── btfly.png
├── cloud.png
├── ghosty.png
├── grape.png
├── grass.png
├── heart.png
├── jumpy.png
├── kaboom.png
├── portal.png
├── spike.png
├── src
│ ├── k.ase
│ ├── apple.ase
│ ├── bag.ase
│ ├── bean.ase
│ ├── bobo.ase
│ ├── btfly.ase
│ ├── chill.ase
│ ├── cloud.ase
│ ├── coin.ase
│ ├── dino.ase
│ ├── door.ase
│ ├── egg.ase
│ ├── font.ase
│ ├── grape.ase
│ ├── grass.ase
│ ├── gun.ase
│ ├── heart.ase
│ ├── jumpy.ase
│ ├── key.ase
│ ├── mark.ase
│ ├── meat.ase
│ ├── moon.ase
│ ├── note.ase
│ ├── spike.ase
│ ├── steel.ase
│ ├── sun.ase
│ ├── sword.ase
│ ├── cursor.ase
│ ├── ghosty.ase
│ ├── kaboom.ase
│ ├── portal.ase
│ ├── kaboomjs.ase
│ ├── lightening.ase
│ ├── mushroom.ase
│ ├── pineapple.ase
│ ├── watermelon.ase
│ └── gigagantrum.ase
├── steel.png
├── sword.png
├── egg_crack.png
├── mushroom.png
├── pineapple.png
├── gigagantrum.png
├── lightening.png
├── watermelon.png
├── cursor_default.png
└── cursor_pointer.png
├── blog
├── 2000
│ ├── gfx.gif
│ ├── atlas.png
│ ├── dungeon.png
│ ├── fonts.png
│ └── invbean.png
├── 2000.1
│ ├── debug.png
│ └── transform.gif
├── banners
│ ├── 2000.png
│ ├── 3000.png
│ ├── 2000.1.png
│ ├── 3000-perf.png
│ ├── burpjam.png
│ ├── markjam-3.png
│ ├── markjam-4-winners.png
│ └── markjam-5-winners.png
├── burp-jam
│ └── burpman.png
├── markjam-4-winners
│ ├── scary.png
│ ├── image_1.gif
│ └── image_2.png
├── markjam-5-winners
│ ├── snaked.gif
│ ├── trophies.png
│ ├── marks-food-place.gif
│ └── marks-arcade-pacfruit.gif
├── 3000.2.md
├── burp-jam.md
├── markjam-5-winners.md
├── markjam-4-winners.md
├── markjam-3.md
└── 3000-perf.md
├── doc
├── intro
│ ├── bean.png
│ ├── game.png
│ ├── hit.gif
│ ├── land.png
│ ├── tree.png
│ ├── comps.png
│ ├── empty.png
│ ├── inspect.png
│ ├── kaboom.png
│ ├── assemble.png
│ └── humanbean.png
├── setup
│ └── replit.png
├── publishing
│ ├── itchio-1.png
│ ├── itchio-2.png
│ └── newgrounds-1.png
├── sections
│ ├── Assets.md
│ ├── Game Obj.md
│ ├── Debug.md
│ ├── Events.md
│ ├── Draw.md
│ └── Components.md
├── dev.md
├── publishing.md
├── comp.md
├── tips.md
└── setup.md
├── src
├── assets
│ ├── ka.png
│ ├── bean.png
│ ├── boom.png
│ ├── burp.mp3
│ └── index.d.ts
├── texPacker.ts
├── gamepad.json
├── easings.ts
└── assets.ts
├── examples
├── fonts
│ ├── 4x4.png
│ ├── zpix.ttf
│ ├── 04b03.ttf
│ ├── apl386.ttf
│ ├── cga_8x8.png
│ ├── 04b03_6x8.png
│ ├── sink_6x8.png
│ ├── Romantique.ttf
│ ├── happy_28x36.png
│ ├── proggy_7x13.png
│ ├── unscii_8x8.png
│ └── FlowerSketches.ttf
├── sounds
│ ├── bug.mp3
│ ├── hit.mp3
│ ├── off.mp3
│ ├── bell.mp3
│ ├── blip.mp3
│ ├── burp.mp3
│ ├── danger.mp3
│ ├── dune.mp3
│ ├── error.mp3
│ ├── mystic.mp3
│ ├── notice.mp3
│ ├── portal.mp3
│ ├── robot.mp3
│ ├── score.mp3
│ ├── shoot.mp3
│ ├── signal.mp3
│ ├── spring.mp3
│ ├── weak.mp3
│ ├── wooosh.mp3
│ ├── computer.mp3
│ ├── explode.mp3
│ ├── powerup.mp3
│ ├── kaboom2000.mp3
│ └── OtherworldlyFoe.mp3
├── sprites
│ ├── YOSHI.png
│ ├── dino.png
│ ├── you.png
│ ├── 9slice.png
│ ├── dungeon.png
│ ├── spritemerge_chest.png
│ ├── spritemerge_corpus.png
│ ├── you.json
│ └── dungeon.json
├── kaboom.js
├── shaders
│ ├── invert.frag
│ ├── pixelate.frag
│ ├── light.frag
│ ├── crt.frag
│ └── vhs.frag
├── burp.js
├── timer.js
├── examples.json
├── layer.js
├── size.js
├── bench.js
├── slice9.js
├── children.js
├── fadeIn.js
├── multiboom.js
├── largeTexture.js
├── particle.js
├── shader.js
├── fall.js
├── out.js
├── multigamepad.js
├── gamepad.js
├── hover.js
├── movement.js
├── button.js
├── polygon.js
├── pong.js
├── tween.js
├── add.js
├── dialog.js
├── gravity.js
├── flamebar.js
├── egg.js
├── level.js
├── confetti.js
├── audio.js
├── camera.js
├── loader.js
├── drag.js
├── ai.js
├── runner.js
├── component.js
├── sprite.js
├── postEffect.js
├── eatlove.js
├── collision.js
├── flappy.js
├── draw.js
├── text.js
├── scenes.js
├── overlap.js
├── maze.js
├── rpg.js
├── doublejump.js
└── pauseMenu.js
├── .gitignore
├── .github
├── workflows
│ └── test.yml
└── ISSUE_TEMPLATE
│ └── config.yml
├── tsconfig.json
├── LICENSE
├── CONTRIBUTING.md
├── .eslintrc.json
└── package.json
/pkgs/matter/README.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src-tauri/build.rs:
--------------------------------------------------------------------------------
1 | fn main() {
2 | tauri_build::build()
3 | }
4 |
--------------------------------------------------------------------------------
/kaboom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/kaboom.png
--------------------------------------------------------------------------------
/scripts/dev.js:
--------------------------------------------------------------------------------
1 | import { dev } from "./lib.js"
2 |
3 | await dev()
4 |
--------------------------------------------------------------------------------
/sprites/k.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/k.png
--------------------------------------------------------------------------------
/sprites/bag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/bag.png
--------------------------------------------------------------------------------
/sprites/bean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/bean.png
--------------------------------------------------------------------------------
/sprites/bobo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/bobo.png
--------------------------------------------------------------------------------
/sprites/boom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/boom.png
--------------------------------------------------------------------------------
/sprites/coin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/coin.png
--------------------------------------------------------------------------------
/sprites/dino.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/dino.png
--------------------------------------------------------------------------------
/sprites/door.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/door.png
--------------------------------------------------------------------------------
/sprites/egg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/egg.png
--------------------------------------------------------------------------------
/sprites/gun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/gun.png
--------------------------------------------------------------------------------
/sprites/ka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/ka.png
--------------------------------------------------------------------------------
/sprites/key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/key.png
--------------------------------------------------------------------------------
/sprites/mark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/mark.png
--------------------------------------------------------------------------------
/sprites/meat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/meat.png
--------------------------------------------------------------------------------
/sprites/moon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/moon.png
--------------------------------------------------------------------------------
/sprites/note.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/note.png
--------------------------------------------------------------------------------
/sprites/sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/sun.png
--------------------------------------------------------------------------------
/blog/2000/gfx.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000/gfx.gif
--------------------------------------------------------------------------------
/doc/intro/bean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/bean.png
--------------------------------------------------------------------------------
/doc/intro/game.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/game.png
--------------------------------------------------------------------------------
/doc/intro/hit.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/hit.gif
--------------------------------------------------------------------------------
/doc/intro/land.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/land.png
--------------------------------------------------------------------------------
/doc/intro/tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/tree.png
--------------------------------------------------------------------------------
/sprites/apple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/apple.png
--------------------------------------------------------------------------------
/sprites/btfly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/btfly.png
--------------------------------------------------------------------------------
/sprites/cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/cloud.png
--------------------------------------------------------------------------------
/sprites/ghosty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/ghosty.png
--------------------------------------------------------------------------------
/sprites/grape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/grape.png
--------------------------------------------------------------------------------
/sprites/grass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/grass.png
--------------------------------------------------------------------------------
/sprites/heart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/heart.png
--------------------------------------------------------------------------------
/sprites/jumpy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/jumpy.png
--------------------------------------------------------------------------------
/sprites/kaboom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/kaboom.png
--------------------------------------------------------------------------------
/sprites/portal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/portal.png
--------------------------------------------------------------------------------
/sprites/spike.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/spike.png
--------------------------------------------------------------------------------
/sprites/src/k.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/k.ase
--------------------------------------------------------------------------------
/sprites/steel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/steel.png
--------------------------------------------------------------------------------
/sprites/sword.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/sword.png
--------------------------------------------------------------------------------
/src/assets/ka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src/assets/ka.png
--------------------------------------------------------------------------------
/blog/2000.1/debug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000.1/debug.png
--------------------------------------------------------------------------------
/blog/2000/atlas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000/atlas.png
--------------------------------------------------------------------------------
/blog/2000/dungeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000/dungeon.png
--------------------------------------------------------------------------------
/blog/2000/fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000/fonts.png
--------------------------------------------------------------------------------
/blog/2000/invbean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000/invbean.png
--------------------------------------------------------------------------------
/blog/banners/2000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/2000.png
--------------------------------------------------------------------------------
/blog/banners/3000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/3000.png
--------------------------------------------------------------------------------
/doc/intro/comps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/comps.png
--------------------------------------------------------------------------------
/doc/intro/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/empty.png
--------------------------------------------------------------------------------
/doc/intro/inspect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/inspect.png
--------------------------------------------------------------------------------
/doc/intro/kaboom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/kaboom.png
--------------------------------------------------------------------------------
/doc/setup/replit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/setup/replit.png
--------------------------------------------------------------------------------
/sprites/egg_crack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/egg_crack.png
--------------------------------------------------------------------------------
/sprites/mushroom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/mushroom.png
--------------------------------------------------------------------------------
/sprites/pineapple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/pineapple.png
--------------------------------------------------------------------------------
/sprites/src/apple.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/apple.ase
--------------------------------------------------------------------------------
/sprites/src/bag.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/bag.ase
--------------------------------------------------------------------------------
/sprites/src/bean.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/bean.ase
--------------------------------------------------------------------------------
/sprites/src/bobo.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/bobo.ase
--------------------------------------------------------------------------------
/sprites/src/btfly.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/btfly.ase
--------------------------------------------------------------------------------
/sprites/src/chill.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/chill.ase
--------------------------------------------------------------------------------
/sprites/src/cloud.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/cloud.ase
--------------------------------------------------------------------------------
/sprites/src/coin.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/coin.ase
--------------------------------------------------------------------------------
/sprites/src/dino.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/dino.ase
--------------------------------------------------------------------------------
/sprites/src/door.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/door.ase
--------------------------------------------------------------------------------
/sprites/src/egg.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/egg.ase
--------------------------------------------------------------------------------
/sprites/src/font.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/font.ase
--------------------------------------------------------------------------------
/sprites/src/grape.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/grape.ase
--------------------------------------------------------------------------------
/sprites/src/grass.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/grass.ase
--------------------------------------------------------------------------------
/sprites/src/gun.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/gun.ase
--------------------------------------------------------------------------------
/sprites/src/heart.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/heart.ase
--------------------------------------------------------------------------------
/sprites/src/jumpy.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/jumpy.ase
--------------------------------------------------------------------------------
/sprites/src/key.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/key.ase
--------------------------------------------------------------------------------
/sprites/src/mark.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/mark.ase
--------------------------------------------------------------------------------
/sprites/src/meat.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/meat.ase
--------------------------------------------------------------------------------
/sprites/src/moon.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/moon.ase
--------------------------------------------------------------------------------
/sprites/src/note.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/note.ase
--------------------------------------------------------------------------------
/sprites/src/spike.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/spike.ase
--------------------------------------------------------------------------------
/sprites/src/steel.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/steel.ase
--------------------------------------------------------------------------------
/sprites/src/sun.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/sun.ase
--------------------------------------------------------------------------------
/sprites/src/sword.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/sword.ase
--------------------------------------------------------------------------------
/src/assets/bean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src/assets/bean.png
--------------------------------------------------------------------------------
/src/assets/boom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src/assets/boom.png
--------------------------------------------------------------------------------
/src/assets/burp.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src/assets/burp.mp3
--------------------------------------------------------------------------------
/blog/banners/2000.1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/2000.1.png
--------------------------------------------------------------------------------
/doc/intro/assemble.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/assemble.png
--------------------------------------------------------------------------------
/doc/intro/humanbean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/intro/humanbean.png
--------------------------------------------------------------------------------
/examples/fonts/4x4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/4x4.png
--------------------------------------------------------------------------------
/examples/fonts/zpix.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/zpix.ttf
--------------------------------------------------------------------------------
/examples/sounds/bug.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/bug.mp3
--------------------------------------------------------------------------------
/examples/sounds/hit.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/hit.mp3
--------------------------------------------------------------------------------
/examples/sounds/off.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/off.mp3
--------------------------------------------------------------------------------
/sprites/gigagantrum.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/gigagantrum.png
--------------------------------------------------------------------------------
/sprites/lightening.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/lightening.png
--------------------------------------------------------------------------------
/sprites/src/cursor.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/cursor.ase
--------------------------------------------------------------------------------
/sprites/src/ghosty.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/ghosty.ase
--------------------------------------------------------------------------------
/sprites/src/kaboom.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/kaboom.ase
--------------------------------------------------------------------------------
/sprites/src/portal.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/portal.ase
--------------------------------------------------------------------------------
/sprites/watermelon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/watermelon.png
--------------------------------------------------------------------------------
/blog/2000.1/transform.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/2000.1/transform.gif
--------------------------------------------------------------------------------
/blog/banners/3000-perf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/3000-perf.png
--------------------------------------------------------------------------------
/blog/banners/burpjam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/burpjam.png
--------------------------------------------------------------------------------
/blog/banners/markjam-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/markjam-3.png
--------------------------------------------------------------------------------
/blog/burp-jam/burpman.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/burp-jam/burpman.png
--------------------------------------------------------------------------------
/examples/fonts/04b03.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/04b03.ttf
--------------------------------------------------------------------------------
/examples/fonts/apl386.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/apl386.ttf
--------------------------------------------------------------------------------
/examples/fonts/cga_8x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/cga_8x8.png
--------------------------------------------------------------------------------
/examples/sounds/bell.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/bell.mp3
--------------------------------------------------------------------------------
/examples/sounds/blip.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/blip.mp3
--------------------------------------------------------------------------------
/examples/sounds/burp.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/burp.mp3
--------------------------------------------------------------------------------
/examples/sounds/danger.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/danger.mp3
--------------------------------------------------------------------------------
/examples/sounds/dune.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/dune.mp3
--------------------------------------------------------------------------------
/examples/sounds/error.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/error.mp3
--------------------------------------------------------------------------------
/examples/sounds/mystic.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/mystic.mp3
--------------------------------------------------------------------------------
/examples/sounds/notice.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/notice.mp3
--------------------------------------------------------------------------------
/examples/sounds/portal.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/portal.mp3
--------------------------------------------------------------------------------
/examples/sounds/robot.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/robot.mp3
--------------------------------------------------------------------------------
/examples/sounds/score.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/score.mp3
--------------------------------------------------------------------------------
/examples/sounds/shoot.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/shoot.mp3
--------------------------------------------------------------------------------
/examples/sounds/signal.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/signal.mp3
--------------------------------------------------------------------------------
/examples/sounds/spring.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/spring.mp3
--------------------------------------------------------------------------------
/examples/sounds/weak.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/weak.mp3
--------------------------------------------------------------------------------
/examples/sounds/wooosh.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/wooosh.mp3
--------------------------------------------------------------------------------
/examples/sprites/YOSHI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/YOSHI.png
--------------------------------------------------------------------------------
/examples/sprites/dino.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/dino.png
--------------------------------------------------------------------------------
/examples/sprites/you.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/you.png
--------------------------------------------------------------------------------
/scripts/build.js:
--------------------------------------------------------------------------------
1 | import { build, genDTS } from "./lib.js"
2 |
3 | await build()
4 | await genDTS()
5 |
--------------------------------------------------------------------------------
/sprites/cursor_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/cursor_default.png
--------------------------------------------------------------------------------
/sprites/cursor_pointer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/cursor_pointer.png
--------------------------------------------------------------------------------
/sprites/src/kaboomjs.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/kaboomjs.ase
--------------------------------------------------------------------------------
/sprites/src/lightening.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/lightening.ase
--------------------------------------------------------------------------------
/sprites/src/mushroom.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/mushroom.ase
--------------------------------------------------------------------------------
/sprites/src/pineapple.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/pineapple.ase
--------------------------------------------------------------------------------
/sprites/src/watermelon.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/watermelon.ase
--------------------------------------------------------------------------------
/src-tauri/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/32x32.png
--------------------------------------------------------------------------------
/src-tauri/icons/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/icon.icns
--------------------------------------------------------------------------------
/src-tauri/icons/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/icon.ico
--------------------------------------------------------------------------------
/src-tauri/icons/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/icon.png
--------------------------------------------------------------------------------
/doc/publishing/itchio-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/publishing/itchio-1.png
--------------------------------------------------------------------------------
/doc/publishing/itchio-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/publishing/itchio-2.png
--------------------------------------------------------------------------------
/examples/fonts/04b03_6x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/04b03_6x8.png
--------------------------------------------------------------------------------
/examples/fonts/sink_6x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/sink_6x8.png
--------------------------------------------------------------------------------
/examples/sounds/computer.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/computer.mp3
--------------------------------------------------------------------------------
/examples/sounds/explode.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/explode.mp3
--------------------------------------------------------------------------------
/examples/sounds/powerup.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/powerup.mp3
--------------------------------------------------------------------------------
/examples/sprites/9slice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/9slice.png
--------------------------------------------------------------------------------
/examples/sprites/dungeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/dungeon.png
--------------------------------------------------------------------------------
/sprites/src/gigagantrum.ase:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/sprites/src/gigagantrum.ase
--------------------------------------------------------------------------------
/src-tauri/.gitignore:
--------------------------------------------------------------------------------
1 | # Generated by Cargo
2 | # will have compiled files and executables
3 | /target/
4 |
--------------------------------------------------------------------------------
/src-tauri/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/128x128.png
--------------------------------------------------------------------------------
/doc/publishing/newgrounds-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/doc/publishing/newgrounds-1.png
--------------------------------------------------------------------------------
/examples/fonts/Romantique.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/Romantique.ttf
--------------------------------------------------------------------------------
/examples/fonts/happy_28x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/happy_28x36.png
--------------------------------------------------------------------------------
/examples/fonts/proggy_7x13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/proggy_7x13.png
--------------------------------------------------------------------------------
/examples/fonts/unscii_8x8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/unscii_8x8.png
--------------------------------------------------------------------------------
/examples/sounds/kaboom2000.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/kaboom2000.mp3
--------------------------------------------------------------------------------
/src-tauri/icons/128x128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/128x128@2x.png
--------------------------------------------------------------------------------
/src-tauri/icons/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/StoreLogo.png
--------------------------------------------------------------------------------
/blog/markjam-4-winners/scary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-4-winners/scary.png
--------------------------------------------------------------------------------
/blog/markjam-5-winners/snaked.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-5-winners/snaked.gif
--------------------------------------------------------------------------------
/examples/fonts/FlowerSketches.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/fonts/FlowerSketches.ttf
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | dist/
3 | node_modules/
4 | .idea/
5 | desktop/
6 | .env
7 | .vscode
8 | src-tauri/target/
9 |
--------------------------------------------------------------------------------
/blog/banners/markjam-4-winners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/markjam-4-winners.png
--------------------------------------------------------------------------------
/blog/banners/markjam-5-winners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/banners/markjam-5-winners.png
--------------------------------------------------------------------------------
/blog/markjam-4-winners/image_1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-4-winners/image_1.gif
--------------------------------------------------------------------------------
/blog/markjam-4-winners/image_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-4-winners/image_2.png
--------------------------------------------------------------------------------
/blog/markjam-5-winners/trophies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-5-winners/trophies.png
--------------------------------------------------------------------------------
/examples/sounds/OtherworldlyFoe.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sounds/OtherworldlyFoe.mp3
--------------------------------------------------------------------------------
/src-tauri/icons/Square30x30Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square30x30Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square44x44Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square44x44Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square71x71Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square71x71Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square89x89Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square89x89Logo.png
--------------------------------------------------------------------------------
/examples/sprites/spritemerge_chest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/spritemerge_chest.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square107x107Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square107x107Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square142x142Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square142x142Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square150x150Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square150x150Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square284x284Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square284x284Logo.png
--------------------------------------------------------------------------------
/src-tauri/icons/Square310x310Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/src-tauri/icons/Square310x310Logo.png
--------------------------------------------------------------------------------
/examples/sprites/spritemerge_corpus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/examples/sprites/spritemerge_corpus.png
--------------------------------------------------------------------------------
/blog/markjam-5-winners/marks-food-place.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-5-winners/marks-food-place.gif
--------------------------------------------------------------------------------
/blog/markjam-5-winners/marks-arcade-pacfruit.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/replit/kaboom/master/blog/markjam-5-winners/marks-arcade-pacfruit.gif
--------------------------------------------------------------------------------
/examples/kaboom.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 | addKaboom(center())
3 | onKeyPress(() => addKaboom(mousePos()))
4 | onMouseMove(() => addKaboom(mousePos()))
5 |
--------------------------------------------------------------------------------
/doc/sections/Assets.md:
--------------------------------------------------------------------------------
1 | Every function with the `load` prefix is an async function that loads something into the asset manager, and should return a promise that resolves upon load complete.
2 |
--------------------------------------------------------------------------------
/src/assets/index.d.ts:
--------------------------------------------------------------------------------
1 | declare module "*.mp3" {
2 | const value: Uint8Array
3 | export default value
4 | }
5 |
6 | declare module "*.png" {
7 | const value: string
8 | export default value
9 | }
10 |
--------------------------------------------------------------------------------
/examples/shaders/invert.frag:
--------------------------------------------------------------------------------
1 | uniform float u_invert;
2 |
3 | vec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {
4 | vec4 c = def_frag();
5 | return mix(c, vec4(1.0 - c.r, 1.0 - c.g, 1.0 - c.b, c.a), u_invert);
6 | }
7 |
--------------------------------------------------------------------------------
/examples/burp.js:
--------------------------------------------------------------------------------
1 | // Start the game in burp mode
2 | kaboom({
3 | burp: true,
4 | })
5 |
6 | // "b" triggers a burp in burp mode
7 | add([
8 | text("press b"),
9 | ])
10 |
11 | // burp() on click / tap for our friends on mobile
12 | onClick(burp)
13 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: test
2 |
3 | on: [ push ]
4 |
5 | jobs:
6 | test:
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v2
10 | - run: npm install
11 | - run: npm run check
12 | - run: npm run lint
13 | - run: npm run test
14 |
--------------------------------------------------------------------------------
/src-tauri/src/main.rs:
--------------------------------------------------------------------------------
1 | #![cfg_attr(
2 | all(not(debug_assertions), target_os = "windows"),
3 | windows_subsystem = "windows"
4 | )]
5 |
6 | fn main() {
7 | tauri::Builder::default()
8 | .run(tauri::generate_context!())
9 | .expect("error while running tauri application");
10 | }
11 |
--------------------------------------------------------------------------------
/pkgs/matter/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/doc/sections/Game Obj.md:
--------------------------------------------------------------------------------
1 | Game Object is the basic unit of entity in a kaboom world. Everything is a game object, the player, a butterfly, a tree, or even a piece of text.
2 |
3 | This section contains functions to add, remove, and access game objects. To actually make them do stuff, check out the [Components](#Components) section.
4 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "noEmit": true,
4 | "allowJs": true,
5 | "esModuleInterop": true,
6 | "target": "esnext",
7 | "moduleResolution": "node",
8 | "noImplicitThis": true,
9 | "resolveJsonModule": true
10 | },
11 | "include": [
12 | "src/**/*",
13 | "scripts/**/*"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | contact_links:
2 | - name: Help
3 | url: https://github.com/replit/kaboom/discussions/new?category=q-a
4 | about: How to use certain Kaboom feature, or how to achieve something with Kaboom
5 | - name: Suggestion
6 | url: https://github.com/replit/kaboom/discussions/new?category=ideas
7 | about: Features you'd like Kaboom to have
8 |
--------------------------------------------------------------------------------
/examples/timer.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 |
3 | loadSprite("bean", "/sprites/bean.png")
4 |
5 | // Execute something after every 0.5 seconds.
6 | loop(0.5, () => {
7 |
8 | const bean = add([
9 | sprite("bean"),
10 | pos(rand(vec2(0), vec2(width(), height()))),
11 | ])
12 |
13 | // Execute something after 3 seconds.
14 | wait(3, () => {
15 | destroy(bean)
16 | })
17 |
18 | })
19 |
--------------------------------------------------------------------------------
/pkgs/create/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "create-kaboom",
3 | "description": "Start a kaboom project in no time",
4 | "version": "2.6.0",
5 | "license": "MIT",
6 | "homepage": "https://kaboomjs.com/",
7 | "repository": "github:replit/kaboom",
8 | "author": "tga ",
9 | "type": "module",
10 | "bin": "create.js",
11 | "files": [
12 | "create.js",
13 | "README.md"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/examples/examples.json:
--------------------------------------------------------------------------------
1 | {
2 | "order": [
3 | "add",
4 | "movement",
5 | "collision",
6 | "gravity",
7 | "sprite",
8 | "fadeIn",
9 | "text",
10 | "audio",
11 | "level",
12 | "scenes",
13 | "timer",
14 | "component",
15 | "layer",
16 | "camera",
17 | "ai",
18 | "button",
19 | "dialog",
20 | "draw",
21 | "confetti",
22 | "particle",
23 | "shader",
24 | "burp"
25 | ],
26 | "hidden": [
27 | "fall",
28 | "bench"
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/examples/layer.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 |
3 | loadSprite("bean", "/sprites/bean.png")
4 |
5 | // Create a parent node that won't be affected by camera (fixed) and will be drawn on top (z of 100)
6 | const ui = add([
7 | fixed(),
8 | z(100),
9 | ])
10 |
11 | // This will be on top, because the parent node has z(100)
12 | ui.add([
13 | sprite("bean"),
14 | scale(5),
15 | color(0, 0, 255),
16 | ])
17 |
18 | add([
19 | sprite("bean"),
20 | pos(100, 100),
21 | scale(5),
22 | ])
23 |
--------------------------------------------------------------------------------
/doc/sections/Debug.md:
--------------------------------------------------------------------------------
1 | By default kaboom starts in debug mode, which enables key bindings that calls out various debug utilities:
2 |
3 | - `f1` to toggle inspect mode
4 | - `f2` to clear debug console
5 | - `f7` to slow down
6 | - `f8` to pause / resume
7 | - `f9` to speed up
8 | - `f10` to skip frame
9 |
10 | Some of these can be also controlled with stuff under the `debug` object.
11 |
12 | If you want to turn debug mode off when releasing you game, set `debug` option to false in `kaboom()`
13 |
--------------------------------------------------------------------------------
/examples/shaders/pixelate.frag:
--------------------------------------------------------------------------------
1 | uniform float u_size;
2 | uniform vec2 u_resolution;
3 |
4 | // TODO: this is causing some extra pixels to appear at screen edge
5 | vec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {
6 | if (u_size <= 0.0) return def_frag();
7 | vec2 nsize = vec2(u_size / u_resolution.x, u_size / u_resolution.y);
8 | float x = floor(uv.x / nsize.x + 0.5);
9 | float y = floor(uv.y / nsize.y + 0.5);
10 | vec4 c = texture2D(tex, vec2(x, y) * nsize);
11 | return c * color;
12 | }
13 |
--------------------------------------------------------------------------------
/examples/shaders/light.frag:
--------------------------------------------------------------------------------
1 | uniform float u_radius;
2 | uniform float u_blur;
3 | uniform vec2 u_resolution;
4 | uniform vec2 u_mouse;
5 |
6 | vec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {
7 | if (u_radius <= 0.0) return def_frag();
8 | vec2 center = u_mouse / u_resolution * vec2(1, -1) + vec2(0, 1);
9 | float dist = distance(uv * u_resolution, center * u_resolution);
10 | float alpha = smoothstep(max((dist - u_radius) / u_blur, 0.0), 0.0, 1.0);
11 | return mix(vec4(0, 0, 0, 1), def_frag(), 1.0 - alpha);
12 | }
13 |
--------------------------------------------------------------------------------
/examples/size.js:
--------------------------------------------------------------------------------
1 | kaboom({
2 | // without specifying "width" and "height", kaboom will size to the container (document.body by default)
3 | width: 200,
4 | height: 100,
5 | // "stretch" stretches the defined width and height to fullscreen
6 | // stretch: true,
7 | // "letterbox" makes stretching keeps aspect ratio (leaves black bars on empty spaces), have no effect without "stretch"
8 | letterbox: true,
9 | })
10 |
11 | loadBean()
12 |
13 | add([
14 | sprite("bean"),
15 | ])
16 |
17 | onClick(() => addKaboom(mousePos()))
18 |
--------------------------------------------------------------------------------
/examples/bench.js:
--------------------------------------------------------------------------------
1 | // bench marking sprite rendering performance
2 |
3 | kaboom()
4 |
5 | loadSprite("bean", "sprites/bean.png")
6 | loadSprite("bag", "sprites/bag.png")
7 |
8 | for (let i = 0; i < 5000; i++) {
9 | add([
10 | sprite(i % 2 === 0 ? "bean" : "bag"),
11 | pos(rand(0, width()), rand(0, height())),
12 | anchor("center"),
13 | ])
14 | }
15 |
16 | onDraw(() => {
17 | drawText({
18 | text: debug.fps(),
19 | pos: vec2(width() / 2, height() / 2),
20 | anchor: "center",
21 | color: rgb(255, 127, 255),
22 | })
23 | })
24 |
--------------------------------------------------------------------------------
/examples/slice9.js:
--------------------------------------------------------------------------------
1 | // 9 slice sprite scaling
2 |
3 | kaboom()
4 |
5 | // Load a sprite that's made for 9 slice scaling
6 | loadSprite("9slice", "/examples/sprites/9slice.png", {
7 | // Define the slice by the margins of 4 sides
8 | slice9: {
9 | left: 32,
10 | right: 32,
11 | top: 32,
12 | bottom: 32,
13 | },
14 | })
15 |
16 | const g = add([
17 | sprite("9slice"),
18 | ])
19 |
20 | onMouseMove(() => {
21 | const mpos = mousePos()
22 | // Scaling the image will keep the aspect ratio of the sliced frames
23 | g.width = mpos.x
24 | g.height = mpos.y
25 | })
26 |
--------------------------------------------------------------------------------
/examples/children.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 |
3 | loadSprite("bean", "/sprites/bean.png")
4 | loadSprite("ghosty", "/sprites/ghosty.png")
5 |
6 | const nucleus = add([
7 | sprite("ghosty"),
8 | pos(center()),
9 | anchor("center"),
10 | ])
11 |
12 | // Add children
13 | for (let i = 12; i < 24; i++) {
14 |
15 | nucleus.add([
16 | sprite("bean"),
17 | rotate(0),
18 | anchor(vec2(i).scale(0.25)),
19 | {
20 | speed: i * 8,
21 | },
22 | ])
23 |
24 | }
25 |
26 | nucleus.onUpdate(() => {
27 |
28 | nucleus.pos = mousePos()
29 |
30 | // update children
31 | nucleus.children.forEach((child) => {
32 | child.angle += child.speed * dt()
33 | })
34 |
35 | })
36 |
--------------------------------------------------------------------------------
/examples/shaders/crt.frag:
--------------------------------------------------------------------------------
1 | uniform float u_flatness;
2 | uniform float u_scanline_height;
3 | uniform float u_screen_height;
4 |
5 | vec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {
6 | vec2 center = vec2(0.5, 0.5);
7 | vec2 off_center = uv - center;
8 | off_center *= 1.0 + pow(abs(off_center.yx), vec2(u_flatness));
9 | vec2 uv2 = center + off_center;
10 | if (uv2.x > 1.0 || uv2.x < 0.0 || uv2.y > 1.0 || uv2.y < 0.0) {
11 | return vec4(0.0, 0.0, 0.0, 1.0);
12 | } else {
13 | vec4 c = vec4(texture2D(tex, uv2).rgb, 1.0);
14 | float fv = fract(uv2.y * 120.0);
15 | fv = min(1.0, 0.8 + 0.5 * min(fv, 1.0 - fv));
16 | c.rgb *= fv;
17 | return c;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/fadeIn.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 | loadBean()
3 |
4 | // spawn a bean that takes a second to fade in
5 | const bean = add([
6 | sprite("bean"),
7 | pos(120, 80),
8 | opacity(), // opacity() component gives it opacity which is required for fadeIn
9 | fadeIn(), // fadeIn() component makes it fade in
10 | ])
11 |
12 | // spawn another bean that takes 5 seconds to fade in halfway
13 | // SPOOKY!
14 | let spookyBean = add([
15 | sprite("bean"),
16 | pos(240, 80),
17 | opacity(0.5), // opacity() component gives it opacity which is required for fadeIn (set to 0.5 so it will be half transparent)
18 | fadeIn(5), // fadeIn() component makes it fade in (set to 5 so that it takes 5 seconds to fade in)
19 | ])
--------------------------------------------------------------------------------
/examples/multiboom.js:
--------------------------------------------------------------------------------
1 | // multiple kaboom contexts in one page
2 |
3 | const backgrounds = [
4 | [255, 0, 255],
5 | [0, 0, 255],
6 | ]
7 |
8 | for (let i = 0; i < 2; i++) {
9 |
10 | const k = kaboom({
11 | background: backgrounds[i],
12 | global: false,
13 | width: 320,
14 | height: 320,
15 | })
16 |
17 | k.loadBean()
18 |
19 | // custom spin component
20 | function spin() {
21 | return {
22 | id: "spin",
23 | update() {
24 | this.scale = Math.sin(k.time() + i) * 9
25 | this.angle = k.time() * 60
26 | },
27 | }
28 | }
29 |
30 | k.add([
31 | k.sprite("bean"),
32 | k.pos(k.width() / 2, k.height() / 2),
33 | k.scale(6),
34 | k.rotate(0),
35 | spin(),
36 | k.anchor("center"),
37 | ])
38 |
39 | k.add([
40 | k.text(`#${i}`),
41 | ])
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/doc/sections/Events.md:
--------------------------------------------------------------------------------
1 | Kaboom uses events extensively for a flat and declarative code style.
2 |
3 | For example, it's most common for a game to have something run every frame which can be achieved by adding an `onUpdate()` event
4 |
5 | ```js
6 | // Make something always move to the right
7 | onUpdate(() => {
8 | banana.move(320, 0)
9 | })
10 | ```
11 |
12 | Events are also used for input handlers.
13 |
14 | ```js
15 | onKeyPress("space", () => {
16 | player.jump()
17 | })
18 | ```
19 |
20 | Every function with the `on` prefix is an event register function that takes a callback function as the last argument, and should return a function that cancels the event listener.
21 |
22 | Note that you should never nest one event handler function inside another or it might cause severe performance punishment.
23 |
--------------------------------------------------------------------------------
/examples/largeTexture.js:
--------------------------------------------------------------------------------
1 | kaboom()
2 |
3 | let cameraPosition = camPos()
4 | let cameraScale = 1
5 |
6 | // Loads a random 2500px image
7 | loadSprite("bigyoshi", "/examples/sprites/YOSHI.png")
8 |
9 | add([
10 | sprite("bigyoshi"),
11 | ])
12 |
13 | // Adds a label
14 | const label = make([
15 | text("Click and drag the mouse, scroll the wheel"),
16 | ])
17 |
18 | add([
19 | rect(label.width, label.height),
20 | color(0, 0, 0),
21 | ])
22 |
23 | add(label)
24 |
25 | // Mouse handling
26 | onUpdate(() => {
27 | if(isMouseDown("left") && isMouseMoved()) {
28 | cameraPosition = cameraPosition.sub(mouseDeltaPos().scale(1 / cameraScale))
29 | camPos(cameraPosition)
30 | }
31 | })
32 |
33 | onScroll((delta)=>{
34 | cameraScale = cameraScale * (1 - 0.1 * Math.sign(delta.y))
35 | camScale(cameraScale)
36 | })
37 |
--------------------------------------------------------------------------------
/doc/sections/Draw.md:
--------------------------------------------------------------------------------
1 | Kaboom exposes all of the drawing interfaces it uses in the render components like `sprite()`, and you can use these drawing functions to build your own richer render components.
2 |
3 | Also note that you have to put `drawXXX()` functions inside an `onDraw()` event or the `draw()` hook in component definitions which runs every frame (after the `update` events), or it'll be immediately cleared next frame and won't persist.
4 |
5 | ```js
6 | onDraw(() => {
7 |
8 | drawSprite({
9 | sprite: "froggy",
10 | pos: vec2(120, 160),
11 | angle: 90,
12 | })
13 |
14 | drawLine({
15 | p1: vec2(0),
16 | p2: mousePos(),
17 | width: 4,
18 | color: rgb(0, 0, 255),
19 | })
20 |
21 | })
22 | ```
23 |
24 | There's also the option to use Kaboom purely as a rendering library. Check out the [draw](/play?demo=draw) demo.
25 |
--------------------------------------------------------------------------------
/examples/particle.js:
--------------------------------------------------------------------------------
1 | // Particle spawning
2 |
3 | kaboom()
4 |
5 | const sprites = [
6 | "apple",
7 | "heart",
8 | "coin",
9 | "meat",
10 | "lightening",
11 | ]
12 |
13 | sprites.forEach((spr) => {
14 | loadSprite(spr, `/sprites/${spr}.png`)
15 | })
16 |
17 | setGravity(800)
18 |
19 | // Spawn one particle every 0.1 second
20 | loop(0.1, () => {
21 |
22 | // TODO: they are resolving collision with each other for some reason
23 | // Compose particle properties with components
24 | const item = add([
25 | pos(mousePos()),
26 | sprite(choose(sprites)),
27 | anchor("center"),
28 | scale(rand(0.5, 1)),
29 | area({ collisionIgnore: ["particle"] }),
30 | body(),
31 | lifespan(1, { fade: 0.5 }),
32 | opacity(1),
33 | move(choose([LEFT, RIGHT]), rand(60, 240)),
34 | "particle",
35 | ])
36 |
37 | item.jump(rand(320, 640))
38 |
39 | })
40 |
--------------------------------------------------------------------------------
/blog/3000.2.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Kaboom v3000.2
3 | author: tga
4 | date: 12/31/2023
5 | description: Record mode, pretty texts, new events and more in this new version!
6 | image: 2000.1.png
7 | hidden: true
8 | ---
9 |
10 | # Kaboom v3000.2
11 |
12 | > tga, 12/31/2023
13 |
14 | ## Stream Audio
15 |
16 | Audio files are often the biggest file you load in Kaboom if you have long background music. Previously you can only use `loadSound()` which would loads the entire file before the game starts and blocks the loading screen.
17 |
18 | The new `loadMusic()` will load an audio file without blocking loading
19 |
20 | ```js
21 | loadMusic("background", "/assets/music/background.mp3")
22 | // note that browser requires user input before audio can be played!
23 | play("background")
24 | ```
25 |
26 | ## Canvas
27 |
28 | Kaboom adds the ability to use offscreen canvas!
29 |
30 | ```js
31 | const canvas = canvas()
32 | ```
33 |
--------------------------------------------------------------------------------
/examples/shader.js:
--------------------------------------------------------------------------------
1 | // TODO: shader documentation in doc/
2 |
3 | // Custom shader
4 | kaboom()
5 |
6 | loadSprite("bean", "/sprites/bean.png")
7 |
8 | // Load a shader with custom fragment shader code
9 | // The fragment shader should define a function "frag", which returns a color and receives the vertex position, texture coodinate, vertex color, and texture as arguments
10 | // There's also the def_frag() function which returns the default fragment color
11 | loadShader("invert", null, `
12 | uniform float u_time;
13 |
14 | vec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {
15 | vec4 c = def_frag();
16 | float t = (sin(u_time * 4.0) + 1.0) / 2.0;
17 | return mix(c, vec4(1.0 - c.r, 1.0 - c.g, 1.0 - c.b, c.a), t);
18 | }
19 | `)
20 |
21 | add([
22 | sprite("bean"),
23 | pos(80, 40),
24 | scale(8),
25 | // Use the shader with shader() component and pass uniforms
26 | shader("invert", () => ({
27 | "u_time": time(),
28 | })),
29 | ])
30 |
--------------------------------------------------------------------------------
/src-tauri/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "app"
3 | version = "0.1.0"
4 | description = "A Tauri App"
5 | authors = ["you"]
6 | license = ""
7 | repository = ""
8 | default-run = "app"
9 | edition = "2021"
10 | rust-version = "1.59"
11 |
12 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
13 |
14 | [build-dependencies]
15 | tauri-build = { version = "1.2.1", features = [] }
16 |
17 | [dependencies]
18 | serde_json = "1.0"
19 | serde = { version = "1.0", features = ["derive"] }
20 | tauri = { version = "1.2.5", features = [] }
21 |
22 | [features]
23 | # by default Tauri runs in production mode
24 | # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL
25 | default = [ "custom-protocol" ]
26 | # this feature is used for production builds where `devPath` points to the filesystem
27 | # DO NOT remove this
28 | custom-protocol = [ "tauri/custom-protocol" ]
29 |
--------------------------------------------------------------------------------
/pkgs/matter/examples/terrain.js:
--------------------------------------------------------------------------------
1 | const k = kaboom()
2 | const { marea, mbody } = kmatter(k)
3 |
4 | const me = k.add([
5 | k.pos(60, 48),
6 | k.rect(48, 24),
7 | marea(),
8 | k.rotate(45),
9 | k.anchor("center"),
10 | // mbody(),
11 | ])
12 |
13 | k.add([
14 | k.pos(90, 120),
15 | k.rect(48, 24),
16 | marea(),
17 | k.rotate(45),
18 | k.anchor("center"),
19 | // mbody(),
20 | ])
21 |
22 | k.add([
23 | k.pos(40, 160),
24 | k.rect(240, 24),
25 | marea(),
26 | k.anchor("center"),
27 | // mbody({ isStatic: true }),
28 | ])
29 |
30 | k.onKeyDown("left", () => {
31 | // .move() is provided by pos() component, move by pixels per second
32 | me.move(-320, 0)
33 | })
34 |
35 | k.onKeyDown("right", () => {
36 | me.move(320, 0)
37 | })
38 |
39 | k.onKeyPress("space", () => {
40 | me.applyForce(mousePos(), vec2(0, -0.02))
41 | })
42 |
43 | k.onKeyPress("r", () => {
44 | me.angle = 90
45 | })
46 |
47 | k.debug.inspect = true
48 | k.canvas.focus()
49 |
--------------------------------------------------------------------------------
/blog/burp-jam.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Burp Jam
3 | author: danie & tga
4 | date: 10/10/22
5 | description: The new jam of Kaboom, about burps!
6 | image: burpjam.png
7 | ---
8 |
9 | # Burp Jam
10 | > danie & tga, 10/10/2022
11 |
12 | Kaboom new jam! Burp Jam, a jam where the goal is to upload the best burp sound ever, and we will implement it in `burp()`
13 |
14 | A long time ago we have been thinking about renewing the `burp()` sound of the library, since we want to give it a new look for the next version, so we have decided to create this competition to be able to get amazing burp sounds.
15 |
16 | The jam will take place on Itch.io, users can upload a project which has a downloadable audio file with a burp sound of themselves, a friend, a family member, or even your pet!
17 |
18 | From **10/17/22** to **10/17/22**, yes, only one day!!!
19 |
20 | [Join now!](https://itch.io/jam/burp)
21 |
22 | ## Introducing burp man
23 | Here is burpman.
24 |
25 | **burp**
26 |
27 | 
--------------------------------------------------------------------------------
/pkgs/matter/build.js:
--------------------------------------------------------------------------------
1 | import esbuild from "esbuild"
2 |
3 | const dev = process.env.NODE_ENV === "development"
4 | const srcDir = "src"
5 | const distDir = "dist"
6 |
7 | const fmts = [
8 | {
9 | format: "iife",
10 | ext: "js",
11 | config: {
12 | footer: {
13 | js: "window.kmatter = kmatter.default;",
14 | },
15 | },
16 | },
17 | ...(dev ? [] : [
18 | { format: "cjs", ext: "cjs" },
19 | { format: "esm", ext: "mjs" },
20 | ]),
21 | ]
22 |
23 | fmts.forEach((fmt) => {
24 |
25 | const srcPath = `${srcDir}/kmatter.ts`
26 | const distPath = `${distDir}/kmatter.${fmt.ext}`
27 | const log = () => console.log(`-> ${distPath}`)
28 |
29 | esbuild.build({
30 | bundle: true,
31 | sourcemap: true,
32 | minify: !dev,
33 | keepNames: true,
34 | watch: dev ? { onRebuild: log } : false,
35 | entryPoints: [ srcPath ],
36 | globalName: "kmatter",
37 | format: fmt.format,
38 | outfile: distPath,
39 | ...(fmt.config ?? {}),
40 | }).then(log)
41 |
42 | })
43 |
--------------------------------------------------------------------------------
/examples/fall.js:
--------------------------------------------------------------------------------
1 | // Build levels with addLevel()
2 |
3 | // Start game
4 | kaboom()
5 |
6 | // Load assets
7 | loadSprite("coin", "/sprites/coin.png")
8 | loadSprite("grass", "/sprites/grass.png")
9 |
10 | setGravity(2400)
11 |
12 | addLevel([
13 | // Design the level layout with symbols
14 | " ",
15 | " ",
16 | " ",
17 | " ",
18 | "=======",
19 | ], {
20 | // The size of each grid
21 | tileWidth: 64,
22 | tileHeight: 64,
23 | // The position of the top left block
24 | pos: vec2(100),
25 | // Define what each symbol means (in components)
26 | tiles: {
27 | "=": () => [
28 | sprite("grass"),
29 | area(),
30 | body({ isStatic: true }),
31 | ],
32 | },
33 | })
34 |
35 | loop(0.2, () => {
36 | const coin = add([
37 | pos(rand(100, 400), 0),
38 | sprite("coin"),
39 | area(),
40 | body(),
41 | "coin",
42 | ])
43 | wait(3, () => coin.destroy())
44 | })
45 |
46 | debug.paused = true
47 |
48 | onKeyPressRepeat("space", () => {
49 | debug.stepFrame()
50 | })
51 |
--------------------------------------------------------------------------------
/pkgs/create/README.md:
--------------------------------------------------------------------------------
1 | # create-kaboom
2 |
3 | a script to help you start a kaboom project in no time
4 |
5 | ```
6 | USAGE
7 |
8 | $ create-kaboom [OPTIONS]
9 |
10 | or
11 |
12 | $ npm init kaboom -- [OPTIONS]
13 |
14 | OPTIONS
15 |
16 | -h, --help Print this message
17 | -t, --typescript Use TypeScript
18 | -d, --desktop Enable packaging for desktop release (uses tauri and requires rust to be installed)
19 | -e, --example Start from a example listed on kaboomjs.com/play
20 | --spaces Use spaces instead of tabs for generated files
21 | -v, --version