游戏引擎 活跃维护

kaplay

kaplayjs/kaplay

🦖 一个感觉像游戏的 JavaScript/TypeScript 游戏库。

1809
Stars 标星
119
Forks 分支
11
Watchers 关注
95
Open Issues
TypeScript
主要语言
MIT
开源协议
80.7 MB
仓库大小
1 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:kaplayjs/kaplay
git clone https://github.com/kaplayjs/kaplay.git
git clone git@github.com:kaplayjs/kaplay.git
README.md master

机器翻译正文由机器翻译自项目原始文档(英文),排版经程序统一处理,可能存在偏差,请以原项目仓库为准。

🎮 KAPLAY.js — 一个 JavaScript 和 TypeScript 游戏库

KAPLAY 是一个以娱乐优先的、适用于 JavaScript 和 TypeScript 的 2D 游戏库。它的设计目的是在你制作游戏的同时,让你感觉像在玩游戏。简单。快速。强大。

✨ 无论你是初学者还是有经验的开发者,KAPLAY 都自带自己的 基于网页的编辑器 —— KAPLAYGROUND —— 让你可以即时尝试代码,并通过超过 90 个示例 学习!

🎲 快速概览

// Start a game
kaplay({
    background: "#6d80fa",
});

// Load an image
loadSprite("bean", "https://play.kaplayjs.com/bean.png");

// Add a sprite to the scene
add([
    sprite("bean"), // it renders as a sprite
]);

游戏对象由简单而强大的组件组成:

// Add a Game Obj to the scene from a list of components
const player = add([
    rect(40, 40), // it renders as a rectangle
    pos(100, 200), // it has a position (coordinates)
    area(), // it has a collider
    body(), // it is a physical body which will respond to physics
    health(8), // it has 8 health points
    // Give it tags for easier group behaviors
    "friendly",
    // Give plain objects fields for associated data
    {
        dir: vec2(-1, 0),
        dead: false,
        speed: 240,
    },
]);

用于描述行为的块状命令式语法

// .onCollide() comes from "area" component
player.onCollide("enemy", () => {
    // .hp comes from "health" component
    player.hp--;
});

// check fall death
player.onUpdate(() => {
    if (player.pos.y >= height()) {
        destroy(player);
    }
});

// All objects with tag "enemy" will move to the left
onUpdate("enemy", (enemy) => {
    enemy.move(-400, 0);
});

// move up 100 pixels per second every frame when "w" key is held down
onKeyDown("w", () => {
    player.move(0, 100);
});

🖥️ 安装

🚀 使用 create-kaplay

最快开始的方法:

npx create-kaplay my-game

然后打开 http://localhost:5173 并编辑 src/game.js 。

📦 使用包管理器安装

npm install kaplay
yarn add kaplay
pnpm add kaplay
bun add kaplay

你将需要一个打包工具,比如 Vite 或者
ESBuild 来在你的项目中使用 KAPLAY。了解如何设置 ESbuild
这里。

🌐 在浏览器中使用

通过 CDN 引入:

<script src="https://unpkg.com/kaplay@3001.0.12/dist/kaplay.js"></script>

📜 TypeScript 全局类型

如果你正在使用 TypeScript,你使用了 create-kaplay 或者通过包管理器安装,并且你想要 全局类型,你可以使用以下指令加载它们:

import "kaplay/global";

vec2(10, 10); // typed!

但建议使用 tsconfig.json 来包含这些类型:

{
  "compilerOptions": {
    "types": ["./node_modules/kaplay/dist/declaration/global.d.ts"]
  }
}

[!警告]
如果你正在发布一个游戏(而不是测试/学习),也许你不想使用全局变量,
查看原因。

你也可以使用所有 KAPLAY 源类型来导入它们:

import type { TextCompOpt } from "kaplay"
import type * as KA from "kaplay" // if you prefer a namespace-like import

interface MyTextCompOpt extends KA.TextCompOpt {
  fallback: string;
}

📚 资源

📖 文档

📺 教程

💬 社区

🎮 游戏

由 KAPLAY 制作的游戏合集,经过 KAPLAY 精选:

🙌 致谢

KAPLAY 是一个开源项目,由 KAPLAY 团队和核心贡献者 维护,并得到许多 其他出色贡献者 的支持。

🏆 致谢

本站来源与版权声明
  • 本文标题:kaplay - 🦖 一个感觉像游戏的 JavaScript/Type
  • 本文链接:https://cn121.com/gameengine/kaplayjs-kaplay.html
  • 原项目:kaplayjs/kaplay 版权归原作者 kaplayjs 及贡献者所有
  • 收录信息:本站于 2026-10-05 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站译文为其衍生内容;使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 kaplayjs/kaplay。
  • 翻译说明:本页正文为人工智能生成内容——由机器翻译对原项目 README 初译、经程序校验排版,可能存在错漏,请以原项目文档为准。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。