0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mainクラスで全体管理【MM2025 開発記 # 8】

Last updated at Posted at 2025-12-24

はじめに

この記事は 「MM2025 開発記」 シリーズ第8回です。

前回の記事ではEDGEを使ったゲーム用ドット絵制作について紹介しました。

今回は、Mainクラスはどのような役割をしているのか、どうやって全体管理をしているのか、などについて紹介します。

Mainクラスの役割

今回作成した応募作品では、

  • Canvasを使用した横スクロールゲーム
  • TextAlive App APIを利用した歌詞・楽曲同期
  • ゲーム進行と音楽再生の同時制御

など、いろいろな要素が組み合わさっている。このような複雑な構成の中で、Mainクラスはそれらをまとめる重要な役割を果たしている。

Mainクラスでやっていること

  • ゲーム全体の初期化
  • TextAlive Player の生成・設定
  • 再生位置や再生終了イベントの管理
  • ゲーム側へイベントを伝える

ゲームと音楽の連携

冒頭でも説明したように、今回作成したゲームは大まかに「Canvasを利用したゲーム」部分と「TextAlive App APIを利用した音楽系」部分に分かれている。

それぞれでやっていること

ゲーム部分

  • ゲームキャラクターの移動
  • スクロール処理
  • コイン取得判定
  • ゴール判定

音楽部分

  • 楽曲歌詞情報(再生タイミングなど)
  • 再生終了イベント
  • 楽曲の再生位置

このように全く別の処理を行っている2つを、Mainクラスがつなげている。具体的には、TextAliveのイベントを受け取り、「再生位置」「再生終了」といった音楽側の情報を、ゲーム内のイベント(ゴール出現など)に変換している。

例えば、MM2025 開発記 # 6 で解説した、TextAlive App APIを利用して楽曲の情報などを取得する部分・Playerの初期化部分はMainクラスに含まれている。

Mainクラスのコード

ここでは、Mainクラスの中の代表的なコードについて少し紹介していく。

再生終了時の処理

index.js
onPlayEnd() {
  console.log("再生終了");
  if (goalX === null) {
    goalX = scrollX + canvas.width - 200;
    gameStarted = true;
    gameLoop();
  }
}

楽曲が終了したらゴール演出へ移動する。
楽曲が終了するのはTextAlive側のイベントだが、それを利用してゲーム全体の処理を行うため、Mainクラスに記述している。

リサイズ対応

index.js
_resize() {
  canvas.width  = document.documentElement.clientWidth;
  canvas.height = document.documentElement.clientHeight;
}
  • ウィンドウサイズ変更
  • 端末の回転
  • フルスクリーン切り替え

ゲームプレイヤーごとの設定ではなく、アプリ全体に関わる問題のためMainクラスに記述している。

グローバル変数について

本作品では、以下のようなグローバル変数を使用している。
本来はクラスにまとめる方が良いとされるが、自分が初心者であり、設計しやすくしたかったため、そっちを優先してゲーム全体の状態はグローバル変数で保持するようにした。

index.js
let taPlayer;
let gameStarted = false;
let score = 0;
let scrollX = 0;

さいごに

今回の記事では、応募作品におけるMainクラスの役割や、やっていることについて解説しました。

次回は、Canvasゲームループ部分のコードについて紹介していきます。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?