マッパー向けコラム集

「マッパー向けコラム集」の編集履歴(バックアップ)一覧に戻る

マッパー向けコラム集 - (2012/08/03 (金) 17:59:10) のソース

&bold(){目次}
#contents(,option=word)

*歩兵兵科関連
**初期兵科、キットについてと禁忌

***各国共通基本事項
 各兵科名の頭の数字は初期兵科で出す場合の兵科番号を示している。
 たとえば 1GB_AssaultNo4 を2番兵科として呼び出すと、兵科選択画面の2番アイコンが真っ白に表示されてしまう。
 頭に番号のないものは初期兵科にはできない。頭の数字が6のものもあるが、現状では番号なしとして扱うこと。


 頭に番号がない兵科はキットとしてマップにバラ撒くことを想定して用意されている。
 ただし、頭に番号がある兵科でもキットとして設置することは可能。
 しかしその兵科にランダム要素を含む武器、装備が含まれていないか確認すること。含まれる場合は置いてはならない。
 含まれていた場合、中途接続者がポロポロ切断される、いわゆるFoy病の原因になる。戦車兵の3番武器や煙幕に要注意。
 ランダム要素を含むかどうかは、キット中に以下の記述があるかどうかで判別できる。
>ObjectTemplate.addTemplate 武器名
>ObjectTemplate.setRandomGeometries 数字
 setRandomGeometries は武器のランダム化だけでなく、帽子やバックパックのランダム化にも用いられているが、
 これは通常は問題を起こさない。ランダム武器には大抵「Random○○」という名前がついているのでそれを参考に。


 FHSWはFHのMinimodなのでFHで用意されている兵科も基本的には呼び出して使うことができる。
 オーソドックスな兵科はFHからある場合はFHSWには置いてないこともあるので、見当たらない場合はFHも探すこと。
 FHの兵科内容だとFHSWでは問題が発生するようなものはFHSW側で上書きする形で変更されている場合もある。
 さすがに無印の兵科を呼び出すことはできない。


 FHSW0.4から、海戦マップ用に通常の倍の能力を持つターボレンチが実装された。これは兵科で使用するかどうかを切り替えるのではなく、
 マップ内のInit.conの、例えば game.setTeamSkin 2 BritishSoldier ここの部分を TurboWrenchBritishSoldier に置き換える。
 現在ターボレンチが用意されているのは独軍、日本軍、米軍、英軍のみ。


 兵科名最後につく P はパラシュートを示している。
 パラシュートを持つ兵科は兵科選択画面の兵科アイコンとヘルスバー横にパラシュートアイコンが出現する。
 パイロット兵科は特にPと書かれていなくてもパラシュートが使用できるが、兵科名の末尾に CL とあるものはパラシュートが使用できない。


 兵科名につく Night とは、夜戦用兵科であることを示しているが、これは松明やランタンを追加で持っているというだけで、
 Nightと書かれていない兵科でも夜戦で使用することは可能である。


 各国兵科名の武器の後ろに S や HUB と付く場合、それらは消音武器であることを示している。
 英軍の場合は StenMk.6 及び DeLisle も消音武器である。


 兵科名の Smoke の後ろに 2R ないし 3R とあるのはそれぞれ煙幕の出現確立が二分の一、三分の一であることを示している。
 特に追記されていない場合は必ず持っている。つまり、2Rや3Rが付いたキットは先述の理由によりマップに出してはならない。


 小銃兵などの兵科名の末尾の RG はランダムグレネード、つまり手榴弾とライフルグレネードのランダムであることを示している。
 つまりRGの付いたキットはマップに設置してはならない。
 また NoG とは手榴弾を所持しない、同じく NoRG はライフルグレネードを所持しないということを示している。


