英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
通知
Replit 不再维护 Kaboom。你可能对社区分支 KaPlay 感兴趣。
轰
Kaboom 是一个 JavaScript 库,帮助你快速且有趣地制作游戏!
开始在 Kaboom Playground 中进行尝试
示例
// initialize context
kaboom()
// define gravity
setGravity(2400)
// load a sprite called "bean"
loadSprite("bean", "sprites/bean.png")
// compose the player game object from multiple components and add it to the game
const bean = add([
sprite("bean"),
pos(80, 40),
area(),
body(),
])
// press space to jump
onKeyPress("space", () => {
// this method is provided by the "body" component above
bean.jump()
})
Kaboom 使用强大的组件系统来组合游戏对象和行为。
// add a game obj to the scene from a list of component
const player = add([
// it renders as a sprite
sprite("bean"),
// it has a position
pos(100, 200),
// it has a collider
area(),
// it is a physical body which will respond to physics
body(),
// it has 8 of health
health(8),
// or give it tags for easier group behaviors
"player",
"friendly",
// plain objects fields are directly assigned to the game obj
{
dir: vec2(-1, 0),
dead: false,
speed: 240,
},
])
用于描述行为的块状命令语法
// .onCollide() comes from "area" component
player.onCollide("enemy", () => {
// .hurt() comes from "health" component
player.hurt(1)
})
// check fall death
player.onUpdate(() => {
if (player.pos.y >= height()) {
destroy(player)
gameOver()
}
})
// if 'player' onCollide with any object with tag "enemy", run the callback
player.onCollide("enemy", () => {
player.hp -= 1
})
// all objects with tag "enemy" will move towards 'player' every frame
onUpdate("enemy", (e) => {
e.move(player.pos.sub(e.pos).unit().scale(e.speed))
})
// move up 100 pixels per second every frame when "w" key is held down
onKeyDown("w", () => {
player.move(0, 100)
})
用法
使用 create-kaboom 开始一个项目
启动 Kaboom 游戏最快的方法是使用 create-kaboom
$ npm init kaboom mygame
这将为你创建一个名为 mygame 的目录,里面包含我们需要的所有文件
$ cd mygame
$ npm run dev
然后打开 http://localhost:5173 并编辑 src/game.js
作为 NPM 包安装
$ npm install kaboom
import kaboom from "kaboom"
kaboom()
add([
text("oh hi"),
pos(80, 40),
])
也适用于 CommonJS
const kaboom = require("kaboom")
请注意,您需要使用像 esbuild 或 webpack 这样的打包工具才能在 NPM 上使用 Kaboom
浏览器 CDN
这会导出一个全局的 kaboom 函数
<script src="https://unpkg.com/kaboom@3000/dist/kaboom.js"></script>
<script>
kaboom()
</script>
或用于 ES 模块
<script type="module">
import kaboom from "https://unpkg.com/kaboom@3000/dist/kaboom.mjs"
kaboom()
</script>
适用于所有支持 NPM 包的 CDN,例如 jsdelivr、skypack
文档
- v3000: https://kaboomjs.com/
- v2000: https://2000.kaboomjs.com/
- v0.5.0: https://legacy.kaboomjs.com/
开发
npm install安装开发包npm run dev启动开发服务器- 访问 http://localhost:8000/ 并选择一个例子
- 编辑
examples/里的例子进行测试
查看 CONTRIBUTION.md 获取完整信息。
社区
游戏
由 Kaboom 制作的游戏集合,由 Kaboom 精选,点击这里。
杂项
- 该项目与动视的游戏 Kaboom! 无关
- 感谢 lajbel 在建立 Kaboom 社区方面的帮助
- 感谢 abrudz 提供了惊人的 APL386 字体
- 感谢 Polyducks 提供了惊人的 kitchen sink 字体 字体
- 感谢 0x72 提供了惊人的 Dungeon Tileset
- 感谢 Kenney 提供了惊人的 1-Bit Platformer Pack
- 感谢 mulfok 提供了惊人的 mulfok32 调色板
- 查找位图字体:Oldschool PC Font
- 精选于 Console 50
- 感谢 Umayr 友好地提供 “kaboom” npm 包名
- 请在 kaboom.com 购买烟花
- 如何在蹦床上做 KABOOM
本站来源与版权声明
- 本文标题:kaboom - 💥 JavaScript 游戏库
- 本文链接:https://www.cn121.com/game/replit-kaboom.html
- 原项目:replit/kaboom 版权归原作者 replit 及贡献者所有
- 收录信息:本站于 2026-10-17 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 replit/kaboom。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。