3D Game Kit Liteによる学習~その6
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第6弾。以下のリソースを元にまとめています。
今回のお題はチェックポイント。昨今のゲームデザインは優しくも難しいリトライで突破してゆく手法が流行だ。この仕組みを今回は取り上げて実装してみる。まずは概要だがCheckPointとなるColliderが配置されたエリアを指定し、そこにEllenが到達すると何らかのUIが示されるという流れだ。
- Prefabs>Utilitiesと辿りCheckPointをSceneに追加する
- CheckPointのLayerはCheckpointoに変えておいてくれ。さらにBoxColliderの大きさを適当に小さくすると良いが、次に行うCrystalに合わせるので後からでも良い。
- CheckPointには見える実態が無いのでPrefabs>InteractiblesからCrystalを近くに配置。CheckPointCrystalと名前を変えておこう。
- CheckPointとCheckPointCrystalを同時に選択する。やり方は覚えてるかな?Ctrlキーを押しながら2つ順番にClickすればOKだ。
- 2つ選択状態でAddComponentからSend On Trigger Enterスクリプトを追加する。
- まずCheckPointの設定は以下を参考に。LayerにPlayer指定を忘れずに!
- CheckPointCrystal側の設定は特に必要ないが、GameCommandReceiverにCheckpoint(Send on Trigger Enter)が追加されているのを確認する事。
- あとはRunテストでEllenがCrystalに達したら点灯すればOKだ。
なおCheckPointCrystal側にSend On Trigger Enterは不要なんぢゃないの?と思われるかもだが、両者の間にリンク関係を成立させるために必要であるし、なんならCheckPointCrystalからさらに別のオブジェクトへリンクを張るにも必要になる。
次はEllenのHealth回復方法の実装だ。Unity Learnでは章が変わっているのでリンクを張り付けておく。
例によってPrefabs>Interactiblesと辿りHealthCrateをSceneに追加する
Inspectorを見るとOn Enter()時に既に定義がいくつか並んでいるが実際にEllenのHealthを癒す処理は書かれていないのでコレをやってみよう。
さて中段あたりに(None Object)の項目があるのでコレを埋めてゆく事にする。Sceneからドラッグ&ドロップする方法は既に習っているので今回は違う方法を試そう。◎部分がクリック出来るのが解るだろうか?ここをクリックで開く一覧からSceneタブを選び、さらに入力BoxにEllenを打ち込むとリストが絞り込まれてEllenが選択しやすくなる。成功すると以下の状態に変わる。
次にNo Functionとなっている部分を埋めるには、▼ボタンからDamageable>ResetDamegeと辿ると以下の様に設定できるはずだ。
あとはRunテストして動作確認してみてくれたまへ。現在はただの箱であるがちゃとSoundやOpenに相当するEffectまでも実装されている事に気づくかもしれない。Unityはこうして部品を設計しインターフェイスを用意しTestを繰り返す。平行してデザイナーがGraphicデザインを完成させて実際のCrateパーツが仕上がるという分業の一端を垣間見れたのでは無いかな?
今回はこれまで!
3D Game Kit Liteによる学習~その5
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第5弾。以下のリソースを元にまとめています。
今回のテーマはEnemie。3Dアクションならば敵が居なくちゃ始まらないし、Unityではこれらもコンポーネントとして上手く設計されているので使い方を覚えよう。まずいつものPrefabs>Charactersフォルダを探すとEllen以外にEnemiesフォルダが用意されている。それぞれ
- Chomper:近接型の敵でEllenを探知すると向かって来て近接攻撃を行う。
- Spitter:遠隔型の敵でEllenを探知すると遠距離から酸を吹きかけてくる。Ellenが近づくと距離を取ります。
それぞれのEnemieに基本的なふるまい=Behaviorスクリプト、ダメージ設=Damageableスクリプトで敵の挙動を設定できるのでそれぞれ学習を行う事にする。
Behaviorスクリプト
Chomper&Spitterにそれぞれ用意されており、重要なのはPlayer Scanner部分。▲部分をクリックすると詳細が表示されるので内容を確認して欲しい。
- Hight Offset:感知センサーの眼の高さ。
- Detection Radius:Ellenを感知する距離。青いゾーンの大きさで表示される。
- Detection Angle:Ellenを感知する円の角度。青いゾーンの角度で表示される。
- Max Height Difference:
- View Block Layer Mask:
個別要素として
- ChomperにはTime to Stop Pursuit:追尾をやめる時間
- SpitterにはFleeing Distance:Ellenとの間に取る距離
が用意されています。赤いゾーンは次のDamageableスクリプトの設定で変化します。
Damageableスクリプト
Max Hit Points:Enemieの体力。
Invulnerability Time:無敵時間
Hit Angle:攻撃範囲角度
Hit Forward Rotation:攻撃回転数
基本設定の説明は以上としてそれぞれ実際にステージに配置した後の微調整をまとめます。まずはChomperから。
- ChomperをPrefabs>Characters>EnemiesからScneneへドロップ
- Chomper Behaviorスクリプト内のDetection Radiusを4に指定して青いゾーンが小さくなる事を確認する。これはChomperのEllenを探知する範囲を示す。
- Detection Angleを90に調整すると青いゾーンは更に狭い範囲を示す、これはChomperの探知角度=死角を指定する設定だ。
- Runテストをしてみよう。おや?探知範囲に入ると反応はしているようだが?
ここで新しい課題。UnityではNavMeshと総称されるいわばEnemie用のAIナビゲータ機能が用意されている。たとえば巡回ルートを設定したり、探査する範囲を指定したりと言う機能だ。詳細な説明は割愛するがChomper本体には既にNavMeshコンポーネントが設定されているのが確認できる。ここで不足しているのは歩きまわる範囲を指定するPlaneオブジェクトへのNavMesh指定不足だ。やってみよう。
- HieracheyからPlaneを選択する
- AddComponentでNavMeshSurfaceを追加する
- 追加されたNavMeshSurfaceのInspectorからAgent TypeにChomperを指定する
- Include LayersをいったんNothingにしてから、再度Enviromentを指定する
- 上記設定が確認できたら最後にBakeをクリックで完了だ
最後にBakeを忘れずに!このBakeであるが言葉通りに焼き付けを指示する行為。NavMeshSurfaceが提供するサービスをPlaneオブジェクトに焼き付ける=実行時には読まれるだけで可変する事のないパラメータとして決定するということだ。言い換えれば
※Sceneに新たにObjectが配置されたり、あるいは移動させたりしたら再度Bakeしないと正しいNavMesh行動が再現できない!
ということだ。覚えておいてほしい。
またこのBakeのタイミングでEnemieに内包されるNavMeshコンポーネントが歩ける範囲をPlane上に認識し、前回は追いかけてこれなかった状態が改善されているはずだ。Runして確かめてみてくれたまへ。
なおNavMeshSurfaceはNavMeshコンポーネントに含まれるサービスの一つで詳細は以下GitHubを参照されたい。
同様にしてSpitterを追加してみよう。
- SpitterをPrefabs>Characters>EnemiesからScneneへドロップ。
- Spitter Behaviorスクリプト内のDetection Radiusを6に指定して青いゾーンが小さくなる事を確認する。これはSpitterのEllenを探知する範囲を示す。
- Detection Angleを270に調整すると青いゾーンSpitterの背後に死角が出来る事を示す。
- Fleeing Distanceに4を設定する。これはEllenがこれ以上近づいたら離れる判断をする距離の指定だ。
- 最後にView Block LayerにEnviromentが指定されている事を確認して欲しい。
- Runテストをしてみよう。距離を取って酸を吐いてくる行動と、近づき過ぎると逃げ出す事が確認できたかい?
Spitterは遠隔型なのでパラメータの調整が少し複雑なのが解るだろうか。背後に死角を作った事により逃げ出した後にはバックを晒しだしてしまうので優し過ぎる設定かもしれない。この辺りの匙加減はゲームチューニングの醍醐味だ。色々試してみて欲しい。
3D Game Kit Liteによる学習~その4
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第4弾。以下のリソースを元にまとめています。
さて今回は少しUI=User Interfaceに触れる。前回HugeDoorを3つのSwitchを全てOnにしないと開かないような仕掛けを用意してみた。これをゲームUI的に考えるのであれば
- ドアには何らかのインジケータを用意してどこまでSwitchが押されているか示す
- Switchは設定が済んだならばステージのあちこちに分散させて謎解きの要素を加味する
と言った具合だ。今回はこの例の一つとして実習を行った例を以下に示す。
- PrefabからCrystalを探してSceneにドロップする。
- Crystalをひとつ選択した状態でCtrl+Dキーを2回押す。HieracheyにCrystalが2個追加されているのが確認出来るかい?これはDuplicateと呼ばれる機能のショートカットだ。
- 見やすい様に3つのCrystalの位置をずらしたらDoorHugeの近く、あるいは正面上あたりに移動してほしい。
- Switchを一つ選択しAdd ComponentからSend On Trugger Enterスクリプトを追加してほしい。そしてそのスクリプトに含まれるInteractive TypeにはActiveを、Interactive ObjectにはCrystalの一つを。One Shotにチェックを入れて、LayerにはPlayerを指定する。
- これを3回繰り返して3つのSwitchそれぞれとCrystalに白い線が結ばれたら完成だ。
- あとはSwitchを適当に散らして配置して上手くCrystalインジケータが表示されるか?またちゃんとドアは開くかを確認して欲しい。
さてUnity Learnに於いてはひとつ課題を進めて以下のまとめも続いてやってしまおう。
例えば前回Switch3つで開くドアを用意したが、そのままでは少々不親切かもしれない。謎解きとしては優しい部類であるけれども、チュートリアルと考えるならば何らかの案内があってしかるべきだろう。今回はそんな一般的にはTickerと呼ばれるゲームUIに関する実習だ。
- Prefabs>InteractablesからInfoZoneをScendにドロップする
- HieracheyのUIセクション下にあるのが望ましいがその子供にしてはダメだよ?
- InfoZoneにはSphereColliderが設定されている。これをどの様に使うかと言えばEllenが指定した範囲に入った時にDialogを表示させる目的で使うワケだ。
- なのでInfoZoneを配置する場所はドアの前が望ましいし、Colliderの大きさも大き過ぎずドアの範囲を囲むくらいが良いだろう。
- 念のためにInspectorでLayerにEnviroment、Collider部でIs TriggerにチェックOnとなっている事を確認してくれたまへ。
- 次はPrefabs>UIPrefabsからDialogueCanvasを追加する。HieracheyではInfoZoneの次くらいで良いかな。追加したらInspectorのDialogueCanvas名の直ぐ左にあるチェックボックスを外しておいてくれ。これはダイアログが始めから見えちゃ格好悪いし、これをInfoZoneで操作する前振りと言うことだ。
- InfoZoneを選択したらInteractive On Triggerスクリプトの所にある設定をするのだけれど、例のドラッグ&ドロップ操作を行う(何度も行うから覚えてネ)。OnEnter()とある箇所のNone(Object)に先ほどのDialogueCanvanを指定する。同様にOnExit()のNone(Object)の所にもだ。以下のような図になっていればOK!
- 続けて以下の様にNo Functionだった部分を変更するのだが順に選択してゆけば問題ないはずだ。ただし日本語は文字化けするので英語で。(Unityにおける日本語表示の扱いは少しここから外れるので別の機会に学習してくれたまへ)
- OnEnter()時とOnExit()時にそれぞれ設定が異なるので注意だ。前者ではメッセージ文字列をCanvasに送る設定で、後者はCanvasを1秒まって消す設定だ。
- RunテストでEllenが指定範囲に入るとDialogueが表示され、離れると消えれば完成だ!
以上今回はここまで!
3D Game Kit Liteによる学習~その3
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第3弾。以下のリソースを元にまとめています。
さて前回はUnity内製ツールであるProBuilderとPolyBrushをざっくりと学習。使いこなすのは各自進めるとしてUnity Learnの学習要領を進めてゆく事にする。と言うことで今回のテーマはまずHieracheyの整理整頓。この為だけにAssetストアにはHierachey拡張がある事から機能が貧弱なのが読み取れるかもしれないが、とりあえずある物を有効活用するという意味では
- 空のObjectを追加して適切な名前を付けてラベル仕切りとする
- 同様に付けたラベル毎にObjectを整理して親子関係に落とし込む
この二点だけでもずいぶん違ってくる。今は単純なSceneなので恩恵を感じないだろうが複雑なSceneになるほどこの作業をしておかねばしっちゃかめっちゃかになる事うけあいである。
次のテーマはゲーム境界の設定であるがサンプルがあまり宜しくない。かみ砕いて要約すると以下の通り。
- 空のObjectを追加し、そこにColliderBoxを追加せよ!
- ColliderのEditCollider機能を使ってゲーム境界を作れ!
- また同時にLayerにEnviromentを指定するのを忘れずに!
- Runして確認しろ!
以上の事なのであるが、Ellenが走り回るステージであるPlaneにはTextureも何も指定されていないのでColliderエッジを編集しようにも見づらくて無理ゲー。Ellenの近くに配置して見えない壁が出来るのを確認できたらOKである。
次の課題はUnityを使っていると繰り返し見かける事になるPrefabsとそのInspecter設定の基本を学習する。本当の初心者であるならば一歩づつ確認しつつ進むのが確実であるがまだるっこしい層向けに以下にざっくり概要をまとめておく。
- Prefabsとして用意されたObjectは水色の立方体アイコンが付与されるので区別出来るし、なんなら自分でPrefab化するのもUnityの基本の一つである。
- Hieracheyにて所定のPrefabを選択するとInspectorにはその機能が用意されており、例えばサンプルのMovingPlatformであればStart位置、End位置を指定し、移動パターンを指定してActivateにチェックを入れるとRun時に動き始めると言うインターフェイスである。
- これらのPrefabは特定の機能を実装された結果テンプレート化されたObjectでありC#スクリプトがこの機能を実現する為に利用される。
- Prefabはすなわち元となるインスタンスから生成される子供であり、子供ごとに設定を変える事も出来れば、親を直接変更すればすべて子が書き換わるという性質を持つ。
とまぁこんな所である。Unityをやっていると今後散々と目にする事になるので今はざっくりとした理解で構わない。見た目はショボいがUnityで実装されるコンポーネントの多くがこうして機能とインターフェイスを持ったパーツ集として構築されているのである。
引き続きUnity Learnを進めると今度は異なったコンポーネントの使い方を学ぶ。実はコレはUnityの伝統で徐々にふるまいが複雑さを増して行くというお約束の展開。先ほどのMovingPlatformが単にゲーム中に動くだけの床であるならば、次はインタラクティブな機能を持つコンポーネントでしょうと言うわけで今回もフランク口調で概要をまとめてゆくぜっ!
- PressurePadを使ってみよう!さっき追加したMovingPlatformと連携させるよ!
- MovingPlatformのActivateをPressurePadでコントロールするのでチェックは外しておいてね!
- PressurePadに戻ってInspectorを調べてみるとInteractiveObjectを確認してくれたまへ。そこにHieracheyからMovingPlatformをドラッグして持ってきてドロップする。(クリックしたままにしないとMovingPlatformが選択されちゃうゾ!)
- あとはその他の設定でInteractive TypeがActiveになっていればOKだ!
- RunしてPressurePadに乗って挙動を確認してみて欲しい!
動作を確認できたかな?こういった具合にゲーム内に於いては何かを操作して何かが起きると言った具合にインタラクティブなふるまいをプログラムする機会が多い。これらを簡単にするべく、それぞれのパーツは単純な機能を持たせ、関連性をあらかじめ予期して準備を行ってゆくのが一般的なんだ。じゃあもうひとつ別の例を見てゲームのインタラクティブ性と実際のUnityにおける取り扱いの基本例を示すよ。
- DoorSmallを使ってみよう!まずはPrefabsフォルダからSceneに追加してくれたまへ。
- 次にSwitchを追加だ。先ほどと同じ様にIntreactive ObjectにDorrSmallをドラッグ&ドロップしてみてくれたまへ!
- おっと慌ててRunさせてもダメだよ、今度はInteractive TypeにOpenを指定してくれなくちゃ!どうだいEllenがSwitch近くに行くとDoorSmallがちゃんと開いたかい?
- 白い矢印がSwitchとDoorSmallに結ばれたのが解るかな?こうやってインタラクティブな設定付けがされているObject同士を解りやすくする事も大事なんだ。
- ActiveでなくOpenを指定したのは何故かって?そこは受け取り側の仕様の問題だな。ドアはOpenするものだろう?具体的には3D Game Kit Lite共通の仕様としてインタラクトな操作を指定する場合には適切なタイプの挙動を指定する事で解りやすくする基本方針で設計したからなんだ。Interactive Typeのリストを表示すると用意されたアクションの種類が確認できるはずだ。
さて2つの例を見たが次は応用編だ。ついてこれるかい?例題だ。Switchを3つ用意して3つともOnにしないと開かないDoorHudeを作ってみようか!
- 用意するものはドアとスイッチ3つにCounterをPrefabから追加してくれたまへ!
- まずは今までの応用として設定することはInteractive TypeとInteractive Objectの設定だ。どこに?Counterだ。TypeはOpenだぞ?白い線が接続されている事を確認すべし。
- さて次はSwitchとCounterの設定だ。SwitchそれぞれにInteractive ObjectにはCounterを、Interactive TypeにはOpenを3つ設定すること。これでまた白い線で関係が表示されたならOKだ。
- あとはCounterの仕上げだ。まずはSender部分にSwitch3つが並んでいるかい?ならば仕上げはGameplayCounterスクリプトの中のInteractive TypeがOpenになっていること、TargetCountが3になっている事。そしてSendGaeCommandスクリプトの中のInteractive OnjectがDoorHudeになっていればOKだ。Runテストをしてみて欲しい。
なおこの課題を実行する際にObjectのラベルの付け方がレクチャーされる。HieracheyもそうであるがSceneもごちゃごちゃしがちなのでInspectorの左上から指定できるラベル機能は有用だ。また同様の機能を提供するGizmoの調整も覚えておくと良い。Sceneの上に並んだツールバーのうち一番→側にまとめてあるので開いてみるべし。Sound関係のコンポーネントが付いたObjectにはスピーカーのマークが付与されてデフォルトのままだと邪魔だなぁとか思ったことは無いだろうか。その大きさは3D Iconsのスライダーで大きさを可変できるし、なんならそれぞれのGizmoをまとめて表示On/Off設定するのは全部ここからだ。
今回は少し詰め込み過ぎたかな。続きは次回で!
3D Game Kit Liteによる学習~その2
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第二弾。以下のリソースを元にまとめています。
さて新しいSceneを生成した所まで実施した前回。無事Run出来る所までは確認したがキー操作などは確認していなかったので以下参照。
- Playerはエレン。Unity Tutorialでの由緒ある名前。
- 移動はWASDキー
- JumpはSpaceキー
- 近接攻撃は左クリック
- Viewコントロールはマウス
- 一時停止はESCでオプションUI表示
となっている。Playerアニメは結構凝ったものに仕上がっており、近接攻撃アクションまで実装されているのが確認できる。またステージ外に出ると死亡となりRespawnする処理や実際のオプション周りまで実装されている本格チュートリアル。長い旅になりそうな予感。
さて本編の学習テーマはProBuilder。Unity謹製の3Dモデリングツールで、blenderなどの簡易版と思っておけばよし。Project一覧からPlaneを選択するとInspectorにProbuilderMeshFilterがあるのが確認できる。このツールの使い方の基本を学ぼうと言うのが今回のテーマ。
導入方法はあるのだけれどもそこはここでは割愛。Projectで既に使える設定になっているので以下の方法でまずはお試し。
- ProBuilderMeshFilter内にあるOpen ProBuilderをクリック
- Windowsメニューから『Tools>ProBuilder>ProBuilder Window』をクリック
以下のメニューが表示されればOK!
確認できたProBuilderメニューから『New Shape』の右にある+をクリックします。Shape Toolとラベルが付いた小さなウィンドウが開きましたか?何をしようとしているかと言えばオブジェクトを追加しようというワケなのですが、Unityでは用意されていない形状が用意されているのがProBuilderの特徴。試しにTorus=ドーナツObjectや、Cylinder=円筒Objectに切り替えてみてください。生成オプションは指定した形状によって異なります。設定に問題なければShapeToolメニューの下部にあるBuildをクリックするとSceneにObjectが生成されます。
さてもうひとつ注意点があります。ProBuilderは便利ではありますが、編集モードを理解していないと混乱のもととなります。以下のScene画面中央上部にメニューが増えているのが解りますか?一番左を指定するとProbuilderで生成したObjectの移動モードとなりいつもの移動ゲージが表示されますが、その他のモードだとエッジや面が赤く縁どられる事に気づくでしょうか?これはObjectを変形する際に使われる機能でここでは詳細は説明しません。今はポリゴン編集ツールにはそういう機能が必要だという理解で構いません。
以下ProBuilderの参考ビデオやオンライン公式ドキュメントなどを参考にProBuilderの学習を補足することをお勧めします。
Unity Learnの学習テーマに戻るとお次はPoluBrushのお勉強。こちらはProBuilderの親戚ツールで地形変化などを簡易に行えるツールです。より高機能な専用ツールとしてはTerrainToolがありますがこちらはあくまで簡易編集機能と理解しておけばOK。例えば以下のPolyBrushメニューから左上の山に上下が付与されたアイコンをクリックしてからSceneのPlaneオブジェクトを左クリックしてマウスを動かしてみるとどうなりますか?
平面が盛り上がってくるのが確認できたでしょうか。そうこのツールは平面に対して上昇あるいは加工を施すツールだったわけです(下降はCtrlキー押しながら)。これも同様にチュートリアルビデオやオンライン公式ドキュメントを参考に補足してください。
ここまでをまとめますと
- ProBuilder&PolyBrushと呼ばれるツールが内蔵されており、それぞれオブジェクト(正確にはMesh)を変形加工するツールが用意されている。
- これらのツールで生成されたオブジェクトは標準Unityで扱う立方体や球と異なる取り扱いが必要であり専用の編集モードがあり、オブジェクトの移動ひとつ取っても専用に用意された編集モードを確認しないとひどい目にあう。
- なお通常オブジェクトはいつもの移動、回転ツールなどでモード切替可能なので混乱しないように。
Unity Learnではまだ少し積み残しの課題があるけれどもAcid池をSceneに追加するだけなので割愛する。Planeオブジェクトを掘り下げた位置に配置して大きさと高さを調整してソレっぽく見せるだけである。
と言うわけで今回はここまで!
3D Game Kit Liteによる学習~その1
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
Unity謹製のTutorial Assetがいくつかあるのだけれども、これらを2022年時点の最新エディタで触りつつどんなものなのかまとめて行くシリーズ。こちらは『重いアートやオーディオアセットなしで3Dゲームキットを使用してレベルを作成および設計するためのゲーム開発者のために作成』とあるので、まずはこちらから着手するのがUnity初心者としては妥当であろうと判断した為である。
なお同系統のシリーズに以下があるが、そちらは別枠にてご紹介予定。
と言うわけで以下の手順で初期作業を実施。
- 1.UnityHubにて新規プロジェクトを作成。3D(URP)コアを指定しプロジェクト名は適当に。
- 2.AssetStoreから上記Lite版の方のAssetをOpen Unityするもよし、Unityエディタ側からPackageManagerを開いて探すもよし。探す際にはSignInしている事とMyAssetsから探す事を忘れてはいけない。
- 3.所定のAssetをDownloadしていなければ最初にDownload実施。Importボタンが表示されたらこれをクリック。Upgrade云々聞かれたら粛々とYes選択で処理を進める。
- 4.Import一覧が出てきたらまたImportをクリックする。処理が完了するまで長いが待つべし。Projectに『3DGamekitLite』が生成されていれば仕込は完了だ。
ここまで問題なく出来ていれば初回Runテストに挑みたい所であるが、『3DGamekitLite>Scened』から_TemplateSceneをダブルクリックして走らせてみよう。Consoleに2つほどエラーが出ていたがRun後に消えたようだ。
さていきなりあれこれ触るのも何なので3DGamekitLite直下にあるReadmeを読むとUnity Learnに学習コースが用意されているらしいのでそちらを見てみる事にする。
なるほどメニューから『Kit Tools>Create New Scene』と辿るのが正解であったか。とりあえずテストRunすると問題なく走る様なので、とりあえずの初期段階は突破おめでとうと言うことで続きは別ページにて。
パックマン1980年
古典ゲームのゲームデザイン論的振り返りシリーズ第三弾。
パックマンの初出は1980年5月だそうな。
既にスペースインベーダーでTVゲームと言うのは世間様に認知されていたけれども今みたくゲームセンターがあったワケではなく遊技場(バッティングセンターやボウリング場など)にコーナーが併設されており多くはそこに配置されていた。またアーケードゲームとしてテーブル筐体と縦置き筐体が共存する時代でもある。
またスペースインベーダーが社会問題になる以前から耳の早い人たちは海外での盛り上がりを既に聞き及んでおり、Atali Japanを買収して立ち上がったのが中村製作所。頭文字をとってnamcoと名付けた。namcoはインベーダーの成功は見ていたが欠点も見ていたのでパックマンは入念に企画されたゲームの手触りがある。シンプルだけれどキャッチーなキャラにポップなカラーリング。サウンドも印象に残る出来栄えで広告にも相当予算が掛けられたはず。
さて本作もゲームデザイン的に紐解いてみよう。
- ステージに配置されるキャラパックマンと4匹のゴースト
- ゴーストはそれぞれ性格付けがされており追いかけ型やランダム型など
- ステージには244個のドットとパワー餌が配置
- パックマンがこれらすべて食い尽くすとクリア
- ゴーストに捕まると残機が減って続きからリスタート
- 残機がゼロになったらゲームオーバー
- パワー餌を食べるとゴーストが反転逃亡状態となるが時間制限あり
- 反転逃亡状態のゴーストを捕まえるとボーナス点獲得
- 捕まえられたゴーストは一定時間後にリポップ
- 残機が尽きたらゲームオーバー
- ハイスコアシステムあり
- ラウンド毎に2回フルーツが配置され取るとボーナス点獲得
- ステージは多数のコーナーと左右ワープ等が用意されている
- ゴーストだけが一方通行となるエリアあり
- パックマンはゴーストより若干コーナリング速度が速い
- コーヒーブレイク面あり キャラによる演出がコミカルに描かれる
- 耳に残るBGMと効果音
スペースインベーダーに比べると相当に練り込まれたデザインである事が解る。
またプレイヤー目線で見ると
- ランダム性がなくパターンプレイに持ち込みやすい
- ゴーストに捕まるとダメだが反撃手段もちゃんと用意されている
- レベルデザインが意識されて最終面まできっちりデザインされている
- パーフェクトスコアが達成できるゲーム
- コーヒーブレイクタイムまで入れるサービスっぷり
などとゲームデザイン的にかなり進化が見て取れる。またパックマンが成功したのは北米に進出して大成功を博した理由が大きい。国内よりも北米で盛り上がりMsパックマンが投入されたんだとか。『パックマンは80年代のミッキーマウスに匹敵する』とかしないとか。
まとめると、パックマンはとにかく北米で盛り上がったタイトル。namcoの看板にはなったけれども国内ではそれほど支持されたかと言えば疑問。パックランドも少し早すぎた横スクロールゲームであまり人気が出たとは言えない。スマッシュヒットはメーカーには有難いのだが足枷にもなるという事実がすでに生々しい。
なおnamcoは国内でスマッシュヒットを飛ばして足場を固める中で作られたのがパックマン。初期はギャラクシアン、パックマン、ゼビウス、マッピー、ギャラガにドルアーガの塔と続きスマッシュヒット連発。そのままコンソールゲームにも乗り込み現代バンナムに繋がるのに対して、タイトーは確かに一時代を築いたがアーケードから脱却できなかったメーカーの印象が強い。
今回も最後まで読んでくれた方には感謝を。