概要:現役ゲームプランナーの視点から「アクションゲームにおけるステート」について紹介!
プロフィール:わたなべ りょう
▼略歴
・明治大学政治経済学部卒
・株式会社カプコンに4年半勤務
・ゲームプランナー/アクションプランナー
・フリーランスとして独立
・特技は「テコンドー」「カポエイラ」
▼制作実績
・モンスターハンター ライズ
・モンスターハンター エクスプロア
・小説「LANCASTER《ランカスター》」
アクションゲームにおけるステートとは
結論から言えば、以下の通りです。
・ステート(State)とは、プレイヤー/モンスター/オブジェクト等に関する状態のこと
ちょっと分かり辛いので、具体例を交えて説明していきますね。
ステートがあることでそれぞれの状態に遷移できる
例えば、「歩き」「走り」「ダッシュ」3種類の状態を作る場合、それぞれアニメーションが必要になると思います。
でも、アニメーションだけでは、それぞれの出し分けまではできないです。
なぜなら、プレイヤーの速度状態を監視する処理がないためです。
ステートがあれば、出し分けできる
例えば、以下の通りです。
速度100以下の場合:歩きステート
速度101~300:走りステート
速度301~:ダッシュステート
こんな感じですね。
このように、アクションゲームでは、ステート(状態)に応じて、それぞれのアニメーションに遷移する処理が必要になります。
ステートとは「いまどういう状態なのかを判断して、最適なアニメーションに遷移させる処理」とも言えます。
アクションゲームにおけるステートマシーンとは
アクションゲームには「ステートマシーン」と呼ばれる用語があります。
ステートマシーンとは、簡単に言えば、ステート(状態)の集合体のことです。
具体的には、以下の通りです。
・歩きステート
・走りステート
・ダッシュステート
・ジャンプステート
・しゃがみステート
・匍匐前進ステート
こんな感じですね。
ステートからまた別のステートに繋げることで、色々な状態に遷移できるようにしています。
マリオのステートマシーンの場合
マリオで言えば、ダッシュ中にBボタンを押せば、ジャンプできると思います。
つまり、ステートマシーン上では、ダッシュステート→ジャンプステートを繋げている感じです。
だから、ダッシュ中にBボタンを押すことで、ジャンプに遷移できるわけです。
逆に言えば、ステートマシーン上にて「ダッシュステート」から「ジャンプステート」に繋がっていなければ、ダッシュからジャンプは出せないですね。
ステートとステートマシーンの違い
具体的には、以下の通りです。
ゲームにおける「ステート」と「ステートマシーン」って似ているのでややこしいかもしれません。違いとしては、ざっくりこんな感じですかね。
— わたなべ りょう@GamePlanner (@Studio_Creeat) August 22, 2021
ステート:単一の状態のこと
ステートマシーン:ステートをまとめたもの
実際にはあまり使い分けて言うことも少ないので、ステートだけ覚えればOKです。
ゲームにおける「ステート」と「ステートマシーン」って似ているのでややこしいかもしれません。違いとしては、ざっくりこんな感じですかね。
ステート:単一の状態のこと
ステートマシーン:ステートをまとめたもの
実際にはあまり使い分けて言うことも少ないので、ステートだけ覚えればOKです。
まとめ:アクションゲームにおけるステートの役割
最後にもう一度まとめておきますね。
・ステート(State)とは、プレイヤー/モンスター/オブジェクト等に関する状態のこと
・状態ごとにアニメーションを切り替えたい場合は、ステートを作る必要がある
・例. 地上にいる場合は「待機ステート」、空中にいる場合は「空中ステート」
・ステートからステートへ遷移できるようにまとめたステートの集合体=ステートマシーン
ステートの概念としては、こんな感じですね。
ステートについてもう少し勉強したい方は、次の動画が分かりやすいと思います。
UE4におけるステート処理
引用元:Unreal Engine JP
アクションゲームを作りたい方へ
アクションゲームに関する基礎知識について更に深く学びたい方は、下記いずれかの書籍があるとイイですよ。
① Unreal Engine 4 アクションゲーム ブループリント入門
UnrealEngineで作る場合は①、Unityで作る場合は②って感じですね。
いずれにしても実際に手を動かしながら作ってみると、ひと通り分かってくると思いますよ。
もし参考書を見ても分からない場合
TechAcademy 無料体験 で勉強するのもありですね。
ゲーム開発コースがあるので、基礎だけ教えてもらえば、参考書の理解も捗るかと思います。
今回はこんな感じで終わりたいと思います。