■ 一人綴り

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

■ 見える処理と見えない処理

2017年03月02日 | プログラミング

 ソフトウェアと言うのはユーザーが何かをすることで

機能するもの及び、目的が、そうしたユーザーが何かを

するための物である場合と、バッチ処理などのように自

動で動くものがあります。

 

 そして、見えている状態で判断するそれと、実際に動

かす場合の処理が異なる場合があります。

 

 とりあえず、人が操作する条件が存在する物における

操作と処理の際について少し触れておこうかなと思いま

す。

 

 まず。単純な、数値を入力してそれの演算子が出る

特定のの数式を自動処理で行う物を想定した場合、人の

作業は入力のみで、演算子を出す場合において、その

処理をボタンで出すと仮定すると、

 

【 人の作業 】

  ■ 数値の入力

  ■ ボタンのクリック

 

になります。では、この時のプログラムは何をしている

のか?というと、

 

 ■ 入力待ち

 ( 数値の入力がされる )

 ■ 入力された数値をメモリーに格納

 ■ ボタンのクリックによる処理待ち

 (ボタンのクリック)

 ■ 演算処理

 ■ 演算結果の表示

 

になります。簡素な処理でも人の操作と内部処理では

全く異なる物が必要だという事が理解できると思いま

す。

 

 こうした処理ですが、HTMLのマウスアクションでも

同じで、カーソルの状態でも変わってきます。

 

 マウスと言うと

 

 ■ OnClick

 ■ mouseover

 ■ MouseOut

 

の処理がありますが、最初のが、クリックによる処理で

マウスが特定のオブジェクトに重なった場合とそれから

外れた場合の処理がそれになります。

 

 つまり、

 

【 マウスが重なると何かのアクションが発生し、ク

  リックで別のイベントが起きるような構造物の場

  合、操作をしてる人から見た場合、二つの処理し

  か起きていない用のに見える物の実際には、Mou

  seOverイベントとま別にMoseOffのイベントを

  用意してそれ以外の通常時の処理も必要 】

 

になります。

 

 JavaScriptでWEBページをコントロールするような場

合で、リアクション御身を用意する場合、ここに変数は

存在しませんから、そのまま処理しますが、ゲームなど

の場合、数値の変動が発生します。

 

 例えば、RPGなどで、エンカウントをする場合、プレイ

ヤーにはいつエンカウントをするのかと言うタイミングは

全くわかりませんが、その処理は存在しています。

 

 つまり、キー判定でキャラが動いているわけですが、こ

の時にエンカウント判定と言うプレイヤーに解らない変数

が存在し、それの判定を行っています。

 

 つまり、見えている処理と挙動以外の変数の処理が行わ

れているので、プログラムの場合、見えているモノのみと

言う訳ではありません。

 

 これが、RPGの場合、

 

 ■ シナリオ上で存在するフラグ

 ■ 特定の処理をした時の判定

 

においても変数による判定が存在するため、結果的に、キャ

ラの操作とは全く違う処理が当たり前に存在するわけです。

 

 その為、

 

 【 プレイヤーの操作系以外の処理を設計段階で

    用意する必要がある 】

 

事になります。

 

 変数を使うような内容を少し考えてみると、ゲームにおけ

る戦闘シーンなどで考えてみると、キー操作と座標変動だけ

ではどうしようもない物があります。

 

 例えば、戦闘中のメニュー操作ですが、これは、

 

 ■ シンプルな縦移動のメニュー

 ■ アイコンが移動するスタイル

 

などがありますが、この場合の、アイコンと命令の処理と言う

のは、どういう相関関係であれば処理できるでしょうか?

 

 この場合、カーソル移動だけでは条件判定は出来ません。

 

 そうした場合、選択する対象を変数化し、その条件で条件

判定をする方法があります。

 

 例えば、

 

 ■ 物理

 ■ 魔法

 ■ 道具

 ■ 逃げる

 

の選択肢があったとします。この場合、1-4までの数値を選択す