***独軍詳細
 独軍の兵科だけは一般用 GerKit の他に砂漠用 GerKitDesert と、冬季用 GerKitWinter が用意されている。ヘルメットとテクスチャが変わる。
 独軍兵科名中の HH とは、3kg対戦車爆雷Haft-Hohlladungの略語である。またGeballteLadungは収束手榴弾のこと。
 兵科名の末尾に M がつくものはラットトラップ用のガスマスク装備兵である。外見が違うだけで特に差はない。
 MG42AAは通常の低姿勢機銃を設置するのに加え、対空用の高姿勢銃座も選択して設置することができる。


 兵科名に Signal や Marker とあるのはカンプピストルの信号弾やマーカー弾を装備していることを示している。
 同様に Flare は照明弾、KSmoke は発煙弾、Kam とだけある場合は信号弾とマーカー弾両方を持っている。
 また、カンプピストルの対戦車弾頭には無印、Gr.40、Gr.61の3種類がある。無印はトラックやAPCを相手するのが精一杯だが
 Gr.61では威力は抑えてあるとはいえ貫通力はFP1と同等なので注意すること。


 ランダムパンツァーファウスト兵科には、呼び出し名の末尾に数字が振ってある。これはランダムで出てくる内容を変えるためのもので、
  無印が FP1(PzFK) FPII(PzF30) PzF60 PzF100 および FPIIx2 の中からランダムで選ばれる。
  5は無印と同じ内容のランダムであるが、無印の方が PzF60 と PzF100 が選ばれる確率が高い。
  4は無印から FPIIx2 を除いたもの
  3は無印から FPIIx2 と PzF100 を除いたもの
  2は FP1 と FPII のランダム
 となっている。つまり、無印→5→4→3→2の順で時代が若くなり、弱体化する。


 鹵獲小銃や短機関銃の兵科にも同様の英字が振ってあるが、これは選ばれる銃を制限するものではなく、単純にどれが選ばれやすくなるかを変えるものだが
 たとえ同じ兵科を2番兵科で使った場合と3番兵科で呼び出した場合ではバラつきに違いが出るので、特定の銃を出やすく、ということはできない模様。
 2番小銃兵は無印、3番AT兵はB、5番工兵はCのように、兵科ごとに違うものを使うといい感じにバラバラになるようだ。
 鹵獲武器は物によって総弾数が大きく違うので要注意。特に米軍の自動小銃などは極端に少ない。


 独軍は対戦国や同盟国の装備を各種鹵獲して自国部隊に配備しているが、そのときに外国兵器器材番号という通し番号を付け管理していた。
 Gewはライフル、SlGewはセミオートライフル、Karはカービン、MPは短機関銃、PzBは対戦車ライフルを意味している。
 末尾にある( )内の英字は元の国名の頭文字であり、これと銃の種別記号をあわせればある程度は予想できるはず。
||器材番号|	元の名前||	器材番号|	元の名前||		器材番号|	元の名前|
||Gew214(i)|	Carcano||	SlGew455(a)|	M1Carbine||		PzW789(e)|	PIAT|
||Gew242(f)|	Mas36||		Kar408(i)|	CarcanoCarbine||		PWM340(r)|	RPG43|
||Gew249(a)|	Springfield03||	Kar454(r)|	NagantCarbine||		MP717(r)|	PPSh43 (PPSh41 35mag)|
||Gew254(r)|	MosinNagant||	|		||			MP719(r)|	PPS43|
||Gew283(e)|	No4||		PzB35(p)|	M35||			MP722(f)|	Mas38|
||Gew298(p)|	Wz29||		PzB782(e)|	Boys Mk.I/II||		MP739(i)|	BerettaM1938|
||Gew303(f)|	Lebel||		PzB783(r)|	PTRD||			MP749(e)|	StenMK2|
||SlGew251(a)|	M1Garand||	SlBzB784(r)|	PTRS||			MP760(e)|	Tommygun|
||SlGew259(r)|	SVT40||		SlBzB785(i)|	S18-1000||		MP761(a)|	Thompson|

***ver0.5以降の独軍国民突撃隊について
 ver0.5から国民突撃隊のランダム武器を均等にするため、国民突撃隊専用の兵士モデルが作成され、一部のランダム武器は
 マップごとの埋め込みに変更になった。
 このランダム武器を使う際には、以下の武器のアニメーション埋め込みが必要になる。
>RandomGerPanzerfaust	(7~16番)
>RandomGerSeizedRifle	(7~16番)
>RandomGerSeizedSMG	(10~12,14~16番)
>RandomGerHEAT		(7~16番)
 国民突撃隊の設定になっているマップ(Berlin-1945等)を解凍して、Animationsフォルダを新しく作成するマップに埋め込む。

 また、game.setTeamSkin 1にGermanSoldier16やVolkssturmSoldierを設定すると、国民突撃隊用ランダム武器の分布が均等になりやすい。

 

