初始化框架

这是学习如何使用 Gamedev Phaser 的 16 个教程中的第一个。在开始编写游戏功能之前,我们需要创建一个基本的结构来渲染游戏。这可以通过 HTML 来完成——Phaser 框架将生成所需的 <canvas> 元素。

游戏的 HTML

HTML 文档结构非常简单,因为游戏将完全渲染在框架生成的 <canvas> 元素上。使用您喜欢的文本编辑器,创建一个新的 HTML 文档,将其保存为 index.html,放在一个合理的位置,并添加以下代码:

html
<!doctype html>
<html lang="en-US">
  <head>
    <meta charset="utf-8" />
    <title>Gamedev Phaser Workshop - lesson 01: Initialize the framework</title>
    <style>
      * {
        padding: 0;
        margin: 0;
      }
    </style>
    <script src="js/phaser.min.js"></script>
    <script src="js/script.js" defer></script>
  </head>
  <body></body>
</html>

并在与 index.html 文件相同的位置创建一个新的 js 目录,并在其中创建一个名为 script.js 的新文件。我们将在其中编写控制游戏的 JavaScript 代码。最初它应该包含以下内容:

js
class ExampleScene extends Phaser.Scene {
  preload() {}
  create() {}
  update() {}
}

const config = {
  type: Phaser.CANVAS,
  width: 480,
  height: 320,
  scene: ExampleScene,
};

const game = new Phaser.Game(config);

下载 Phaser 代码

接下来,我们需要下载 Phaser 源代码并将其应用到我们的 HTML 文档中。本教程使用 Phaser v3(撰写本文时为 v3.90.0,但较新的次要版本应该工作方式相同)。

  1. 转到 Phaser 下载页面
  2. 选择最适合您的选项——我们推荐 phaser.min.js 选项,因为它使源代码更小,而且您不太可能查看源代码。
  3. 将 Phaser 代码保存在 js 目录中。如果您使用其他文件名,请确保相应地更新 HTML 中第一个 <script> 元素的 src 值。

回顾到目前为止的进展

此时,我们已经定义了 charset<title>,并在 header 中添加了一些基本的 CSS 来重置默认的 marginpadding。我们还有一个 <script> 元素用于将 Phaser 源代码应用到页面。body 包含第二个 <script> 元素,我们将在其中编写用于渲染和控制游戏的 JavaScript 代码。

<canvas> 元素由框架自动生成。我们通过创建一个新的 Phaser.Game 对象并将其分配给 game 变量来初始化它。参数是:

  • 渲染方法。可用选项是 AUTOCANVASWEBGLHEADLESS。我们可以显式设置 CANVASWEBGL,或者使用 AUTO 让 Phaser 决定使用哪一个。它通常会使用浏览器中可用的 WebGL,如果不可用则回退到 Canvas 2D。最后一个选项 HEADLESS 用于服务器端渲染或测试,这与本教程无关。
  • 设置 <canvas> 的宽度和高度。
  • 要添加到游戏中的场景。在这种情况下,我们正在创建一个名为 ExampleScene 的新类,该类继承自 Phaser.Scene。这个类实现了 Phaser 在游戏生命周期的不同阶段调用的方法。我们将在其中填充这些方法。
    • preload 负责预加载资源
    • create 在所有内容加载并准备就绪后执行一次
    • update 在每一帧执行。

运行应用程序

要运行应用程序,您不能直接打开 index.html 文件,因为稍后我们将加载外部资源,这些资源将被浏览器的 同源策略 阻止。

为了解决这个问题,您需要运行一个本地 Web 服务器来提供 HTML 文件和图像文件。 正如 Phaser 的官方文档所建议的,我们有很多选项可以运行本地 Web 服务器。我们也有自己的 关于设置本地服务器的教程——请随意选择您喜欢的任何选项。例如,如果您选择使用 Python HTTP 服务器,则打开终端,导航到 index.html 文件所在的目录,然后运行以下命令:

bash
python3 -m http.server

这将启动一个在端口 8000 上的简单 HTTP 服务器。然后,打开您的 Web 浏览器并导航到 https://:8000/index.html

Compare your code

这是您到目前为止应该看到的效果,实时运行。要查看其源代码,请单击“播放”按钮。

后续步骤

现在我们已经设置了基本的 HTML 并对 Phaser 初始化有了一点了解,让我们继续第二个课程,学习 缩放