製作秘話
■製作秘話
お暇でしたら
今回のレベル製作で感じたことを製作順にメモ代わりにいくつか書いておきます。
レベル製作の一助になれば幸いです。
今回の製作秘話は製作時からかなり時間が経過しているため曖昧な点がいくつかあります。
文中に登場するAはACTIONトリガ、FはFLIPEFFECTトリガ、CはCONDITIONトリガの略です。
■製作当初:
大まかな指針。
今回のプレイ時間の目安はシークレットなしで1時間としました。
そしてやり応えのあるものにするため、難易度も全体的に高めとしました。
シークレットはこれまで通り3つです。
使っていないオブジェクトや曲を使う。
これまで多くのレベルを作成してきましたが、それでも使っていないオブジェクトがいくつかありました。
それを今回使ってみることにしました。
SENTRY_GUN、AMBER_LIGHT、RED_LIGHTの使用を決定したため、自然とBase系のレベルになりました。
無理やり使用しているオブジェクトもありますが、結果的に今回のレベルでTRLEにあるオブジェクトは全て使ったことになります。
曲に関しては、ララの声が入っているものをそのまま使うことができず、未使用の曲がいくつか残ってしまいました。
レベルの流れ。
- 序盤はHAMMERHEADを出現させるため、海から始まる。上陸して建物内に入る。
- ハーブを使う。警報が鳴り、AMBER_LIGHT、RED_LIGHT、透明の敵(BADDY_1)を使う。 火に油を注ぐ。の課題をクリア
- 円盤上の回転するダイヤルを床に表示。TR6のような鍵を表現する。
- 貨物室でWILD_BOAR出現。倒す。貨物を使ったパズル(TR5のような感じでもいい。)ダストシュートでゴミ圧縮機。スプリングボードでそこを抜ける?
- SENTRY_GUNの部屋を抜ける。
- その後、ENEMY_JEEP、SMASHABLE_BIKE_FLOOR、JEEPを屋外で使う。
おおまかにはこの6つ。
しかし製作しているうち、この指針は変更していくことになりました。
NGLEの使用。
当初は青の吟遊詩人さんのShima128Jをそのまま使うつもりで作成していました。
壁の分割を行っているうちにレベルがクラッシュ。
仕方なくTRLEでの作成を止め、NGLEで作成することにしました。
今度は亀を模した島を作成していたのですが、これはOverlapやBoxが大きくなりすぎて断念。
次にエイを模した島を作成してみましたが、これも断念。
結果現行のような形に落ち着きました。
とりあえずNGLEを使って上記6つの部屋を作ってプレイ時間やマップの広さの限界などを調べてみることとしました。
プレイした所20分足らず。プレイ時間が足りません。
そこでNGLEで何か出来ないか、調べてみることにしました。
ただし初NGLEという事で、Pluginは使用しないことにしました。
NGLEと格闘。
初NGLEという事で、調べるのにかなり時間がかかりました。
またNGLEではTRLEよりも多くの頂点数を扱う事ができるため、より緻密なオブジェクトも作成してみました。
オブジェクトを作成しているうち、テクスチャも緻密に作りたくなり、v49プロジェクトからv50プロジェクトに変更しました。
螺旋階段の作成。
NGLEを使うという事で以前から作ってみたかった螺旋階段を再現することにしました。
■製作中盤:
FONT_GRAPHICS。
NGLEでは文字のフォントを変更できるのでやってみました。
NASAが使っているようなフォントがダウンロードできたので、それを使っています。
FONT_GRAPHICSのテクスチャが126x126という中途半端なサイズのため、他のテクスチャと隣合わせになることがあり、「y」か「p」には下に下線がついたようになることがあります。
これはコンバートする際にテクスチャの位置が変更されるためで、修正しようがないのでそのままにしています。
HORIZON。
海上にある孤島というイメージでHORIZONオブジェクトをTRSearch.orgからダウンロードして使用しています。
当初はHORIZONオブジェクトのテクスチャのサイズが大きすぎてレベルがクラッシュ。
まだテクスチャを使う予定があったという事もあり、HORIZONオブジェクトのテクスチャはサイズを変更しています。
Distance Fogと視界限界。
最初の島は屋外なので、視界限界によって、おかしな事になります。
そこでDistance FogとF159番で調整しました。
Distance Fogは色の指定が限られるので、自分で納得のいくものを使いました。
屋内は敢えて少し暗めになるようにDistance Fogを設定しています。
というのもBase系のレベルはどれもグレーの無機質な明るい部屋しか登場してこないからです。
完成間近になって少し暗い感じがしたので、部屋自体の明るさを変更したり、照明を設置したりしました。
屋外から屋内に入る際、Distance Fogが切り替わります。
それが露骨すぎるので、何かないかと試案していた所、霧をStaticで再現しているレベルに遭遇。
それを参考に、Distance Fogが切り替わる地点には霧のStaticを配置してあります。
監視カメラ。
監視カメラはもっと後半に登場する予定だったのですが、最初にあった方が自然と考え、最初に持ってきました。
画面がフライバイカメラのように上下が黒くなっていますが、通常のカメラをA41番、A42番で呼び、F369番でエフェクトをかけているからです。
またカメラが左右に移動するのはA42番のカメラターゲットがF167番で移動しているからです。
A41番、A42番を使うと画面にエラーが表示されることがありますが、これはララがA41、A42を呼ぶトリガの上に居続けると発生するようです。SWITCHでトリガを機能させると上手くいくようです。
ガス室。
ガス室は当初予定になかったのですが、プレイ時間を増やすため監視カメラと抱き合わせて設置しました。
ガス室の色の変化はDistance Fogを使い、Damageルームの機能を使ってダメージを再現しています。
エレベーター。
Base系レベルを作る事にしたので、エレベーターを設置してみました。
エレベーターはかなり後半になって作成したため、水面とオーバーラップするような箇所にあると、エレベーター内で水の泡のエフェクトが発生してしまいます。
そのため既存の部屋の高さを変更する作業が発生しました。
壁はよじ登れないようにしています。というのもエレベーターが意味をなさなくなるためです。
ヨーヨーモードやストップアンドゴウモードでエレベーターを動作させてもよかったのですが、キーパッドが使いたかったのでダミーのANIMATINGを使ったタイプにしました。
ところが地下1階が3階になるのはおかしい。という指摘からSWITCHオブジェクトを使ったものに変更しました。
するとララがエレベーターで移動中にダメージを受ける。という意味不明なバグに遭遇。
そこで、キーパッドを各階に設置。
ElevatorコマンドのEF_SINGLE_DOORをEF_MULTI_DOORSにしてドアも各階に設置する形にしました。
その後の指摘でキーパッドが使いにくいという指摘があり、元のエレベーターと連動する形に戻しました。
この際梯子をララがつかんでいると、エレベーターと連動して動く。というこれまた意味不明なバグに遭遇。
ドアを各階に設置するため部屋を分割したのが功を奏したのか、直接の原因はわからないのですが、意味不明なバグが発生しなくなったので、エレベーターと連動する形にしました。
FLOOR_TRAPDOOR。
NGLEでは足場のコリジョンを色々変更できるので、TR5のマンホールを再現しようとFLOOR_TRAPDOORを使ってみました。
ですがBase系のレベルでマンホールは変な感じがしたため、通常の四角の出入口にしました。
B2階と送風機。
送風機は当初はなかった仕掛けです。時間稼ぎで追加しました。
バーティカルトリガを使ってララの邪魔をしています。
B2階の通路の距離がいびつなのは、送風機の部屋に近くのトラップの光がもれてしまうのを防ぐためです。
B2階の送風機の部屋で中央の柱が一時表示されないことがありますが、これは部屋を上下に分割しているためです。
分割しないで作成するとTRAPDOORが使えなくなってしまいます。RAISING_BLOCK1やEXPANDING_PLATFORMだと足場が三角形になってしまうので断念しました。
ダイヤルパズル。
当初はTR6のように床にパズルを表示させ、パズルがそろうと、地下に通路が現れる。という仕掛けを再現するはずでした。
ですがTR6のままでは芸がなく、コリジョンの問題もあり床にダイヤルパズルを設置できません。
そこでAddEffectコマンドを使って光を点灯させる仕掛けにしました。
実際にやってみると色の違いがわかりにくかった(特に赤と紫)ので、現状のような回転式のパズルに変更しました。
ダイヤルを操作するパネルにはキーパッドも考えてみましたが、TR6のような仕掛けを目指していたため没としました。
ランニングスイッチ。
当初はPUSHABLEだらけの部屋でしたが、それをもっと後に移動させたため、急遽作った仕掛けです。
Animationコマンドを使ってアクションキーを押すと走るアニメーションを表示させ、滑車を回転、ドアを開くようにしています。
ベンチプレスのコリジョンはBRIGDE_FLATをつかったコリジョンで再現しています。
プール。
当初はなかった仕掛けです。時間稼ぎで追加しました。
足場はBRIGDE_FLATをつかったコリジョンで再現しています。外の熱帯魚はFISH EMITTERが泳いでいます。
ここは深海に出ることも考えたのですが、ララの衣装が上手く変更できないため断念しました。
熱帯魚も深海を泳いでいるようにしたかったのですが、OverlapやBoxが増えたため断念しました。
スライディングフロア。
スライディングフロアは当初BRIGDE_FLATを使ったものだったのですが、F134番でも同様なことが可能なため、そちらを採用しました。
逆に上部にある通路をBRIGDE_FLATで構築しようとしましたが、F134番の影響がでてしまうため没としました。
そのためかなり部屋数が増大しました。
レーザースイーパー。
Base系のレベルではお約束なので登場させました。赤く光るのはAddEffectコマンドがあるからです。
ハープ。
この部屋にある楽器はUVマッピングを使って作成してみました。
UVマッピングは仕上がりが綺麗なのですが作成に時間がかかるため、余程のことがない限り使わないかもしれません。
AMBER_LIGHT、RED_LIGHTを使って警報を再現しています。
機雷。
当初はなかった仕掛けです。時間稼ぎで追加しました。
StaticのOCBに128を入力しています。
透明の敵。
透明の敵を登場させたくて、これまで使用していないBADDY_1を使いました。
ロボットにするか、半魚人のようにするか、悩んだのですが、ロボットが透明なのも変な感じがしたので半魚人にしてあります。
といっても透明なのでよくわかりませんが。
NGLEでもUNDERWATER_DOORの音を追加すると、発砲の際、変な音がするようです。
最初のシークレット。
足場はBRIGDE_FLATをつかったコリジョンで再現しています。
最初は同じジャンプを3回行う予定だったのですが、単調に感じたので、途中トラップを追加しました。
梯子からモンキースイングにうつるのはフォーラムのアニメーションを流用しています。
近くの木々はBase系に木々があってもいいだろう。という思いからです。深い意味はありません。
シークレットがPUZZLE_ITEM6なのはPUZZLE_ITEM5ではSENTRY_GUNがララを敵とみなさないようになるためです。
TRLEの頃からあるバグのようです。
磁石。
プレイしたレベルでララに武器を持たせないことができると知り、それを再現したくて追加しました。
当初はA32を使いララを壁近くに吸い寄せる形だったのですが、いきなりゲームオーバーになってしまうのが不評だったため、ANIMATINGオブジェクトを使ってカットシーンで表現することにしました。
カットシーンで走っているララはANIMATINGです。その間ララは磁石の部屋の入口でじっとしています。
その際フライバイを使うとGAME OVERの文字が画面に表示されません。
そこでフライバイ表示終了後に、文字を画面に表示させるようにしました。
するとララのいた位置にカメラが戻ってしまいます。それも変なので、LARAオブジェクトを透明にして入口から移動させることにしました。
WILD_BOAR。
かなり早くから想定していたメカイノシシ。
ロボットに4本足は必要ないだろうと、タイヤをつけ、バイクのように走りまわる感じになっています。
当初は、いくらララが攻撃しても倒せない敵で、天井で圧爆するしか退治方法がありませんでした。
ララを非武装にしたことで天井の圧爆が際立っていたのですが、メカイノシシは磁石の部屋に入ると磁石に吸い寄せられるだけでした。
磁石への吸い寄せはA32で再現していました。しかしA32を使っても、その内メカイノシシは磁石の部屋を脱出してしまいます。
それではマズイので、カットシーンを使い強制的に磁石に吸いついてもらうことにしました。
カットシーンで走っているのはANIMATINGです。その間にWILD_BOARを非表示にして強制的に退治しています。
AddEffectコマンドで追加した煙がカットシーン終了後、メカイノシシのいた場所に残ってしまうので、退治する前に強制的に移動させています。
部屋の中の水路。
部屋の中に水路があるため、部屋を細かく分割してあります。
その影響で、コンテナが表示されたり、されなかったりしていました。
一つの部屋で作成できないかとも考えました。
技術的にはコリジョンパネルで水路を再現し、水の部屋とドライの部屋とをFLIPEFFECTトリガで切り替えるだけで可能ではあります。
ただしこの大幅な修正は、かなりリスクを伴うためそのままにしてあります。
また水路の外側を一つの部屋で作成しても、オブジェクトが表示されたりされなかったりするのは、運次第な所もあるので止めておきました。
コンテナの自動移動。
このレベルのメインとも言える仕掛けです。当初からこれが再現できるかどうかかなり試行錯誤しました。
最初は屋外でコンテナを押し、下に落とし、それを自動移動させていました。自動移動には変数を利用してPUSHABLEを制御していました。
しかしPUSHABLEが角を曲がる際、スイッチを押すタイミングによっては上手く動作していませんでした。(微妙に角より速くか遅くに曲がってしまう。)
そこでF256でPUSHABLEのX座標を取得し、その座標を条件としたヘビートリガとトリガトリガラでPUSHABLEの曲がりを再現しました。
確実に角を曲がれるようになりましたが、別の問題が発生しました。
PUSHABLEにはコードビットを全て押した状態のものでないと、ヘビートリガが機能しないのです。
(実はNEF_EASY_HEAVY_ENABLINGやFMOV_HEAVY_ALLで可能。コードビットは関係ありません。それを知ったのはずっと後。)
逆に屋外にあるPUSHABLEのコードビットを全て押してしまうとララが押す/引くが出来なくなり、最初の仕掛けが再現できません。
そこで屋外のPUSHABLEと自動移動のPUSHABLEを別のものにすることにしました。
しばらくして更なる問題が発生。
PUSHABLEを自動移動させる前に別のPUSHABLEを押したり、引いたりすると、PUSHABLEが角を曲がらなくなったのです。
原因は不明です。おそらくコードビットでしょう。
そこで以前の変数を利用した方法に戻すこととしました。
本来は移動中のPUSHABLEの上に乗る筈でしたが、PUSHABLEに押しつぶされると簡単に上に上がれるため没とし、PUSHABLEの使用は止めANIMATINGでコンテナを再現することにし、TRAPDOORの開閉で上に上がれるよう変更しました。
そこで、また以前のヘビートリガを利用した方法に戻すことにしました。
これにより、微妙に角より速くか遅くに曲がってしまう問題は解決しました。
コンテナだらけの部屋。
当初はB3階にありました。後にPUSHABLEの自動移動と同じ部屋に移動しました。その方が部屋のつながりとして自然なためです。
ローラー車。
当初は直進しただけで上にあがれたのですが、簡単すぎるということで、現状のような形になりました。
このトラップのタイミングは早すぎると即死トラップになり、遅すぎるとダメージなしになってしまいます。
ですが即死トラップではクリアできないため、現状のような形にしました。
F89でダメージを変更することも可能ですが、同じようになると思われます。
燃料投下の部屋。
燃料投下の部屋をB3階に配置しようとすると一連の流れでコンテナの自動移動もB3階に配置する必要が出てくるため現状のようにしました。
スプリングジャンプ。
スプリングジャンプは何度も同じ通路を通るため、効率化の意味で設置しました。もちろん攻略に変化をもたせる意味合いもあります。
モンキースイッチ。
ララがモンキースイングで回転しているアニメーションを見つけたので、それをヒントにモンキースイングの状態で回転する仕掛けを作ってみました。
ランニングスイッチと同じくAnimationコマンドを使ってモンキースイング中にララを回転させています。
どうして製品版で採用されなかったのか、作成してみて、その理由がわかりました。
スイッチを操作した後、アイテムが落下する際、ララを素通りしてしまうのです。
これでは不自然なので、採用されなかったのでしょう。
透明の敵と戦闘。
トラップとパズルばかりで、戦闘が少なすぎるという意見から、透明な敵との戦闘を追加しました。
スライディングフロアのトラップ。
スライディングフロアのトラップは燃料投下の部屋の後にしました。その方が床の燃焼が合理的だからです。同じ理由で2つ目のシークレットも燃料投下の部屋の後にしました。
この仕掛けは他のレベルにはないだろうと思っていたのですが、後に「CoyoteCreek2」で似た仕掛けに遭遇しました。既に作り終えた後だったという事もあり、変更しませんでした。
2つ目のシークレット。
当初ここはシークレットではありませんでした。
一筆書きで崩れる足場を越えていく形の部屋だったのですが、崩れる足場では手詰まりが発生してしまうため削除。代わりに鏡の部屋を設置しました。
しかし鏡の部屋が難しすぎるので、シークレットとしました。
ダイバーとサブマリン。
当初は存在しなかった敵です。戦闘が少なすぎるということで追加しました。
NGLEのサンプルが非常に役立ちました。
結果戦闘が続くことになりました。
LAZER_HEAD。
海底基地ということで、海洋生物を模したデザインに変更しました。
最初はヒョウモンダコだったのですが、あまりに馴染みのない生物でわかりにくいだろうと没にしました。
海洋で巨大生物と言えばクラーケン。そこからイカにしました。
足の数が違うかもしれませんが、そのあたりはいい加減です。
螺旋階段。
当初の予定通り螺旋階段を作成しました。
レベル製作当初からあった部屋のため、部屋が追加になるたび、移動を余儀なくされました。
BRIGDEをつかったコリジョンで再現しています。
時折ララが階段を抜けて下に落ちたり、挙動がおかしくなったりしますが、これ以上修正しようがないので、そのままにしてあります。
ロボットクリーナー。
回転しながら移動するトラップを作りたくて登場させました。
当初は通路を周回するだけでしたが、SENTRY_GUNとの兼ね合いで時間制限トラップとの合わせ技になっています。
後にプラグインで再現できることを知りました。
SENTRY_GUN。
当初の予定通りSENTRY_GUNを登場させました。
当初は攻撃されながら上の部屋に向かう形でしたが、不評だったので現状のような形になっています。
ENEMY_JEEPとバイク。
当初の予定通りENEMY_JEEPを登場させました。
当初はJEEPでENEMY_JEEPを追いかける予定でしたが、JEEPにバグが多いため断念。バイクに変更しました。
バイクはサイドカーでなくてもよいのですが、攻略が簡単になりすぎるので止めておきました。
3つ目のシークレット。
特に難しいアクションはありません。見つける事自体がシークレットです。
ララに新アクションをさせるため海外のフォーラムがかなり役立ちました。
■製作終盤:
スタートとゴール。
当初はスタートとゴールは繋がっていませんでした。視界限界が発生していたからです。
その後、ゴールからスタートが見えた方が自然だろうと、ゴールとスタートをつなげました。視界限界はオブジェクトで視界を遮ることで回避しています。
BGM。
BGMの切り替わりが不自然なため、CUST_NEW_SOUND_ENGINEを使用しました。そのためシークレット音が不自然になりましたが、BGMを優先しました。
オープニング。
オープニングにDemoコマンドを試してみましたが、ボートがマップの配置した位置から始まってしまい、それまで動いていたようにみえないため没とし、かわりにFMVを使うことにしました。
このオープニングはClimb Up The Treeでやりたかったカットシーンだったのですが、やっと念願が叶いました。
テスト版公開。
初NGLEということで、何かとバグがあるかと思いテスト版を何度か公開しました。おかげでカメラを使った演出がかなり増えています。
雑感。
初NGLEという事でかなり大変でした。
テスト用レベルで実際に実現できるか確認してから、レベルに組み込む事の繰り返しでした。
TRLEと違い上限が増えたため、TRLEの頃なら「そろそろ限界かな?」と思う所でも一切トラブルが発生せず、いくらでもオブジェクトが追加出来てしまいます。
Distance Fogの関係で、照明を数多く追加したため、照明などのEffect関係が上限近くになったぐらいです。
そのためいつまでも製作を続ける事ができ、作っているこちらが飽きる形で終了させる。というなんとも変な形で完成です。
TriggerGroupコマンドもかなりの数使いました。思った以上に重宝したのはOrganizerコマンドです。
TRLEの頃はROLLINGBALLでトリガのタイミングを調整していましたが、Organizerで全て代用できるので助かりました。
Parametersコマンドもかなり使いました。アニメーションで移動させていたらもっと大変だったと思います。
部屋の造形に関する新機能がNGLEにはいくつかありますが、ほとんど使いませんでした。壁の分割を一括で行う機能ぐらいです。
NG_Centerのツール類もNG FONT EditorとOCB Calculatorぐらいしか使いませんでした。
NGLEはプラグインもそうですが、Base系のレベルに向いた機能が多いように思います。実際に他のジャンルのレベルを作ってみないとわかりませんが、海底基地を選択したのは正解だったように思います。