AI(BOT)作成方法ここではマップのCOOP化の方法を紹介しています。ED42)の翻訳途中で放置されたと考えられる内容に他者が手を加えているため、重複や欠落、表示の不統一などがあるかも知れません。タダ2ch本スレの有志の方がうpしてくれました。>>ftp://download.vol.to/uploader_files/1235278697.zip(※リンク切れ)AI関係のファイルで唯一テキスト形式でない、AIに移動許可領域と不許可領域を与える画像ファイルを作るための変換ソフトです。Photoshopが必要(?)なようです。タダai_tools_template-18jan2003をペイントで使えるようにするソフトです。ai_tools_template-18jan2003の説明なども含まれています。CW_Pathmapping_ToolKitPathFindingをEditor42に対応させるツールGenpathmapsPathFindingに用いられてるRawファイルをモノクロビットマップファイルと相互変換するツール。ここからダウンロードできます。tools.zipPathfindingマップ(.raw)をEditor42用地形テクスチャ(.dds)に変換するツールです。merge(複数枚のテクスチャを一枚にまとめるツール)が入っています。Paint.net.ddsや.tgaなどの画像ファイルを開けるフリーソフトです。Photoshopを持っていない人がBF1942のテクスチャを弄るときには必須のアイテム。genpathmaps_20041114.rarテクスチャ(.bmp)をPathfindingマップ(.raw)に変換するツールです。Converterフォルダ内の.ddsを.pngに一括変換するツールです。画像一括リサイザーフォルダ内の画像ファイルを一括で回転できるツールです。Converterフォルダ内の.pngを.tgaに一括変換するツールです。念のためにGoogleDriveにも上げておきます。手順1:Coopに対応させるCoop.conを「/(Map)/GameType/」の中に加えます。Coop.conの中身は大体以下のようになります。SinglePlayer/ControlPointselseendIf一応、Coopで遊ぶことが可能になりました。ここで、Coopで遊ぶためには/(Map)/SinglePlayer/フォルダにファイルを追加しなければいけません。ファイルの中身は/(Map)/Conquest/と同一でも問題はありません。以下のようにBot専用リスポンも追加することができます。1このボールドコードを入れることによってBot専用のリスポンが可能になります。これを上手く活かすことによってBotに兵器を乗せたままのリスポンさせることも可能です。手順2:AIの設定を弄るAIの頭脳であるAIフォルダの中身について説明します。大体coop対応マップには/(Map)/AI/のフォルダがあります。このAIフォルダはAIの行動や戦術などのファイルが格納されています。AIフォルダには以下の4種類のファイルが格納されています。Condition.conPrerequisites.conStrategicAreas.conStrategies.con手順3:AIの経路を設定するはじめに1.加工したいマップを用意します。2.無印などのマップからAIファイル(<MAP>/AI/)とAIPathfinding(<MAP>/Pathfinding/)を加工したいマップにコピーします。3.Editor42の準備をします。4.作業用フォルダを用意します。歩兵用の経路マップを例にやってみたいと思います。Infantry1level0Map.rawを地形テクスチャに変換する必要があります。編集する時はLevel0map(Tank0Level0Map.raw、Infantry1Level0Map.raw、Boat2Level0Map.raw、LandingCraft3Level0Map.raw、Car4Level0Map.raw)を加工して下さい。理由は、このLevel0Mapが一番詳細に経路を設定できるからです。tools.zipを展開します。ここで、展開したフォルダにInfantry1level0Map.rawをコピーします。下の画像のようになるはずです。マップのタイプや大きさに合ったバッチファイル”_convertToLevelTexture.bat”をメモ帳で編集する必要があります。ここで説明した箇所以外は編集しないで下さい、その後の作業に深刻な問題が起きる可能性があります。それでは、実際にメモ帳で編集したいと思います。最初に開いた時に、下の画像のようになっているはずです。画像の赤いアンダーラインの所がマップによって変える所です。最初の赤いアンダーラインについては、Tank0Level0MapやLandingCraft3Level0Map.rawのように設定します。ここでは、「Infantry1Level0Map」と設定します。Tank0Level0Map.rawを編集したいなら、その箇所はTank0Level0Mapとします。次に16にアンダーラインが引いてある箇所について説明します。この数字はマップの大きさを決め、その数字は以下のようになります。4096x4096この画像の場合だと、16であるため、Largeマップを編集しようとしてることが分かります。1024上のように書かれています。この場合、1024であるため、SmallMapです。そのため、上の画像の二番目のアンダーラインには4と入力します。加工したいマップに合うように変更したなら、_convertToLevelTexture.batを実行します。すると、コマンドプロンプトの画面上に下の画像のように結果が表示されます。バッチの実行に成功したなら、dds_terrainフォルダにTx*.ddsファイルが複数あるはずです。それを加工したいマップの(Maps)/Texturesに全て入れましょう。上書きする前に、事前に元の地形テクスチャをバックアップしましょう。これを確認するために、Editor42で加工したいマップを選択すると、下の画像のようにinfantry用のpathmapが地形テクスチャに変わります。Editor42で編集の準備Editor42を起動していることを前提に説明します。Pathマップを編集するために以下の準備をします。F2キーを押して、テクスチャモードへ移行します。Gキーを押すと、テクスチャの質を落とし、グリッド(格子状)を表示します。Fキーを押すと、霧を取り除きます。左側に下の画像のようなテクスチャバーが表示されます。機能を左から説明すると、ブラシの形、ブラシの大きさ、不透明度、テクスチャインターフェイス、ペイント全体のマップボタンになります。layerウインドウが表示されます。Colorを選択します。そこを選択すると、下の画像のようなColorウインドウが表示されます。画像のように純粋な黒と白を使います。純粋な黒の設定方法は、右の赤円を囲っている3つの数字欄を全て「0」にします。純粋な白も同様に右の赤円を囲っている3つの数字欄を全て「255」にします。layerウインドウまで戻ります。上の画像のように、Lighting項目のAmbiantを「1.00」に、Sunを「0.00」に設定した後「OK」を押して戻ります。これから実際に描いてみましょう。Pathマップを描くEditor42でBot用のPathマップを作ってみましょう。テクスチャモードにして、ブラシのOpacityを100%にします(下の画像参照)。ブラシの種類は下の画像のように2種類しか使用しません。ここでは、左のブラシをドットブラシ、右のブラシを四角ブラシとします。"Tool"→"Save"→Texture"で出来ます。それでは、実際に工場を例に説明します。進行可能な色は黒、進行不可能な色は白になります。工場周りをドットブラシを使って白線で囲みます。その際、建物周りの白線を下の画像のように4ピクセル以上広げておきます。ここで白線内側を白に塗りたいので、工場を一時的に退避させます。Oキーを押して、オブジェクトモードにして、工場を選択します。選択すると、工場の色が変わりますので、マウスのホイールキーを使用してY軸方向(高さ)へ動かします。することで、工場のXZ座標に影響されず、内側を塗ることができます。工場を動かした後、下の画像のようになるはずです。ここで、ドットブラシを使うと時間がかかるので、手間を省くために下の画像のように四角ブラシを使います。オブジェクトモードへ移って、工場を元の位置に戻します。車庫にPathマップが設定されていないので、再度編集します。下の画像のように車庫にもPathマップを設定することが出来ました。丁寧に塗り分けをしていけば、複雑な形の建物でもbotが思い通りに動くようになるでしょう。同じ建物でも、配置する角度によって塗り方は大きく代わります。変な角度で配置すると塗るのは大変ですし、45度に配置すると右下の部屋ではbotがまともに動かなくなりそうです。ED42が作業中にクラッシュするかも知れません。テクスチャの保存はこまめに行いましょう。地形テクスチャのpathfindingファイルへの変換(その1)分割されて保存されている地形テクスチャ(.dds)を統合して最終的にpathfinding(.raw)へと戻します。動作不良の原因が判明したらその旨加筆をお願いします。converterを用意します。Editor42上で編集したTx*.ddsと"undxt.exe"と"undxt.bat"を作業用フォルダに同梱します。フォルダのパスはreadmeを読む限り自由のようですが実際どうなんでしょうね...バッチファイル"undxt.bat"をダブルクリックするとコマンドプロンプトが立ち上がり、テクスチャの拡張子が.ddsから.tgaに変換されます。(訳者注:私の場合は一瞬コマンドプロンプトが立ち上がって消えてしまいます。フォルダのパスが原因かも知れません。回避方法を載せておきます。converterとともに展開されたtgaMergeを起動します。指定し、"Merge"を押すと一枚の大きなtgaファイルが出力されます。今回は"Infantry1level0Map.raw"を改変しているため、ファイル名は"Infantry1level0Map.tga"とします。画像ファイルはマップサイズの2倍の大きさになっているので、数字を半分にしてマップサイズに合わせます。Neighbor"を選択しておきましょう。Paint.netを使うときには、サイズ50%で指定することもできます。「再サンプリング」は「直近」を選択しましょう。サイズを変更したら、.bmp形式で保存します。Photoshopの場合は詳細な設定が必要みたいです。(詳細不明)Paint.netの場合は8bitで保存すべきだと思います。(詳細不明)最後にこのテクスチャをPathfinding(.raw)へと変換します。Cドライブ直下に"genpathmaps"フォルダを作ります。genpathmaps_20041114.rarを展開し、"genpathmaps"の中に入れます。(下の画像のショートカット、"Backup"フォルダは必要ありません)バッチファイル"genraw.bat"の上に"Infantry1level0Map.bmp"をドラッグ・アンド・ドロップするとコマンドプロンプトが開きます。output"が作られ、その中の"raw"フォルダにPathmapファイルが複数生成されています。この複数のファイルすべてを編集中のマップに移動すると完成です。converterが思うように動作しないという問題がありました。converterを使わずに.ddsから.tgaに一括変換する方法を紹介します。"Add"を押して変換するファイルを選択します。範囲選択(ドラッグ)やCtrlキーによる複数選択も可能です。すべて選択してしまいましょう。"Browse"で出力フォルダを指定し、出力形式は"PNG"にします。"Convert"を押すと変換されたファイルが出力されます。bf1942において地形に貼ったテクスチャは、マップに対してうつぶせにして上下左右反対(=180度回転)にした状態でマップファイルに保存されています。そのため、先ほどの作業で得られた.pngファイルも一枚一枚が逆になっていて、そのまま結合するだけでは変なPathfindingができあがってしまいます。画像の反転を行います。「出力設定1」で「サイズは変更しない」にチェックを入れ、出力先のファイルを指定します。「ファイル名設定」で「リサイズ後の画像ファイル名に、文字を付加する」のチェックを外します。ファイルの名前が変わってしまうと、結合に失敗するからです。「画像設定」で「水平&垂直反転」にチェックを入れます。変換したいファイルの入ったフォルダをウィンドウの中にドラッグ・アンド・ドロップすると、変換が始まります。これで画像の反転が終了しました。.pngを.tgaに変換します。Directory"で変換したいファイルの入ったフォルダを選択します。出力先のフォルダを指定します。出力形式は"TGA"を選択します。Images"で変換が始まります。"Done"と表示されたら変換終了です。converterを使わずに.ddsから.tgaへの一括変換ができるようになりました。同じように、tgaMergeで結合し、サイズを半分にして、.rawに変換すれば作業は終了です。追記ステップ4-2では.pngを通り道として拡張子の変換を行いましたが、これは単に「.pngが一番高画質っぽい」という偏見に基づいています。(.jpgや.bmpで試してはみましたが、その後に生成された.tgaの画像でいずれも灰色のギザギザが発生しました。Converterは本来.dds->.pngという変換もできるのですが、出力された画像がなぜか緑がかった状態になるので、この作業では別のソフトを使用しました。ステップ4-2では多くのフリーソフトを使用しています。作業を簡略化したり、.pngよりも劣化の少ない拡張子が扱えるソフトが存在するかも知れません。いい方法が見つかればどんどん加筆してください。兵器や武器に対するCOOPでの設定条件は、CONQUESTでの条件より厳しくなります。CONQUESTでは正常に遊べていたのにCOOPに移植した途端にエラーを吐くことがあります。この場合は「〇〇の部品がない」などエラーの詳細な内容が出ますので改善は容易です。そもそも兵器(乗り物)に対するbotのデータがなければbotは乗り物を無視しますし、そこに搭乗した状態でスポンさせる設定(APCや輸送機)にしているとBF1942が強制終了します。エラーの内容は表示されません。スポンさせるようにすると、ロード中に強制終了する兵器もあります。FHSWのトータスなどがその例です。他の兵器でも同様の現象が起きるようですが、原因を判断するにはすべてのスポンする兵器を二分探索で選択し、ロードを繰り返すほかないと思われます。FHやFHSWなどのMODは非常に複雑な作りになっており、強制終了してもエラーの内容が表示されないためCOOPでは不安定なのが現状です。根気よくエラーの原因を探ることも必要です。