_main.cfg に記述すべき事項

_main.cfg とは Battle for Wesnoth のキャンペーン全体についての基本的な設定を記したファイルです。
_main.cfg には、大きく次の3つの事項について記述します。

:textdomain
|よく分からないけど、翻訳のため(多言語対応のため)に必要らしいです。
:campaign
|キャンペーン全体についての情報です。
:独自の追加データへのパス情報
|独自に作成した追加データ(シナリオ、ユニット、効果など)がどのフォルダに保存されているかについての情報です。
例えば、あなたが独自ユニット「Japanese Ninja」を作成しても、そのデータがどこに保存してあるかコンピュータが分からなければ参照することができませんから。ちゃんと場所を教えてあげる必要があります。

では、実際に作って見ましょうか

 何度も書きますが、今回は「とりあえず動くだけ」のキャンペーンですので、あたながプレイしたことのあるキャンペーンよりもだいぶ寂しい見栄えとなります。

textdomain

 textdomainは [textdomain]~[/textdomain] タグの中に記述します。
記述すべき要素は、そのキャンペーンの名前と翻訳がしまわれているフォルダへのパスの2つです。
今回は翻訳フォルダは作成しないのですが、「お約束」ですし、将来的にも必要になる(?)かもしれませんので、翻訳フォルダへのパスも記載しておきます。

記述例
[textdomain]
    name="wesnoth-Save_the_Woods"
    path="data/add-ons/Save_the_Woods/translations" (注)
[/textdomain]
(注:あなたが将来、自分でアドオンキャンペーンを作る場合、"Save_the_Woods"のところだけ、あなたのキャンペーンのフォルダの名前にしてください。)

campaign

 campaignは [campaign]~[/campaign] タグの中に記述します。
 ここに書くべき内容は結構多いです。
:id(必須ではないようだが、ほとんどのキャンペーンにある)
|コンピュータが識別するためのキャンペーン名です。あとで出てくる define の方が重要っぽいです。
:name(必須)
|プレイヤーに表示するためのキャンペーン名です。
id と name はいろいろなところで出てきますが、id はコンピュータ用、name はプレイヤー用と覚えておきましょう。
:define(必須)
|コンピュータのために必要なゲーム名。キャンペーンの場合、先頭に CAMPAIGN とつけることが多い。
:description(ないと寂しい)
|キャンペーンを選択するしたときに、ウィンドウの右側に表示されるゲームの説明
:difficulties(なくてもよいが、普通はある)
|難易度です。通常"EASY,NORMAL,HARD(易しい、普通、難しい)"の3つです。
:first_scenario(必須)
|最初のシナリオの ID を指定します(シナリオのファイル名ではないので注意)。これがないと、どのキャンペーンから始めればよいか、コンピュータが困りますからね。
なお、2番目以降のシナリオは、シナリオ用のファイルに記述します。最初のシナリオファイルに「次のシナリオは○○だよ。」と(もちろん、コンピュータにわかるように)記述します。

[campaign]
    id=Save_the_Woods
    name= _ "Save the Woods" (注1)
    define=CAMPAIGN_SAVE_THE_WOODS
    description= _ "邪悪なオークどもからエルフの森を守ってみようか。"
    difficulties=EASY,NORMAL,HARD (注2)
    first_scenario=1_Invasion_of_Orcs
[/campaign]
(注1:先頭の _(アンダースコア)は、翻訳の対象であることをコンピュータに知らせるためのものです。)
(注2:難易度は、大文字で書いてください。)
 なんだか id から define まで同じような記述が並んでいて、わざわざ3つも要素がいらないような気もしますが、こうなっている方が便利なこともあるのでしょう。

独自の追加データへのパス情報

 独自の追加データへのパス情報の書き方は、textdomain や campaign とちょっと違っていて、#ifdef と #endif ではさむ必要があります。通常先頭に「#」がついているのは、コメント(プログラムを作った人や後で見る人がわかりやすくするための注釈で、実際のプログラムの動作には影響しないもの。)ですが、#ifdef と #endif はコメントではありません。
 おそらく一種の条件文(もし○○なら□□せよ。)だと思います。今回は、「もし、キャンペーンが "SAVE_THE_WOODS" だったら次のパスを参照しろ。」という意味なのでしょう。
 それから {hogehoge} という書き方が出てきますが、これも WML 独自の記法のようです。
 (といい加減なことを書いてますが、これらをきちんと理解しておかないと、多分あとで困ると思われます。)

#ifdef SAVE_THE_WOODS (注1)
    {~add-ons/Save_the_Woods/scenarios} (注2)
#endif
(注1:#ifdef に続けて [campaign] 中の define に記述したのと同じのを書きます。これにより、どのキャンペーンか指定します。)
(注2:シナリオは、「独自に追加されたデータ」なので、必ずこの行は、必要になります。もし、独自の音楽データがある場合には、同様に {~add-ons/Save_the_Woods/music} と書きます。)

 *  #ifdef SAVE_THE_WOODS 〜 #endif の間に次のように書いてあるキャンペーンも多いですが、必須ではないようです。
    [binary_path]
        path="data/add-ons/Save_the_Woods"
    [/binary_path]


全部をひとつにまとめたファイル内容

"Save the Woods" キャンペーンの "_main.cfg" をひとつにまとめ、ついでにコメントもつけた内容は最終的に次のようになりました。

_main.cfg
#textdomain wesnoth-Save_the_Woods
[textdomain]
    name="wesnoth-Save_the_Woods"
    path="data/add-ons/Save_the_Woods/translations"
[/textdomain]

[campaign]
    id=Save_the_Woods
    name= _ "Save the Woods"
    define=CAMPAIGN_SAVE_THE_WOODS
    description= _ "邪悪なオークどもからエルフの森を守ってみようか。"
    difficulties=EASY,NORMAL,HARD
    first_scenario=1_Invasion_of_Orcs
[/campaign]

#ifdef SAVE_THE_WOODS
    {~add-ons/Save_the_Woods/scenarios}
#endif

これでも、必要な設定はできています。ここに画像も表示できるようにしたり、ゲームクリア語に製作者のクレジットがながれるようにすると、ほぼ「普通のキャンペーン」ぽくなりますよ。

タグ:

+ タグ編集
  • タグ:
最終更新:2016年07月10日 18:54