完全な初心者のためのWMLガイド/第6章:カスタムユニットの構築と組み込み

Last-modified: 2017-03-24 (金) 22:49:47

キャンペーン作成者は、キャンペーンでメインラインユニットのみを使用することがあります。
ただし、デフォルトのWesnothにはないカスタムユニットを含めることもできます。 ありがたいことに、カスタムユニットを含むことは非常に簡単です。

 

この記事の作者はここまで書いて、この章を放置しています。まあ、必須の項目ではないので後回しということでしょう。代わりと言ってはなんですが、幾つかあるカスタムユニットの作成手法の中から一番簡単でお手軽な方法を紹介します。

 

ユニットを構成する要素

本題に入る前に、ユニットについて軽く解説しておきます。後々本格的にカスタムユニットを作ろうと考えているなら知っておいて損は無いですよ。
さて、Wesnothのユニットを構成する要素は大きく分けて「設定ファイル」と「グラフィック」があります。
設定ファイルは、そのユニットがどんな種族でどんな技能を持っているか等を細かく指定したファイルです。グラフィックはユニットをゲーム画面上に表示するための絵です。
この二つはそれぞれ複数の書類で構成されます。まず、設定ファイルには「ユニット本体の設定」の他に「種族設定」「名前一覧」「最大レベル時の成長規則」「特殊なアビリティの設定」などがあります。
そして、グラフィックは「イメージアイコン」「アニメ用フレーム画」「ポートレイト画像」があり、アニメーションに凝りだすと相当数の絵が必要になってきます。

 

ただ、これらを全て作り込むような好き者はほとんど居ません。省略しようと思えば、驚くほど多くのパーツが省略できます。

 

カスタムユニット作成方法

ユニット作成にはクソ面倒くさい一族フルセット制作から超簡単なパーツ流用単体ユニットまで、何段階かあります。
今回は言うまでもなく「パーツ流用単体ユニット」でいきます。では始めましょう。

 

カスタムユニットの.cfgファイルの作成
今回作るのは、ユニットの設定ファイル1つだけで完成するカスタムユニットです。グラフィックは全て既存のユニットの物を流用し、新たな種族も作りません。あらゆる物を既存データから流用します。
前の章で設定した我々のリーダーは"Elvish Ranger"でしたから、その亜種ユニットを作りリーダーのユニットタイプを差し替えます。なので、ユニットの種族はエルフです。
では、ユニット置く場所を作ります。「my_first_campaign」フォルダの「units」フォルダの中に「elves」フォルダを作ってください。ユニットファイルはその中に置きます。
それでは、空の.cfgファイルを作ってください。ファイル名は「my_first_hero.cfg」としましょう。早速ファイルを開いて次のコードを書き込んでください。

 
#textdomain wesnoth-my_first_campaign
 

はい、お約束の一行です。次にタグセットを書き込みます。

 
[unit_type]
[/unit_type]
 

これはユニットタイプを設定する時に使用されるトップレベルタグです。ユニットの設定は全てこの中に含まれます。
では、どんどんいきます。今度はユニットのタイプ名を設定します。

 
id=Elvish_my_first_hero
name= _ "Elvish my first hero"
 

ちょっと名前が格好悪いと思ったら好きな名前にしてもいいですよ。
"id"はゲームがユニットの種類を識別するためのキーになります。他のユニットと被らないようにユニークな名前にする必要があります。
"name"はゲーム画面に表示されるユニット名です。当然、翻訳可能にしておく必要があります。

 

既存ユニットの設定を流用する
次に書き込むのは今回の目玉になるタグです。

 
[base_unit]
	 id="Elvish Ranger"
[/base_unit]
 

[base_unit]は文字通りベースになるユニットを指定するタグです。idをキーとして持っています。idにはベースとなるユニットのidを値として与えます。
今回は"Elvish Ranger"がベースになります。では、ユニットファイルがどうなったか見てみましょう。

 
#textdomain wesnoth-my_first_campaign
[unit_type]
    id=Elvish_my_first_hero
    name= _ "Elvish my first hero"
    [base_unit]
        id="Elvish Ranger"
    [/base_unit]
[/unit_type]
 

じゃーん! ユニットファイルの完成です。嘘だと思っているでしょう?本当にこれでユニットファイルは成立しています。
これは、中身が丸々"Elvish Ranger"でユニット名だけ違うという究極のパクリユニットです! しかし、これでは芸が無いですね。
このユニットはリーダーとして登場するわけですから、それらしい能力が備わっていて欲しいところです。"Elvish Ranger"には無いリーダーらしい能力といえば、やはりリーダーシップでしょう。
では、このアビリティを付け加えましょう。

 

設定を書き加える
アビリティを追加するには次のようにします。

 
[abilities]
   {ABILITY_LEADERSHIP_LEVEL_3}
[/abilities]
 

この三行を書き加えることでリーダーシップが手に入ります。ちょっとおまけしてレベル3にしておきました。完成したユニットファイルは次のようになります。

 
#textdomain wesnoth-my_first_campaign
[unit_type]
    id=Elvish_my_first_hero
    name= _ "Elvish my first hero"
    [base_unit]
        id="Elvish Ranger"
    [/base_unit]
    [abilities]
        {ABILITY_LEADERSHIP_LEVEL_3}
    [/abilities]
[/unit_type]
 

キャンペーンにカスタムユニットを含める

ユニットファイルは完成しましたが、まだキャンペーンで使うことはできません。_main.cfgにユニットファイルの場所を書き込んで、ゲームにユニットの存在を知らせる必要があります。
_main.cfgを開いてください。キャンペーンで使うフォルダのパスを書き込んだ箇所を覚えていますか?その場所の{~add-ons/my_first_campaign/utils}の次の行に以下の3行を書き加えます。

 
[+units]
   {~add-ons/my_first_campaign/units/elves}
[/units]
 

これでゲームがユニットの存在を認識してくれるようになりました。では_main.cfgを閉じて、次は前の章で作ったシナリオファイルを開いてください。そして、我々のリーダーのユニットタイプを書き換えましょう。

 
type="Elvish_my_first_hero"
 

以上、超簡単なカスタムユニット作成講座でした。

 

そうそう、言うのを忘れていたけどこれまでに作ったキャンペーンのファイルに間違いがなければ、君が作ったキャンペーンは最後までプレイすることができる筈なんだ、試してみるといい。もしエラーが出たら、どこかでスペルミスをしている可能性が高いからコードをゆっくり見直してみよう。

 

第5章へ戻る
第7章へ進む
目次に戻る