■ 一人綴り

イロイロやってますが、停滞中。(モノが出来たらアップする感じですから...。)更新はしますが数が減るかも。

■ 処理の考え方

2017年01月31日 | ■ ゲーム制作

 ゲームエンジンだと実装機能を使ってそれを行うと言う方法に

なるのですが、そうでなはいモノで処理をする場合には、何を

どうすればそれになるのか?を考える必要が出てきます。

 

 大抵、処理と言うのはそうした、特定の条件における振る舞

いを考える作業になるのですが、そうした場合、その方法を模

索する必要が出てきます。

 

 ゲーム内では特定のパターンで鵜おgくキャラクターが居ま

すが、それは何で動いているのか?と言う特性があるのですが、

容量の制約のあるレトゲーの場合、

 

 ■ 出現座標

 ■ 行動パターン

 

がある程度決まっている状態になっています。つまり、動きが

数式で、発生場所がマップのオブジェクトのように配置されて

い居るなどです。

 

 もしくは、挙動だけ数式で決まっており、それの発生位置が

ランダムでXもしくはY座標でそれが発生し動くなどもあるで

しょう。しかし、パックマンや他のゲームで存在する

 

 【 もう少し複雑な行動パターンが指定されてい

   るモノ 】

 

も存在します。現状のゲームだともっと高度なモノが実装

されていることが多いのですが、とりあえず、思考方法だけ

考えてみる事にしましょう。

 

 まず、こうした動きを考える場合、

 

 【 何をどう動かすか? 】

 

と言う内容を考える必要が出てきます。こうした内容は、基

本的にノベルゲームやAVGでは登場しません。というのも、この

場合だと、ストーリーを考え、どう分岐させて見せていくかとそ

のビジュアルやゲーム性をどう担保するかになるので、その中に

おいてアクションゲームやシューティングゲームのような

 

【 キャラのリアルタイムな攻撃パターンや行動パターン 】

 

が存在しないからです。これは、ドラクエのようなRPGでも同

様でドット絵時代のランダムエンカウント方式のセン老システ

ムを用意したゲームだとそうしたモノは存在しません。

 

 とりあえず、キャラの動きと敵キャラの動きが存在するゲー

ムにおいてのみそれが存在するので、その場合にはどういう特

性の何をどう配置するかというのもマップの構成で考える必要

が出てきますが、その時の動きがその挙動の設定になります。

 

 そうなると、

 

 ■ 同う条件で何をするのか?

 

カラ挙動が変わってきます。こうした場合、

 

 ■ キャラを無視して特定の動きをする物

 

 ■ キャラとの座標が重なった場合に接近

   してくるもの

 

 ■ 特定の条件で追尾するもの

 

 ■ 常時型の追尾

 

になります。

 

 追尾してくるキャラクターが居るゲームと言うとロマンシ

ング・サガがありますが、あれは執拗にキャラを追尾してきま

す。ただし、エンカウントをしないように動けるので、どうに

かなるわけですが、追尾してくるキャラの動きはあれです。

 

 あれだけ強烈に追いかけてくるとアクションパズルゲームと

しては厳しいので、ゲームで追尾の仕方は異なる訳です。

 

 また、常時あんな感じのものしか出てこない縦スクロールシ

ューティングも末期ですからそれはありません。つまり、用意

している動きが全く違う訳です。

 

 追尾の中にも、パックマン型の条件追尾が存在するのです

が、条件型の追尾方式もあります。ドット絵の時代のメタル

ギアは非常にわかりやすく、あいれに見つかる条件が発生し

ないように動くと追尾はされず、特定のルーティーンの動き

しかしませんが、見つかると追尾してきます。

 

 このように、単一のアルゴリズムではない条件反射型の物

が存在しています。

 

 とりあえず、メタルギアのようなアルゴリズムだと特定の

動きである【 通常パターンA 】で歩かせているキャラを

用意してキャラの進行方向の座標にセンサーとなる物を用意

して起き、直線状に入ると反射すると言う条件で動かすとそ

の【追尾するパターンB】の振る舞いになります。これを、

異なるセンサーの動きにすると挙動が変わるのですが、そう

した機能はゲームエンジンでは標準装備されています。

 

 条件で振る舞いが変わると言うと、古いアクションゲー

ムだとトラップとして利用されているモノがそうなんです

がマリオシリーズでも見かける

 

 ■ キャラのY軸が合うと落ちてくるキャラ

 

 ■ キャラのX軸が合うと特定の距離で反応

   するキャラ

 

などが居ます。あと、マリオでいうと、土管とマリオの位

置関係で制御されてるものにパックンフラワーがあるので

すが、あれも特定条件だと出てこない物と言う座標の条件

判定をするものになっています。

 

 つまり、

 

【 キャラ同士の座標軸で振る舞いが始まる物 】

 