***日本軍詳細
 海軍陸戦隊兵科は JapKit 内の SNLF フォルダに、艦艇乗組員兵科は Navy フォルダにそれぞれ入っている。
 日本軍兵科名の最後につく D は将校用拳銃ランダムを示している。つまりDの付いたキットはマップに設置してはならない。
 また WN は八九式重擲弾筒を持たないことを意味する。
 Arisaka は九九式小銃、 Arisaka38 は三八式歩兵銃のこと。ただし ArisakaCarbine は三八式騎銃なので注意。


***米軍詳細
 海兵隊兵科は USKit 内の Marine フォルダ、艦艇乗組員兵科は Navy フォルダにそれぞれ用意してある。
 兵科名末尾に CS と付くものはオマハビーチ チャーリーセクター用に用意されたものである。


***爆撃要請兵科について
 爆撃要請兵科の末尾に frag とある場合、それは爆撃機にクラスター爆弾が装備されていることを示している。
 数字があるものはそれぞれその数字kgの小爆弾を搭載したタイプである。対人用途にはこちらのほうが好適。


 爆撃要請兵科名に書かれている機種が単発機ないし小型双発機の場合、急降下爆撃要請である可能性が高い。
 急降下爆撃要請兵科は一般の爆撃要請とは違い、要請可能回数が2回に半減している。重戦車でも即死させることが可能なのでバランスには要注意。


 なお爆撃要請スポッターは、他のプレイヤーがいる位置に無線機を出そうとすると、無線機を破壊しても無限に沸くバグが起こることがある。
 現状では回避する案がないので、できるだけ人口の密集する位置では使われないよう設置位置を工夫したほうがよい。


***弾薬補給兵について
 兵科名にAmmoとあるものは弾薬補給パックを所持している。これは大別して火砲用、PzF用、歩兵対戦車火器用があり
 たとえばPzF用で収束手榴弾や火炎瓶を補給したり、火砲用でPzFを補給することはできないが
 火砲用は見た目が違うだけで中身は同じなので、たとえば81mm迫撃砲用で一般の野砲や対戦車砲、戦車砲に補給することが可能である。
 火砲用を除くPzF用および歩兵対戦車火器用弾薬パックは補給可能残数にかかわらず、設置後1分で消滅する。


*埋め込み関連
**Objectsフォルダの埋め込みによって実現するもの
 マップフォルダにObjectsフォルダを同梱し、特定の武器、兵器、あるいは建物や障害物等々を追加したり、設定を変更することができる手段が埋め込みである。
 よく使われるのは海戦や上陸戦マップでの艦船スポンIDの変更、空母艦載機の機種沸き数変更、LCVPの有無などである。
 陸戦では歩兵兵科に変化を出すために使われることもある。オブジェクティブの場合は破壊目標が埋め込みで用意されることも多い。
 0.3b2から0.4に変わるに当たり、艦船への兵士スポン周りの記述が大きく変更されたので、古いマップを移植する場合は埋め込まれた艦船を
 埋め込みなおす必要が生じるので注意。そのままだと落ちる。
 

**ObjectSpawnTemplates.conへの記述埋め込み
 各マップ内のObjectSpawnTemplates.conへ、変更したい数値や記述だけを直接書き込んで変更を加えることが可能である。
 フォルダ埋め込みの場合、SSMのみでの調整が不可能であるがこの方法であれば若干ながらSSMでの調整が可能である。
 まだ詳細は未調査ながら、相当深い位置のコードにも有効な模様。

 
 方法は、まず変更を加えたい数値の含まれる部品の名前を探し、
  ObjectTemplate.Active XXXX
 と宣言させる。その後に変更したい行を
  ObjectTemplate.magSize 10
 このように記述する。弾の切り替えが可能な兵器の性能を変える場合、物にもよるが大抵3箇所に同じ記述があるのでそれぞれ変更すること。
 設定の記述は同じでも含まれる部品が違うので、部品ごとに宣言しなおして丁寧に。

