13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Phaser + TypeScript + Viteの環境構築

Last updated at Posted at 2022-09-26

Phaser3ってなに?

簡単に言うと、WEBゲームが作れるフレームワークです。

環境

Viteのプロジェクト作成

npm
$ npm init vite@latest
yarn
$ yarn create vite

実行すると質問されるので、以下のように回答。

Project nameは自分の好きな名前で入力します。
Select a frameworkは自分の環境に合わせて選択してください。今回はVanillaを選択しています。
Select a variantTypeScriptを選択します。

実行結果
$ ✔ Project name: … my-project
$ ✔ Select a framework: › Vanilla
$ ✔ Select a variant: › TypeScript

カレントディレクトリを作ったプロジェクトに移動して、起動確認をします。

npm
$ cd my-project
$ npm install
$ npm run dev
yarn
$ cd my-project
$ yarn
$ yarn dev

起動ができたらこのような画面になっていると思います。
image.png

TypeScriptとPhaserのインストール

最初にTypeScriptをインストールします。

npm
$ npm install typescript --save-dev
yarn
$ yarn add typescript -dev

次にPhaserをインストールします。

npm
$ npm install phaser --save
yarn
$ yarn add phaser

viteの設定

configファイルは自動で生成されないので、自分で作成する必要があります。
ので、プロジェクトルート内にvite.config.tsファイルを作成します。

生成後のプロジェクトディレクトリ

my-project/
    ├─ node_modules/
    ├─ public/
    ├─ src/
    ├─ .gitignore
    ├─ index.html
    ├─ package.json
    ├─ tsconfig.json
+   └─ vite.config.ts

作成したvite.config.tsを編集します。

vite.config.ts
import { defineConfig } from 'vite';

export default defineConfig({
    build: {
        assetsInlineLimit: 0,
    },
});

assetsInlineLimitを0にすることで、スプライトなどのアセットをロードしたときにBase64 URLへのインライン化を無効にします。
(https://ja.vitejs.dev/config/build-options.html#build-assetsinlinelimit)

実行

実行する前にphaserが動くようにするのと、不要なファイルを削除します。

不要なファイル削除

my-project/
    ├─ node_modules/
    ├─ public/
-   │    └─ vite.svg
    ├─ src/
-   │    ├─counter.ts
    │    ├─main.ts
-   │    ├─style.css
-   │    ├─typescript.svg
-   │    └─vite-env.d.ts
    ├─ .gitignore
    ├─ index.html
    ├─ package.json
    ├─ tsconfig.json
    └─ vite.config.ts

最初にindex.htmlを編集します。

index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + TS + Phaser</title>
    <style>
      body {
        margin: 0;
      }
    </style>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

主な変更としてstyleタグを追加しています。

次にsrc/main.tsを編集します。
もともと記述されていたコードはすべて消してしまって大丈夫です。

src/main.ts
import Phaser from 'phaser';

class TestScene extends Phaser.Scene {
	constructor() {
		super('testScene');
	}
	preload() {
		this.load.setBaseURL('https://labs.phaser.io');

		this.load.image('sky', 'assets/skies/space3.png');
		this.load.image('logo', 'assets/sprites/phaser3-logo.png');
		this.load.image('red', 'assets/particles/red.png');
	}

	create() {
		this.add.image(400, 300, 'sky');

		const particles = this.add.particles('red');

		const emitter = particles.createEmitter({
			speed: 100,
			scale: { start: 1, end: 0 },
			blendMode: 'ADD',
		});

		const logo = this.physics.add.image(400, 100, 'logo');

		logo.setVelocity(100, 200);
		logo.setBounce(1, 1);
		logo.setCollideWorldBounds(true);

		emitter.startFollow(logo);
	}
}

const config: Phaser.Types.Core.GameConfig = {
	type: Phaser.AUTO,
	width: 800,
	height: 600,
	parent: 'app',
	physics: {
		default: 'arcade',
		arcade: {
			gravity: { y: 200 },
		},
	},
	scene: TestScene,
};

new Phaser.Game(config);

Phaser公式から公開されているHello World!を使用しました。
(https://phaser.io/tutorials/getting-started-phaser3/part5)

実行画面
image.png

ビルド

ビルドすることで、静的サイトで使用することができます。

npm
$ npm run build
yarn
$ yarn build

完了すると、プロジェクトルート内にdistフォルダが生成されます。

ビルドしたものを実行することもできます。

npm
$ npm run preview
yarn
$ yarn preview

GitHub Pagesにアップロードする

ここではGitHub Pagesにアップロードするための設定や便利なものを紹介します。
レポジトリの作り方や、GitHub Pagesの設定方法などは個々で調べてください。

vite.config.tsの追加項目

vite.config.ts
import { defineConfig } from 'vite';

export default defineConfig({
	build: {
		assetsInlineLimit: 0,
	},
+	base: '/<REPO>/',
});

ただしこちらは、https://github.com/<USERNAME>/<REPO>が対象のリポジトリである場合です。詳しくは公式ページをご覧ください。(https://ja.vitejs.dev/guide/static-deploy.html#github-pages)

gh-pagesパッケージを使う

gh-pagesというパッケージを使うことで、distフォルダ内をgh-pagesブランチにアップロードすることができます。

インストール

npm
$ npm install gh-pages --save-dev

package.jsonへの追加

package.json
{
    "scripts": {
        "deploy": "gh-pages -d dist"
    }
}

最後に

npm
$ npm run deploy
yarn
$ yarn deploy

上記を実行することで、gh-pagesブランチにアップロードすることができます。
リポジトリの設定から表示するブランチをgh-pagesのルートに設定することで閲覧できるようになります。
ここまでお疲れさまでした。

参考

これらを構築するにあたって参考にしたサイトがいくつかあるので紹介させていただきます。こちらも参考にしていただければと思います。

13
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?