る条件年、その操作に対して、数値変動をレ遠景させるようにす

れば、代入を行う条件は完成します。

 

 1 物理

 2 魔法

 3 道具

 4 逃げる

 

 変数への数値の代入の条件をボタンのアクション及びキー操作

と連動させた場合、カーソル移動中という数値選択時には、変数

は初期値のカーソルの位置に合わせた1になります。

 

 つまり、その条件で、仮にaと言う変数を用意して、1-4の数値

を代入するようにしたとします。それ以降の挙動の選択を、この

変数参照にするわけです。そうなると

 

 

【 ナビゲーションのコントロール用の処理 】

【 変数処理 】

 

の粗油法を用意し、それを動かすことになります。つまり、コマン

ドを選んで、実行すると別のアクションが起きると言うのは、完全

に条件式ですが、内容的にはSelectCaseのようなものになります。

 

 つまり、縦に並んだメニューの場合、カーソルのコントロールは

縦の座標移動のみになります。

 

 ゲームエンジンではコリジョン判定で接触をさせると言う条件や

マウス主体のナビゲーションの場合、処理が異なるのですが、そう

ではなく、キー操作やコントローラーの操作の場合、変数で制御し

なければ、その移動した条件とその見えている、プレイヤーの条件

と、処理におけるその状態の際の検知が出来ません。

 

 こうした場合、何かしらの変数参照をしてそれを対象にしていく必

要が出てきます。そうした変数を使わない場合、座標の数値を利用

するなどの方法もあるのですが、管理しにくいので、変数制御をした

ほうが効率的だと言えます。

 

 コーディングでモノを作る場合、当たり前ですが、コリジョンと言

う概念が使えない場合が多いので、接触判定ではなく、そうしたモ

ノは、変数で処理する事になります。つまり、上記の条件だと、この状態で

 

 

【 メニュー呼び出し 】

【 メニュー選択 】

   ■ 選択1 

   ■ 選択2

   ■ 選択3

   ■ 選択4

 

 

と言う条件分岐が発生します。つまり、処理の前の段階で

こうしたモノが出来上がります。つまり、これをテキスト

で動かすのか、もっしくは、円形のUIを表示させて、回

転させるか、表示を変更させるかなどのUIデザインの違い

が発生する場合、処理をする上でラジアンを使う事になっ

たり、変数に該当する条件判定で、表示を変更するなどの

の表示のコントロールをすることも可能になります。しか

し、こうした処理方法は個別に設定されているとしてもプ

レイヤーからは見えません。

  

 そして、先頭に関しての挙動も、どう要った振る舞いに

するのか?で変わってきますが、これがドラクエのような

ものだと、素手を前提にすると、

 

 ■ 敵へのダメージの計算

 ■ 攻撃時のアニメーション

 ■ 敵HP-ダメージ

 ■ 自分へのダメージ計算

 ■ 攻撃時のアニメーション

 ■ 自分のHP-ダメージ

 

と言う処理が発生します。しかし、これは1度ループしたの

ちにコマンド選択になります。

 

 つまり、【 ターンの概念を入れておく 】必要があるの

でこれも変数で処理させたほうが都合がよくなります。

 

 とちあえず、その条件で処理が変わるわけですが、文字の

表記と演算処理ン尾差異だと、魔法と物理の差は参照するパ

ラメーターと表記の違いになります。

 

 逃げる場合はパラメーター参照+乱数で処理させるとして、

条件判定をするとして、その判定での文字の表記と、判定に

よって、先頭の終了処理を入れる事になります。

 

 アイテムの場合には、ウインドウを表示させる必要がある

為、それは異なる訳ですが、最初の三つと異なり、

 

【 アイテムの選択 】

 

が発生します。つまり、これもメニューの構成がどうなっ

ているかで変わるわけですが、多くの場合、画像表記にし

てもテキスト表記にしてもリスト型になっています。その

為、ここでも、戦闘メニューの選択のような処理が発生し