*チケットの変更方
 チケット数は各マップのConquest.conとGameTypes/Conquest.conの両方に同じ内容を記述せねばならない。
 Game.setNumberOfTickets の 1 または 2 が枢軸と連合を表し、その後の数字がチケット数を決めているが、サーバー側のチケット倍率により
 この値の1.5-3倍ぐらいになるので、他のマップを参考に設定するとよい。
 Game.setTicketLostPerMin はそれぞれの陣営の15秒当たりのチケット減少数を設定している。名前はPerMinだが15秒当たりの減少数なので要注意。


*落ち方によるバグの探し方
 動作テストはウィンドウモードで行う事を強く勧める。
 ウィンドウモードでは問題発生時にエラーメッセージをが表示されることがあり、これはデバッグにとても役立つ。
 また、以下はほんの一例である。ここにあてはまる項目がないからといって、問題がないとは限らない。
**ゲーム中に落ちる場合
****問題のあるオブジェクトがリスポンした瞬間
 空母艦載機や牽引砲、機銃設置キットなど、通常の旗からのリスポンでなく、
 何かのオブジェクトから間接的にリスポンするオブジェクトに問題がある場合に発生する。
 単に問題発生タイミングが異なるだけで、問題自体の内容は以下で記述されているものと同じなので、対処方法もそれぞれの問題に準じる。
****特定のオブジェクトに近付いた(視界距離内に入った)時に落ちる
 指定されたlodSelectorが存在しない可能性がある。
 LodObjectのObjectTemplate.lodSelectorにて、どこでも宣言されていないlodSelectorを指定すると、メッセージなしで強制終了する。
 lodSelectorが無い場合、BF側がどのモデルを表示すればいいか判らなくなり問題が発生する。
 lodSelectorを新しく宣言しなおすか、既に宣言済のものを正しく呼び出すようにすることで解決する。
****マップが重すぎる
 オブジェクト数が多すぎる、多数の移動物体が衝突し続けて激しく動いている場合などに発生。
 オブジェクト数を減らしてみる、リスポン位置を変えるなどの対策で解決することがある。
 乗り物などの動的オブジェクトで、メッシュファイルが無いために物理演算が狂って物体が暴れている場合にも発生することがある。
****エフェクトが重すぎる
 特にSpriteParticleを用いたエフェクトで発生。
 濃い煙や光のエフェクトなど、あまりに多くのSpriteParticleを重ねて表示した場合に、メッセージなしで強制終了する。
 SpriteParticleの数を減らすか、Particleとして作り直すことで解決する。
**ロード終了と同時に落ちる場合
 この問題は多くの場合、「ゲーム中に落ちる場合」と同じ原因で発生する。
 違いは、マップ上の問題のある場所がゲームスタート時の視界内に入っているか否かである。
**ロード中に落ちる場合
***エラーメッセージが出る場合
 最初に心がけておくこととして「エラーメッセージはとても親切である」ということがある。
 エラーメッセージは決して意地悪で出ているのではなく、どこが悪いのか教えてくれようとしているもの。
 エラーが出たからといってすぐに諦めずに、メッセージをよく読んでみよう。
****宣言されていない部品をObjectTemplate.addTemplateで呼び出そうとした
 最頻出エラーの1つ。どこにも宣言されていない部品をObjectTemplate.addTemplateで呼び出そうとした場合に発生する。
 大抵は部品名の書き間違えなので、正しく記述されているかよく確認する。
 稀な例として、ランダム部品のsetRandomGeometriesで大きすぎる数字を指定した場合でも発生する。
****FloatingBundleを持つオブジェクトで、メッシュが正しく指定されていない
 艦船などで使われるFloatingBundle(浮き)オブジェクトを持っている乗り物で、ObjectTemplate.geometryが無い場合に発生する。
 BF1942での物理演算はモデルサイズに基いて行われるので、モデルが正しく指定されていない場合はエラーとなる。
 ObjectTemplate.geometryを正しく記述することで解決する。
****建物や固定兵器などの静止オブジェクトにSpringを追加した
 ObjectTemplate.hasMobilePhysics 1の記述が無いオブジェクトにObjectTemplate.addTemplateでSpringを追加すると発生する。
 戦車の固定トーチカを作ろうとした場合などによく発生する。
 Springの代わりにSimpleObjectなどで部品を新しく作り、それを読み込ませることで解決する。