になりますが、トラップの場合、大抵は挙動が決まっています。

その為、追尾ではないのですが、それが常時勝手に動いている

モノではなく、条件反射で決まった振る舞いしかしないと言う

物になります。ただし、常時回転運動をしているトラップと比

較すると、機械的な印象を受けない部分はあります。

 

 自動で動くものと言うのは、条件反射的に動きではなく常時

稼働型のトラップなどがそれで、マリオのクッパの面で見かける

炎のバーがそれです。

 

 とりあえず、シューティングゲームのような覚えゲーだと出

現パターンと移動パターンがあるので、あれは自動処理で動く

ものになるのですが、通常は特定の動きで勝手にフェードアウ

トしていくものが多く、自機を追尾してくるような特殊なモノ

は奇行種のような感じで、例外的に数種か単一で存在している

ような状態になります。その為、シューティングゲームの場合、

敵キャラは特定のパターンで動いいている配置物であると言え

ますから、ミスの場合大半はもらい事故のようなものと言えま

す。

 

 こうした内容で考えると、単体のキャラの振る舞いでも数種

存在するという事になりますから、シューティングゲームの敵

キャラですら【 動きン個性を個別に与える必要がある 】と

言えますし、それがボスキャラではなく、ザコキャラであって

もそれをちゃんと指定する必要が出てくるわけです。

 

 つまり、そうしたストーリー重視のゲームでのキャラクター

の設定とは異なる部分でのキャラの方向性を個別につける必要

が出てきます。

 

 ただし、追尾と言うのも、結果的には、

 

【 ”キャラの座標” と ”敵からの座標” が一致する

   条件になるように、その数値を減らす方向で演算

   を行い敵キャラの座標を合わせるように変更する

   作業 】

 

なので、これは数式でありグラフのお派内になります。

つまり、

 

 Y=2xのグラフとY=2x+1のグラフがあった場合、前

者に後者を一致させる場合には、増加分の+-をなくせば

いいので-1すれば同じグラフになりますよね。考え方は

これです。ドットで考えると、キャラ(3,4)にそれが

あると仮定した場合、敵キャラが(7、-4)にいたた場合、

(X=-4,Y=+5)程推移すれば、同一座標になるので、

その二点をつなぐ直線を最短距離でい号して来れば、追

尾になるというわけです。個の座標が、操作してるキャ

ラと敵キャラで常時変化するので、その二点をつなぐラ

インの無機や長さが変わるので移動方法がお異なる訳で

す。

 

 ただし、この追尾というのも、そんな簡素なモノでは

なく、ゲームでは壁面や障害物が登場します。そうした

場合、敵キャラがそれを追尾する事は出来なくなります。

 

 つまり、敵キャラが壁の前でふさがってそこで立ち往

生すると言う末期な状態が生まれます。

 

 それを回避するために、数値での条件判定などを入れ

る方法がります。例えば、

 

 ■ 遮蔽物なし : 0

 ■ 遮 蔽 物 : 1

 

のようなぶーリアン型での処理も一つの方法です。まず、

追尾をする場合において、

 

 進行方向がと通路の条件が0の安倍、進行方向はそのま

まで、そうでない場合には、0のある方向を探すと言うや

り方です。そうした条件で考えると、壁面衝突時にどこに

向かうか?をしている場合に、1が該当した場合における

処理を指定しておけば、0の出ない条件化でも袋孤児で壁

にすりついいて立ち往生するという状況には至らなくなり

ます。tりあえず、この条件で考えると、トップビューだ

 

 ■ 通 路 : 0

 ■ 壁面縦 : 1

 ■ 壁面横 : 2

 

としておけば、0の条件だと追尾で、1だと上下のいずれ

かを選択し、2だと左右のいずれかに動くとしておけば、

袋孤児の問題はなくなります。つまり、袋孤児があって

も、三度向きを変えればソレに出るので、はまり込むこ

とはなくなります。

 

 あと、露骨に思うがままに動いえ居るようなキャラが

登場する場合がありますが、初期のRPGとかはそんな感

じで街中のキャラは相当テキトーに動いています。

 

 その為、レトゲーの中にはその挙動でゲームが詰むよ

うなものがあり、何かアイテムがあるように見える袋小

路に入ったら、NPCが二押して、出る事が出来なくなり

リセットするしかなくなるという末期なモノがありました。

 

 後に、このリスク回避から、NPCを押してどける事がど

けるようなゲームも登場しましたが、結果的に、テキトー

に動かすとプレイを妨げるような条件になる物も存在する

わけです。あと、シューティングゲームだと配置がテキ

トーだと抜け道が存在しない末期なモノが出来るなども

ソレです。

 

  その為、ゲームのジャンルで内容が変わってくるので