ます。

 

 当然、これは、変数の設定がアイテム単位になるので、

通常はデータべ-スで管理して処理する事になります。つ

まり、【 アイテム名:数量 】と言う型式のモノを複数

管理することになるので、この場合、データベースと同様

 

1:アイテム名:数量

2:アイテム名:数量

 

のように、番号管理をすることになります。これをどうレイ

アウトするのか?も含めて考える事になります。

 

 つまり、アイテム数で管理する事で、選択においての状況

変化を与える事が可能になります。

 

 以前書きましたが、このアイテムの変数をIとした場合、

 

 ”名称”+ i +"png"

 

などで画像を呼び出せますが、画像をアイテムとの関連付けを

する場合にはそうした手法を使う事もできます。

 

 とりあえず、戦闘シーンにおいて文字だけで処理するにして

も、アイテムの項目があれば、別途メニューのUIと処理を考

える必要があります。

 

 つまり、戦闘シーンにおいて、キャラクターモーションなど

を追加して処理をする場合には、別途、そのモーションの呼び

出しをする必要性が出てきます。つまり、物理にしても魔法に

しても、その発生処理の後の振る舞いを構築する必要性が出て

きます。

 

 この戦闘シーンと言うのが、メインのマップ上での処理とは

異なる処理ですから、エンカウント処理の後のものとなります。

 

 つまり、そうしたシステムを作る必要性があるのですが、こ

うした処理もバックグラウンドでの処理は、プレイヤー側では

見えて居ません。

 

 数値の増減ですが、変数の推移と同じなんですが、これは外

部のデータベースや変数の山を用意してそれを変更して調整す

る事になる訳ですが、これはメニュー処理よりも多くの数値の

処理が発生します。つまり、この場合、用意したアイテム数分

だけ選択が発生します。

 

 これと類似するのが、魔法の数を複数増やした場合や、魔道と

統僧侶系で異なる呪文形態を作った場合になります。

 

 つまり、属性で種類を増やした場合、アイテムの処理と同様に

データベースで管理する事になります。

 

 しかし、アイテムにしても前述の魔法にしても、LVと言う変数

で覚えている魔法に差があったり、所有していないアイテムは表

示されないなどの処理が入ります。そうなると、

 

 ■ 数値による表示の変更

 ■ 選択する変数の上限の変更

 

などが発生します。テキスト表記の場合でもこうした処理が発生

しますが、アイテム管理システムや魔法管理システムと言うのは

ゲームで異なりますが、ディアブロのようなアイテムグリッドが

存在しており、アイテムのサイズがあり、配置の方法がそのサイ

ズに見合わない場合のは配置不能などの仕様だとこの場合、何も

ない場所とアイテムの配置された場所の検知の必要が出てきます。

そのうえで0の条件でその形状が埋まると言う内容が成立した場

合のみ配置可能になるので、SLGなどの移動範囲のような解析が

必要になります。

 

 しあkし、その条件判定処理については、ゲーム中にプレイヤー

では何をしてるのか全く分かりませんが、それを用意しないと機能

はしません。

 

 こうしたリスト処理と、データの管理については、RPGやSLG

では恐ろしい量になるので、単独の変数で用意すするのではな

くデータベースを制作して、データ参照で処理する事になります。

 

 内容ですが、武器の装備とパラメーター変化や、表示の変更な

ども変数参照をすれば、管理しやすくなります。

 

 その為、マップ移動遺体の処理のキャラクターのパラメーター

と戦闘とアイテム管理などに関してもプレイヤーが見えてない部

分での処理が存在しています。

 

 そうした呼び出しも内部のグローバル変数やローカル変数の呼

び出しとは異なる処理で大丈夫な変数の絶対数が少ない物だと異

なるのですが、データベース参照だと処理が少し変わってきます。

 

 基本的にゲームの部分的な部分だけを見ても見える処理とそう

でない部分がっ存在しています。

 

 

 

 

 

 

 

 

 


最新の画像もっと見る