****埋め込みキットで、武器スロット番号が重複するものを持たせようとした
 ライフルとバズーカなど、同じ武器スロット番号の武器を一つにキットに持たせた場合に発生する。
 どちらかの武器を装備から外すか、埋め込みで武器のスロット番号を変更することで解決する。
 武器のスロット番号を変更する場合は、他のキットで重複が発生しないかどうかによく注意する。
***メッセージが出ないで落ちる場合
****addTemplateの記述がループしている
 以下のようなコードで、子部品が親部品を呼び出すなどしている場合は、メッセージなしで強制終了する。
>ObjectTemplate.create Bundle hogeBundle
>ObjectTemplate.addTemplate piyoBundle
>
>ObjectTemplate.create Bundle piyoBundle
>ObjectTemplate.addTemplate hogeBundle
 部品呼び出しのループが無くなるように書きなおすことで解決する。
 直接の子部品だけでなく、孫や曾孫部品でも問題が発生するので注意。
****メッシュファイルのエクスポート失敗
 稀なケースであるが、エクスポートに失敗したメッシュファイルをマップ中で使用しているとメッセージなしで強制終了する。
 メッシュファイルを正しくエクスポートしなおすことで解決する。
 正しくエクスポートできたかどうかを確認するには、エクスポート後に一度GMAXやMetasequoiaでインポートしなおすと良い。
**マルチプレイにて、プレイヤーの接続が次々に切れる
 原因は複数考えられる。ここでは一例を挙げる。
****弾数共用武器で装弾数が一致していない
 機関銃のセミオート/フルオート切り替え等、複数武器の装弾数をObjectTemplate.setWeaponLinkでリンクさせている場合で、
 リンク元・リンク先双方の武器の装弾数が一致しない場合に発生する。
 例として、セミオートではマガジン5つ、フルオートではマガジン6つを所持するようになっている場合等が問題になる。
 弾数共用武器の装弾数を一致させることで解決する。
 軽機関銃などの装弾数を埋め込みで変更したり、カンプピストルのようなリンクが複雑な武器を間違ってキットに持たせると発生しやすい。
 一人でテストしていても見つけにくいのでよく注意し、また可能な限り複数人でのテストを行うこと。
**マルチプレイにて、サーバに接続した瞬間にサーバが落ちる
****Too Many Statemasksエラーの可能性
 この場合、サーバ側では「Too Many Statemasks」というエラーメッセージが表示される。
 このエラーは、主に乗り物において、エンジンや回転部品、武装などの数や種類が多すぎる場合に発生する。
 それらの部品を削除することで解決する。
 ObjectTemplate.setNetworkableInfo記述を削除することでも解決するが、ネットワーク越しの同期が行われなくなる。
 部品の回転速度が非常に速くなったように感じられるほか、武器や回転砲塔、ステアリング、翼などは機能しなくなるため、
 火砲の手元の旋回ハンドルなど、純粋に外見以外の意味を持たない部品以外にはこの対策をすべきでない。
 武器が問題の場合、FHSW限定でsetNetworkableInfoに「TankFireArmInfo_ForceID」を指定することでも回避できるが、
 弾の再補給が正しく行われなくなるため、一回使い切り又は弾数無限の武器以外には勧められない。
*スコアバグ
**発生する現象
 ここで言うスコアバグとは、ある旗の範囲に兵士が入るとスコアが極端に増大する現象を指す。
 サーバーが落ちるほどのバグでは無いが、キル数やリスポン時間が正常に表示されなくなるなど、プレイする上で不都合な事が多い。
 ver0.42までの「ベルリン通り」の最初の旗で頻発していた。
**対策
 このバグが発生する条件は、「白旗から旗奪取までの時間設定が0秒(ObjectTemplate.timeToGetControl 0)」であり、かつ
 「片方の陣営しか旗を取ることができない(ObjectTemplate.onlyTakeableByTeam 1or2)」である。
 この設定がなされた拠点が白旗である時、奪取する事のできない陣営の兵士(onlyTakeableByTeamで設定されている陣営の逆)と
 奪取する事のできる陣営の兵士が、どちらも旗の範囲に入るとスコアバグが発生する。
 旗の範囲の広いマップや、プッシュマップで発生しやすいので、注意が必要になる。
 対策としては、旗奪取までの時間設定を0秒でなく1秒に(ObjectTemplate.timeToGetControl 1)する方法がある。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。