すが、

 

 【 特定の動きをするものを用意する場合には、そ

   れぞれに振る舞いを考える必要があり、マップ

   でそれを近十r-ルする必要がある 】

 

わけです。この辺りは、Wii-Uのスーパーマリオメーカー

のようなコンンストラクション系ゲームが出回っているの

でそうした事も特別な事をしないとマネべないという物で

もなくなっていますが、アレはゲーム作りにおけるキャラ

のパターンと言うプリセットが用意された条件での製造で

すから、そのキャラの振る舞いがない状態でそこから作る

ようになるのがそうしたゲームの制作になります。

 

 そう考えると、モーションが存在しない場合、画像の配

置でしかなくなるので、ゲームにおいての個別のキャラの

動きの重要性と言う音は認識できるのではないかなと思い

ます。

 

 こうした動きを考えるのもゲームを作る上では重要にな

るのですが、【 どういう動きをするものなのか? 】を

決めているから、マップのどこに配置して動かすように出

来ると言うのが考えられるわけです。

 

 とりあえず、そうした内容かrあ、ゲームにおけるキャ

ラの動きの重要性が大きな事は理解できたと思いますが、

SLGやボードゲームでは、処理がまた異なるので、考え方

が相当変わってくる部分があります。

 

 SLGだと、歩数や射程という物が存在しており、その範

囲はヘックスの色の反転などで表示されます。スパロボの

ようにヘックスではなくスクウェアなものもありますが、

移動距離と武器の射程による範囲の表示がされるものが

あります。

 

 この場合、どういう処理をすればいいのか?と言う話

になりますが、

 

【 地形に効果範囲分のIDを振って、それで処理する 】

 

ということになります。この場合に、解析を行う事にな

ります。まず、移動距離1なので、4方向の探索を行い、

完全な遮蔽物だと移動距離として存在しない数値を用意

し、それが-1だと0なので、0の条件になる場合において

移動可能範囲として表示するとしていくと処理がしやすく

なります。つまり、2歩分消費する場合には、-2を用意す

るなどすれば、移動距離の異なるマップ上でのそれを使い

分ける事が出来ます。

 

 しかし、これが4歩歩けるキャラと仮定すると、単に周

囲の一歩の検索をしただけだとどうしようもありません。

そうなると、その移動可能な個別の数値判定を範囲分だけ

行う必要が出てきます。つまり、表示されているマップ上

が何マスx何マスで、その空間上にどういう数値の配列に

なっているのかを決めておき(つまり、アレイの構造物や

JOSNとかXMLとかSQLのデータベースのような状態になっ

ている)その中において、そのキャラの座標上で、移動距

離分の検索をした場合にどこまでだと移動可能でどこまで

だと移動不可能かを、ループで個別に検索していき、条件

抽出をして移動範囲を表示すると言う流れになります。

 

 あくまでもそのデータ確認作業は数値の条件判定なので、

移動可能まマーカー表示と言うグラフィック処理をする内容

と数値の判定は全く別の処理なので、このループでデータ参

照をして解析するようなものはそれほど時間を消費しない処

理になります。

 

 射程についてはそのままですからいいとしても、移動などに

ついてはそうした処理が包含されるので、結果的にキャラの移

動条件の判定で、アクションゲームのプレイヤーキャラの移動

においては発生しないような処理を用意する事になります。当

然、SLGでAIがアホというのは致命的ですから、最短距離で

プレイヤーを追尾して、山に挟まって行動不能になるとか、袋

小路で挟まってマップへ生きtお延コリ攻撃の集中砲火を浴び

て死滅と言うのもゲームとして終わっていますからそんな末期

な振る舞いをしないようにする必要があります。つまり、山が

横断してるマップで抜け道がある場合、そのいずれかを進むよ

うな振る舞いをし、ユニットの性質(ザコキャラとボスや準ボ

ス系のキャラだと思考が違うので、自分のリスクがない状態で

攻撃するとか硬さに任せて突っ込んでくるとかいろいろな個性

を持たせるなど)を持って動くなどを考える必要が出てきます。

と言っても、作戦が存在しない簡素なものとゲームの味付けで

何かの作戦が存在してそれを敵も行ってくると言う条件だと更

にアルゴリズムが変わってきますから、アクションゲームとは

作りが相当異なる訳です。

 

 その為、ジャンルが違うと作り方が全く違ってくるので、

キャラの動きを個別に考える必要があるとしても、作り方が

全く異なるので注意が必要です。

 

 とらいえず、前述の-1のマップで、4を数値で用意すると、

定位置では4ですから、5を基軸としたマップの数値との足し

算を行い、0になる条件まで検索をかけると、範囲が出るの

ですが、SLGではお馴染みの【 ZOC 】の概念なども出て

くるので、そうした場合にはどうした形で処理させるのかが

変わってきます。その為、基本システムの設計段階で色々と

用意しておく必要が背があります。

 

 ゲームの中でキャラクターはNPCである敵やらも中立な何

かもプ永ヤーキャラも動かすことになるのですが、これとは

別に、その挙動によって何が発生するかと言うゲームシステム

の設計も同時に必要で、それがアクションゲームとRPGとSLG

RPGなどでは結構異なる訳です。

 

 とりあえず、ゲームを作る場合、自分が操作するもの以外も

作る必要があるのですが、その条件っかで、その振る舞いをど

ういったものにするのかをか投げる必要があり、その内容も、

ある程度条件によって分岐して振る舞いが変わるような当たり

前の挙動を実装する事になります。その為、そうした内容を考

える場合には、何をどうするものであって、どういう条件で何

をするのかを個別のキャラについて想定しそれを実装する事に

なります。

 

 基本となる動きはそれになりますが、あくまでもゲームシ

ステムがないであるかでその古会や挙動は変わるので、初期

段階で何をするのかを企画書を書いて市整理してそのうえで

どう動かすかのアドを考えないと最初に頓挫してしまう事に

なります。

 

 とりあえず、キャラクターのセットアップの中に、モーショ

ンの構築と言う作業があり、ドット絵だとアニメーションパター

ンの制作で、リ銀ぐとウェイト調整斧割ったオブジェクトだと、

リターゲットによるモーションの実装が出来るのですが、これ

はキャラの動きの話になります、つまり、その動きで何を基準

移動動くのか?と言うアルゴリズムについてはグラフィックの変

化や動きとは別の部分になるんド絵全く別のものになります。

 

 とりあえず、UnityやUnrealEngineを使うとしてもこうした部

分に関しては、ゲームっシステムとバランスも含めて自分で考え

る部分なので、コーディングの場合にはいつようになるという物

ではなく、【 作る場合には当たり前に必要になる内容 】だと

言えます。

 

 アクションゲームでも振る舞いと言うのは複数あって、ガンダ

ムブレーカーでも

 

 ■ 寄ってくるキャラ

 

 ■ 遠方から強烈なビームを打ってきて、とにかく

   距離置いてダメージを与えに来るキャラ

 

が居て、それが前線でバーバリアンライクに武器で大暴れする

何かとと後方支援のスナイパーのような二者が居ます。つまり、

これもキャラの色訳なんですが、こうした振る舞いと言うのも

そのキャラの特性に合わせた思考ルーチンが実装されていると

いう話になります。

 

 当然そうしたキャラも近距離に穴ると近距離攻撃に切り替え

るのですが、ゲームによって特性や振る舞いがとこなるキャラ

と言うのは複数いますから、そうした意味のある動きをするも

のをどういう条件で動かせばそれになるのかを考える事も重要

になります。

 

 この辺りも、トップビュート財布度ビューだと振る舞いが変

わりますし、視点だけでなくゲームでキャラの取り扱いなども

変わってくる(SLGでは、ジャンプするなどのアクションはない

ので、そうした部分はアクション性のある物しかないので、アル

ゴリズムを考えるとしても振る舞いが全く違ってくる)のですが、

ゲームに合わせてそうしたモノを実装する作業が何を作る場合

においても必要になってきます。

 

 とりあえず、キャラを用意してリターゲットしてコントロー

ラーで動かすと言う部分までだと、そんなに難しくないのですが、

 

 ■ ゲームシステムの設計

 ■ 敵のアルゴリズムの構築

 

となると、いきなりハードルが上がってきます。w

 

 その為、こうした処理はキーでキャラが動くとかいうのより

も複雑な処理を有するため、実際にゲームの部分でいうと、こ

の辺りの作業も含めてそれという事になります。

 

 その為、何をすればそうなるのかを考える作業と言うのが、

個人でゲームエンジンを使って何かを作る場合でも当たり前に

発生するのと、作る段階だとそれの邦画多いような気がします。w

 

 とりあえず、モーションとアルゴリズムは別物なので、モー

ションのようなアニメーションパターンの構築は絶対に必要で

すが、その動きをしながらどう動かすのかと言う思考ルーチン

やAIの部分は自分でどうするかを考えて実装する事になるわけ

です。

 

 その為、その処理はどういうアルゴリズムであればいいのか?

を考えて、それを組み立てて行う必要があるわけです。

 

 プログラミングと言うのもOOという物を作る上において、ど

ういう処理をするモジュールの構造物でどういった処理をさせれ

ば、そのモジュールの構造が完成して、それをどう連結させて動

かせばいいのか?を考えて組み立てるのがソレになるので、完成

品がゲームと言う構造物であるだけで、その処理はプログラミン

グされたソースコードによって記述された構造物ですから、考え

方は全く同じです。

 

 


最新の画像もっと見る