DimensionFlip

河原電子ビジネス専門学校 ゲームクリエイター科2年
山口 隼 (やまぐち はやと) 27卒

gif.1 タイトル画面。


目次

1. 作品概要

2. ゲーム内容

  2-2 ゲームの流れ

  2-3 各ステージについて

3. 操作説明

4. カメラについて

5. 技術説明

  5-1StrategyPattern

  5-2FactoryPattern

6. その他使用技術

  6-1StatePattern

  6-2SingletonPatter

7. 今後の展望

8. リンク集


作品概要



ゲーム内容

時には2D、またある時には3D。
カメラの視点を回してステージを突き進もう。 カメラの使い方はアナタ次第!!
はたしてあなたはどう回す!?

gif.2 ボスの登場カットイン

ステージの最奥。 アナタを待つものとは一体!?




ゲームの流れ

video.1 タイトルアクション操作

タイトルには3つの操作ができます。

GameStart を押すとステージ選択画面に遷移することができ遊びたいステージを選択することができます。

Manual は操作説明です。 本作品はチュートリアルで操作説明はしていますが、タイトル画面からも確認できるように実装しました。

GameEnd はゲームを終了できます。 逐一右上の✖を押してウィンドウを閉じるのはストレスになると思ったkらです。

少し細かいですが、画面下部には権利クレジットとVersion表記を記載しています。

これはより「ゲームっぽさ」を表現するために記載を行いました。


各ステージについて

ステージの種類は3種類あります。

TutorialStage, Stage1(NormalStage), BossStageです。

ここからは Tutorial, Normal, Bossと表記します。


Tutorialではゲーム全体の流れと遊び方を学ぶことができます。


Normalでは実際にギミックや視点切替を行いながらステージを進んでいく必要があります。

また、敵も出現するため、カメラを切り替えるタイミングが重要になってきます。


Bossではカメラを切り替えながら、攻撃を避け、ボスに攻撃を与える必要があります。

ボス戦の攻略チャートは別でアップロードしています。


操作方法



カメラについて

alt text

カメラ本体を画面中央に配置しPlayerが追従ラインを上下した分だけ追従するように実装

  → ステージ全体を見渡すことがき、ゲームとしての視認性を確保。

    斜面の計算にも対応し、進行につれ上がる視覚を追従するように実装。


技術説明

StrategyPattern

作品内での使用箇所 : 2D/3Dカメラの切り替えロジック

■ 実装背景

「カメラクラス」の肥大化を防ぐためです。

  → 既存の設計では1つのクラスに機能のすべてのコードを記載しており、

    可読性・保守性の観点から将来性がないと判断。

    そこでStrategyPatternの特徴「アルゴリズムの動的な切り替え」に着目し

    2D/3D用カメラクラスを作成。 振る舞いとして実装を行うことが出来ました。

    また、メンテナンス性も向上。 片方のクラスを変更しても影響を受けないため、

    そのカメラ特有の機能を実装したいときに役立ちました。



FactoryPattern

作品内での使用箇所: 敵キャラクターの生成方式

■ 実装背景

「敵の種類」が増加するたびに増えるSwitch文コードの可読性向上のため。

  → 敵の種類が増えるたびに SwitchCase文を多用し、コードが長くなってしまうと判断。

    また、そこに敵特有の初期化処理も増え、大きくなってしまうと判断。

    既存の実装方法ではステージクラスにその処理を書きステージクラスが肥大化。

    そこでFactoryPatternを用い、生成の権利をFactoryクラスに譲渡。

    また、関数テーブルを用いることでSwitch文を廃止。

    ステージクラスでは敵の種類と生成座標を指定するだけで生成が可能に。

    これより 疎結合化・実行速度の向上・コンパイル時の安全性の確保など。

    様々な恩恵を獲することに成功。



その他使用技術

SingletonPattern:

アクセスポイントを提供し呼び出し元を1つに統一しました。

主に何か共通の処理をまとめるマネージャクラスに適応。


StatePattern:

Playerクラス・Enemyクラスに適応。

  → カメラクラスにも適応できたが、あえてStrategyを選択

  → 特に処理が複雑なクラスのため適応。

    両クラスでは複雑な処理が多い上にメンテナンス性も確保できない。

    そこで StatePattern を適応することで状態ごとに振る舞いを切り替え、

    メンテナンス性の向上・迅速なデバッグ対応を行うことに成功。



今後の展望



リンク

宛先

学校法人河原学園 河原電子ビジネス専門学校 ゲームクリエイター科 ゲームコース 3年制

2年 山口 隼