はじめに:バグを発見する方法は 公式のバグ鶏ツールを使うのがベストですが、個人的にはやや手間がかかると 思いますので、簡単にバグを取る方法としてオススメなのが、BFをウインドウ モードで立ち上げることです。conファイル上のエラーである場合、ロード 中に、英語で「このファイル中で指定されている・・・という項目が存在しません」 というポップアップが出てくるため、これを参考にすることが出来ます。 バグ鶏のコツとしては、何か新しい要素を追加したときに、こまめにBfを立ち上げて確認することだと思います。大量の変更を追加してからバグチェックをする ほうが、いちいちbfを起動させるよりも効率がいいように思えるかもしれませんが、大量の変更を加えた後だと、何が問題なのか、問題点はひとつなのか、複数なのか、探すのがとても骨だと思います。conファイルのみの問題ならばいいのですが、 ポップアップが出ずに、「エラーが発生したためbf1942を修了します」の 画面が出ることも多々あるため、こまめにテストするのをオススメします。 | ||||
問題点 | 考えられる原因と対策 | |||
MOD起動時にBFごと落ちる | 1.6パッチあたり以前のバージョンだと、マップファイル内 の/menu/init.conで、modidの指定ミスがあるとMOD起動時に起きた気がします。 | |||
マップロード中に落ちる | オブジェクト内のObjectTemplate.addTemplateの名前がObjectTemplate.createと一致していますか? スペル等確認してください。 | |||
マップロード中にロードがとまる | テクスチャのサイズが2の乗数でないときにロードがストップします (フォトショップのプラグインで出力できても読み込み時にエラーが起こりました。モデル、テクスチャの不備があってもロードが出来ると思っていたため、 まさかテクスチャのバグだとは気がつかず苦労しました。) | |||
マップロード後に何らかの問題がある | ||||
マップがノーマル、あるいは改変前のまま。 | MODIDが設定されてない=マップファイル内の/menu/init.conをひらいてMODidを、自分のMOD名にします。 | |||
マップロードが異常に遅い、ロード後重い。 | ||||
メッシュエクスポート時に、bspのチェックがかかっていない= メタセコイア、gmaxともに、bspの項目があるのでこれにチェックを入れる。 | ||||
コリジョンメッシュ(COL-1)のポリゴン数が多すぎる
−−→ポリゴン数を減らします。
⇒でも、ポリゴン数を減らしたくないよ
−−→モデルをパーツわけして、conファイル上で合成させるか
マップエディター上で組み合わせる。
col1は乗り物対乗り物、地面用なので、建物の内部等、乗り物が 入らないところは省略しておきます。 メタセコイアでCOL1あるいはCOL2しか指定せずにエクスポートすると、 指定したメッシュが両方に適用されるので注意。 おそらくCOL1のあつかいで重くなるようです。 大きな乗り物の中に小さな乗り物を置いたりするとかなり重くなります。 極端な話、COL1に何もないメッシュを指定すると、戦艦をいっぱい置いた マップでも軽くなると思われます。 |
||||
メッシュのポリゴン数が多すぎる=ポリゴン数を減らします。ポリゴン数を減らしたくないならLODを使って、うまく表示切替をさせます。 中も作りこんであるものなら、内部の表示距離を最低限に抑えます。 | ||||
メッシュがおかしい | ||||
メッシュが一部分しか反映されない |
メッシュを集約してない
−−→ メッシュが分割されているため、エクスポートさせたいモデルを アタッチ等をつかい、ひとつにまとめます。 |
|||
メッシュが裏表逆 | gmaxでミラーツールを使った ミラーツールを使うと、gmax上では問題なく見えても、 bf上ではひっくり返って見えます。 いったん適当な箱なりを作って、箱にメッシュをアタッチさせ、 箱を消去、エクスポートします。 | |||
モデリングソフト、マップエディター等で見られるエラー | ||||
BCでオマハの浜みたいな旗を作ろうとしても、相手チームに取り返されてしまう。 | バトルクラフトのプロパティーで片方の陣営だけ占拠可能な旗の 設定をする項目がありますが、ミスによりconファイルの 書き出し時に間違ったラインを出してしまいます。 直すには、マップファイル内のControlPointTemplates.conを開いて、 ObjectTemplate.onlyTakableByTeam 1or2を、 ObjectTemplate.onlyTakeableByTeam 1or2にしてください。 Tak(e)ableの"e"の一文字を加えるということです。 | |||
objet.conでコリジョンの設定をしたはずなのに、当たり判定がない。 | メッシュファイルにコリジョンメッシュが入っているか確認してください。 あるいは、子オブジェクト同士がぶつかっても当たり判定は発生しません。 たとえば、揚陸艇を巨大化して、そこにジープを乗りいれようとしても、揚陸艇のハッチ=子オブジェクトとジープのタイヤ(子オブジェクト)が接触することになるのでうまくいかないと思います。 この問題の解決例には、FHMODの空母には格納庫から出入りするエレベーターがあります。 原理的には揚陸艇のハッチの応用ですが、ハッチのモデルを置く代わりに、spawmpointを置いて、 乗り込むことが出来ないハッチ状の乗り物を発生させてクリアしています。 |