さて、ファイナルアーチ…開発初期は「ポリゴン野球」と呼ばれていただけだと思いますが、そのチームに配属になってから。
手相の時とはハードも違うし、2Dと3Dの違いがあるのでデータの整理方法も違います。
とはいえ、すでにデータ加工ツールは存在しているし、あとはひたすらデータ整理をするだけ。
仕事の内容を一通り理解したところで、早速自動化します。
手相の時は awk を使いましたが、awk では限界を感じていました。
実は、手相の途中で perl の勉強を始めたのですが、無理やりとはいえ動いているツール群を修正する必要も感じられず、「勉強」どまりでした。
#この時、近くの席にいた先輩に perl の本貰いました。ありがとうございます。まだ大事にしてます。
ファイナルアーチでは、perl で整理ツールを作ります。
…このツールが、いつの間にか他のチームの人も使うようになっていた奴ですね。バグ入りだったのに。
ポリゴンデータ作る人も、まだ慣れてません。
ある時、貰ったモーションデータでは、腕が左右逆についてしまっていました。
おかしいですよ、と指摘するも、画面上で正しく動いているし、データがおかしいわけがない、と言われます。
仕方ないから、自分の作った整理ツールで特別扱いして、左右反転するようにして切り抜けました。
でも、なんかスッキリしない。
しばらく後になって、その人が「ごめん、ポリゴンデータが渡した奴と違ってて、結果的にモーションおかしくなってた」と謝ってきました。
正しいデータを貰い、特別扱い処理のプログラムを消して、問題解消。
手相の時と同じく、データ整理が自動化されると手が空きます。
「データ整理要員」で入ったのですが、プログラムを手伝い始めました。
この時問題になっていたのが、ポリゴン数が多すぎること。
バーチャファイターなら、画面上に出る人は2人です。
野球だと、守備側9人に、攻撃側最大4人。審判も表示しないとおかしいので、最低4人。(各塁審)
打つまではキャッチャー・バッターをクローズアップして表示していますが、打った瞬間どちらにボールが飛んだか示すために、球場全体を表示するようにカメラを動かします。
つまり、画面上に17人を表示しなくてはならないのですが、ST-V にはそれほどの能力はありませんでした。
方針はすでに定まっていました。
アップに耐えられる「フルポリ」と、遠景用に頂点数を減らした「マッチ箱」、さらに板1枚の「書割」と呼ばれる3種類のキャラを用意して、切り替えます。
審判なんて、真っ先に書割にしても構いません。
でも、ボールが飛んでいく先の人は注目されるから、できればフルポリで出したい。
これらを、違和感がないように切り替える処理が欲しいのですが、試行錯誤で作り出すしかありませんでした。
試行錯誤は時間がかかるのでメインプログラマーの仕事ではない。そこで、僕がこの仕事をやることになります。
フルポリゴンは200頂点位だったかな。
やせ気味、太り気味、上半身筋肉太り、下半身筋肉太り…など、何種類かの体型が作られていました。
マッチ箱、と呼ばれるローポリゴンは、たしか64頂点。
腕・足はそれぞれ三角柱2つで表現。体と頭はそれぞれ直方体で表現。
腰をひねることもできませんが、モーションデータは共通なので、「透明の腰」があるように動きます。
書割、と呼ばれた、人の絵を描いた板もありました。
板だけど、4頂点ではなく1頂点。板の表示位置だけ決めて、その位置にスプライトを表示しているからです。
たしか、人の合計で 700頂点位しか表示する能力がなかった。
画面上に最大17人、と先ほど書きましたが、フルポリゴンでは3人程度しか出ない。
画面上のキャラクタ配置を元に、どのキャラをどのモデルで表示するか自動調整する必要がありました。
これも、僕が担当した部分。
まず、カメラ位置から各キャラクタの表示サイズの概算を計算する。この表示サイズが優先順位になります。
ただし、キャッチャーとバッター、球が飛んでいく先の野手には手心を加えて、ポリゴンになりやすくする。
審判にも手心を加え、優先順位を落とす。
画面上の表示人数をカメラ位置から求めて、まずは全員マッチ箱に出来るか、頂点数を計算する。
全員マッチ箱に出来るなら、「余った」頂点数で、優先順位が高い奴からフルポリ指定する。
全員マッチ箱が無理なら、優先順位が高い奴からマッチ箱にして、頂点数が足りなくなった時点で、あとは書割に。
たしか、実際にはもっと細かな処理を入れ、見た目が破綻しないようにやっていたはずです。
でも、頂点数を守らないと処理落ちするため、やむを得ず「巨大マッチ箱人間」が登場することもありました。
もっとひどいのが、移動するキャラが「書割」になった時。
「待ち構えている」絵柄しかないので、静止したポーズのまま横滑りしていきます。
#そもそも、バッティング時のセンター外野手を書割にする、程度の使い方を想定していたのです。
他に何担当したかな…
と考えていて思い出しました。地味だけど、「砂煙」の表現を作りました。
ST-V では半透明が使えないので、メッシュ半透明。
ボールがバウンドしたり、スライディングしたりすると、砂煙が上がります。
ところで、ゲーム中では選択したチームによって、球場などが変わりました。
その中の一つに「河川敷球場」という設定のものがあります。
河川敷の土手の下にある、という草野球のような球場。プロなのに。
外野スタンドは芝生で、レジャーシート敷いて座っているお客さんが少しいる程度。
外野席の上は土手で、自動車とか停まっている。
ポリゴンモデルなどを入れた後で、急に「ホームランで自動車にぶつかったら、壊れて煙出すことにしようよ」っていう謎の話が…
これ、メインプログラマーの人と話をしていた覚えはあります。
でも、勝手に入れたのか、企画者の人も巻き込んだのか覚えていません。
僕がそのプログラムを担当して、かなり広めに「あたり判定」を取って、ぶつかると煙を出します。
でも、そもそもホームランは出にくいし、バットの振り具合で飛球の方向は変わるのですが、狙い通りのところにはなかなか飛びません。
偶然出した人はいるかもしれませんが、狙って出すのは難しいと思います。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |