# 简介
你正在阅读的是 Pandona Engine (PE) 的文档!
PE 是一款用于构建 2D 游戏和动画的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发 2D 游戏和动画。无论是简单的互动动画还是复杂的 2D 游戏,PE 都可以胜任。
下面是一个最基本的示例:
```javascript
import PE from 'PE'
// 创建游戏实例
const game = PE.create()
// 创建一个精灵元素
const sprite = game.create('sprite', {
x: 100,
y: 100,
width: 50,
height: 50
})
// 将精灵添加到游戏中
game.addGameObject(sprite)
```
```html
Hello PE!
```
**结果展示**
上面的示例展示了 PE 的核心功能:
- **声明式渲染**:PE 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述游戏场景和元素。
- **响应性**:PE 会自动跟踪游戏状态并在其发生变化时响应式地更新渲染。
- **组件化**:PE 支持基于场景的组件化开发,每个场景可以包含多个元素。
## 什么是 PE?
PE (Pandona Engine) 是一款用于构建 2D 游戏和动画的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发 2D 游戏和动画。
## 渐进式框架
PE 是一个框架,也是一个生态。其功能覆盖了大部分 2D 游戏和动画开发常见的需求。但游戏开发世界是十分多样化的,不同的开发者在构建的东西可能在形式和规模上会有很大的不同。考虑到这一点,PE 的设计非常注重灵活性和"可以被逐步集成"这个特点。根据你的需求场景,你可以用不同的方式使用 PE:
- 无需构建步骤,渐进式增强静态的 HTML
- 在任何页面中作为 Web Components 嵌入
- 单场景应用 (SSA)
- 全屏 / 画布渲染 (CSR)
- 开发桌面端、移动端 2D 游戏
## 场景组件
在大多数 PE 项目中,我们可以使用一种类似 HTML 格式的文件来书写游戏场景,它被称为**场景文件** (也被称为 `*.pe` 文件)。顾名义,PE 的场景文件会将一个场景的逻辑 (JavaScript),模板 (HTML) 和样式 (CSS) 封装在同一个文件里。下面我们将用场景文件的格式重写上面的示例:
```html
Hello PE!
```
场景文件是 PE 的标志性功能。你可以使用它来编写游戏场景。你可以在后续相关章节里了解更多关于场景文件的用法及用途。
## API 风格
PE 的场景可以按两种不同的风格书写:**模板式 API** 和 **编程式 API**。
### 模板式 API (Template API)
使用模板式 API,我们可以在 `.pe` 文件中使用类似 HTML 的语法来描述场景元素,并在 `
```
### 编程式 API (Programmatic API)
通过编程式 API,我们可以使用 JavaScript 代码直接创建和管理游戏元素。
```javascript
import PE from 'PE'
// 创建游戏实例
const game = PE.create()
// 创建响应式状态
let count = 0
// 创建精灵元素
const sprite = game.create('sprite', {
x: 100,
y: 100,
width: 50,
height: 50
})
// 添加点击事件
sprite.element.addEventListener('click', () => {
count++
})
// 将精灵添加到游戏中
game.addGameObject(sprite)
```
### 该选哪一个?
两种 API 风格都能够覆盖大部分的游戏开发场景。它们只是同一个底层系统所提供的两套不同的接口。
模板式 API 以"场景"的概念为中心,对于有 Web 开发背景的用户来说,这通常与基于 HTML 的心智模型更为一致。同时,它将渲染相关的细节抽象出来,并强制按照模板和脚本的方式来组织代码,从而对初学者而言更为友好。
编程式 API 的核心思想是直接使用 JavaScript 代码来创建和管理游戏元素。这种形式更加自由,也需要你对 PE 的系统有更深的理解才能高效使用。相应的,它的灵活性也使得组织和重用游戏逻辑的模式变得更加强大。
如果你是使用 PE 的新手,这里是我们的大致建议:
- 在学习的过程中,推荐采用更易于自己理解的风格。再强调一下,大部分的核心概念在这两种风格之间都是通用的。熟悉了一种风格以后,你也能够很快地理解另一种风格。
- 在生产项目中:
- 当你不需要使用构建工具,或者打算主要在低复杂度的场景中使用 PE,推荐采用模板式 API。
- 当你打算用 PE 构建完整的游戏项目,推荐采用编程式 API。
在学习阶段,你不必只固守一种风格。在接下来的文档中我们会为你提供一系列两种风格的代码供你参考。
## 还有其他问题?
请查看我们的 FAQ。
## 选择你的学习路径
不同的开发者有不同的学习方式。尽管在可能的情况下,我们推荐你通读所有内容,但你还是可以自由地选择一种自己喜欢的学习路径!