Wesnoth アドオンキャンペーン制作中 -3ページ目

Wesnoth アドオンキャンペーン制作中

フリーソフトWesnothのアドオンキャンペーンを作って公開したい!ハードルは高いので本当に完成するかはわからない。

これは公式wikiのWML for Complete Beginnersを翻訳したものです。

後日、日本語wikiに転載する予定でいます。

(なぜなら、wikiの編集の仕方をまだ勉強してないので出来ないのです)

英語苦手な人間が翻訳しているので、間違い箇所があったらガッツリ指摘してください。

今回はイントロと第1章までを掲載します。

 

WML for Complete Beginners
完全な初心者のためのWMLガイド

原文で読みたい方はこちら
https://wiki.wesnoth.org/WML_for_Complete_Beginners

 

序文

完全な初心者のためのWMLガイドへようこそ! イントロダクションから順に進むことで、なんとなくWMLがわかるようになります。また、途中の章から読んでも大丈夫よ。

重要事項:これは進行中のプロジェクトです。 マイナー編集が行われても、ページ上ですぐに編集内容が表示されるわけではありません。(当然、翻訳に反映されるのはさらに遅くなります。でも大丈夫、そんなに頻繁に更新されないから!)


---------------------------------------------------------------------------------------------------------
イントロダクション

ちょっと、そこのあなた!
あなたがこれを読んでいるってことは、すでに The Battle for Wesnoth が何なのか知っているよね。
そうじゃないなら、このチュートリアルを読む前に一度 The Battle for Wesnoth で遊んでみたほうがいいと思うよ。

さて、このチュートリアルの目的について不思議に思う人もいます。 
「WMLのほぼすべてがReferenceWMLセクションでカバーされてるじゃない」と言う人もいるかもしれません。
(そうは言ってもReferenceWMLは英語だからねー)
だけど、ReferenceWMLセクションの情報はWML辞書みたいなもので、チュートリアルじゃないから!
というわけでこのページは、最終的にあなたにとってWMLが何らかの意味を持つようになるまで、完全な初心者にWMLを紹介することを目的としているのです。

 

このチュートリアルの対象者
このチュートリアルの主な対象者は、以前にプログラミングをした経験が無いユーザーです。

 

このチュートリアルを読む上で知っててほしい事
このチュートリアルは、テキストファイルを開いたり編集したり、フォルダーパスを追跡したり、特定のディレクトリを見つけることができるなど、コンピューターの基本的なスキルや概念に一定のレベルの能力を持っていることを前提に書かれています。

 

で、何をするの?
このチュートリアルでは、WMLの基本を学び、短いシングルプレイヤーキャンペーンを一から構築します。

 

これにトライするのに必要なツール
WMLでプログラミングするには、単純なテキストエディタが1つだけで事足ります。
WMLをプログラミングするには、超高性能なワードプロセッサは必要ありません(出来れば、その素晴らしいワードプロセッサの使用は避けたほうが吉)。 
Windowsのメモ帳やMac OS Xのテキストエディットのようなシンプルなやつがベターです。 
Linuxの場合、Kateという非常に素敵なテキスト編集アプリケーションがあります。これにはWMLの構文強調が実際に付属しています。(そうなの?)
さらに、ものすごく献身的な人々が、WMLの作成に役立つように特別に設計されたプログラムをまとめています。これはeclipse.wesnoth.orgで見つけることができます。
そしてテキストエディタ以外にもう一つ。
当然ながら、あなたのコンピュータに The Battle for Wesnoth がインストールされている必要があります。

 

で、WMLてのは何?
WMLとは、 The Battle for Wesnoth のコンテンツの作成や変更を、LuaやC ++のような
もっと複雑な言語を習得する必要なく可能にするカスタムスクリプト言語 "Wesnoth Markup Language"の略語です。
今のうちに言っておきます:あなたが一晩でWMLを学ぶことはできないと思ってください。 
WMLは比較的簡単に学習することができますが、言語の内容を十分に理解するためには、一定の労力、時間、忍耐を必要とします。

 

さて、WMLを学ぶ気になりましたか?
その気になったら、WML for Complete Beginners:第1章へ進んでください!


---------------------------------------------------------------------------------------------------------
第1章:構文

まず最初はこれ。WMLの構文を理解しましょう。
言語の"構文"が何であるか分からないという人は、WMLを正しく動かすための書き方を規定したルールのセットと考えてください。
このコンセプトはちょっと混乱するかもしれませんが、あなたがそれを理解しているかどうかにかかわらず、あなたは日常生活で構文の概念を使っているのです。
日本語の文章の構造を考えてみましょう。
「私はゼリーとチーズのサンドイッチが好きです。」
この文は、それを聞いたり読んだ人に理解させるために、ある種の規則や構文を使っています。
あなたが代わりに「好きですチーズが私とサンドイッチゼリー」と言った場合その文章は意味を成さなくなり、誰もあなたが何を言っているのか理解できません。
また、「私はチーズのサンドイッチとゼリーが好きです。」と言ったら、それは文の全体の意味を変えるでしょう!
日本語の構文と同様に、WML構文では、他の人があなたの言っていることや書くことを理解するために、適切な大文字、スペル、文法、句読点が必要です。
たとえば、日本語の文法を無視して、「ある日エレファントは、メアリーと動物園を見に行ったので、鼻が長いです」と書いたとしたら、あなたの文章を正しく理解する人はいません。
その一方、正しい構文を使って、「ある日、メアリーと私は動物園へ象を見に行った。その鼻は本当に長かった!」と書かれているなら、人々はあなたが書いたことを容易に理解することができます。
日本語の読者が正しい日本語の構文で書かれていないものを理解できないように、Wesnothは正しいWML構文で書かれていないWMLを理解することができません。
では、WML構文の基本について説明します。後でもっと複雑なWML構文が徐々に登場しますが、今のところ基本的なことだけを説明します。

+++++++++++++++++++++++++++++
基本コンポーネント:タグと属性
WMLは「マークアップ言語」です。「マークアップ言語」の構文は、タグと属性の2つの基本要素で構成されています。


+++++++++++++++++++++++++++++++
タグ
タグは、両端に2つの角括弧で囲まれた小文字の文字列です。
これは「キャンペーン」タグの例です:[campaign]
タグには、英数字(文字と数字)とアンダースコア「 _ 」しか含めることができません。注意しておきますが、
前に "タグは小文字の文字列です"と述べました。これはWML構文の基本的な部分です。すべてのタグは常に小文字で書かれています。
大文字を使用しようとすると、WMLエンジンは使用しようとしているタグを理解できず、誤ったタグを読み取ろうとするとエラーが表示されます。
ほとんどのマークアップ言語と同様に、WMLタグは常にペアで使用されます。1つの開始タグと1つの終了タグです。

開始タグと終了タグを本の表紙のように考えてください。表紙を開くと、最初にあなたがいることがわかります。
あなたが裏表紙に達すると、その本を読んでいることが分かります。同様に、WMLエンジンが開始タグを見つけると、それはタスクの開始時に認識されます。
終了タグに到達すると、タスクが終了したことを認識します。
タグを閉じることは、1つのキーコンポーネントを除いてタグを開くこととまったく同じです。
閉じタグは、最初の角括弧の直後に常にスラッシュ「/」を付けます。このスラッシュは、このタグが終了タグであり、
別の開始タグではないことをWMLエンジンに伝えます。
閉じた「キャンペーン」タグの例です:[/campaign]

この二つの開閉タグをタグセットと呼びます。タグセットには常に、開始タグと終了タグという2つのタグが含まれます。
たとえば、「キャンペーン」タグセットは次のようになります。
[campaign]
[/campaign]

WMLエンジンは、タスクの開始点と終了点、およびそれらを記述する際に使用する構文をどのように解釈するのかを知っています。
これらはWMLのタグの基本です。後で、タグのより複雑な側面について説明します。今のところ、ここで紹介した概念を理解していることを確認してください。
次のセクションに進む前に、このセクションでタグについて学んだことを確認しましょう。

 

●タグは、両端に2つの角括弧で囲まれた小文字の文字列です。
●終了タグは、開始タグとまったく同じですが、終了タグには最初の角括弧の直後にスラッシュが付きます。
●開始タグと終了タグをまとめて「タグセット」と呼びます。
●タグセットは、開始タグと終了タグという2つのタグだけで構成できます。

 

さて、WMLエンジンにタスクの開始点と終了点はどこにあるのかを伝えることができましたが、実際にタスクを行うのは何でしょう?これが属性が入る場所です。

+++++++++++++++++++++++++++++++++
属性
属性は、キーと値という2つの主要な要素で構成され、以下のように記述されます。
key = value
属性の基本機能は、WMLエンジンが必要とする情報を格納することです。属性のキーは、格納される情報の種類を指定し、属性の値は格納されている実際のデータです。
等号 "="の左にあるテキストはすべてキーとみなされ、等号の右側にあるすべてのテキストはキーの値とみなされます。
これはむしろ混乱を招くかもしれないので、具体的な例を挙げて説明しましょう。

 

あなたの友人にパン屋さんに行って、パンを買って来てもらうとしましょう。
あなたは彼にタグセット [go][/go] を与えました。
しかし、彼はあなたが彼にしてほしいことを理解しませんでした。つまり、彼は食事のためのパンを持って来ません。
これはWMLエンジンに [go][/go] と言うタグセットを与えることと同等ですが、それだけでは不十分です。あなたは、WMLエンジンが何をすべきかについてより具体的にする必要があります。
あなたの友人が人間のWMLエンジンであり、食料品店に行ってパンを手に入れたいと思ったら、彼にこのコードを渡す必要があります。
(注:このコードは実際のWMLではなく、「疑似コード」です。このチュートリアルで擬似コードを使用した場合は、例を提示する前に擬似コードであることを伝えます。)

[go]
    場所 = パン屋
    取得 = パン
[/go]

 

タグはWMLエンジンに一般的に何をすべきかを伝えます(友人に "go"と言っているような)が、何をすべきかを正確に指定する属性はありません。
(友人にいつどこに行けばいいのか、あなたが十分な情報を与えていないので、あなたの友人は何もできないのです。)
その情報を与えるのが key と value です。

key
キーとは、小文字のアルファベットの文字列で、属性を読み取ったときにどのような情報を扱っているかをゲームに伝えます。
キーは大文字小文字を区別します(大文字は使用できません)。正しく入力する必要があります。

value
WMLキーは、文字列と呼ばれるデータをvalueとして扱います。文字列は、ASCII文字のシーケンスであり、キーボードのほとんどの文字を含めることができます。
文字列は、標準と数値の2つのカテゴリに分類できます。

 

+++++++++++++++++++++++++++++++++++
1.標準文字列
標準文字列は、数値文字列でも翻訳可能文字列でもないASCII文字列です。たとえば、下の2行はそれぞれ標準の文字列です。

x
blue

標準文字列に空白が含まれる場合は、二重引用符(")で囲む必要があります。

" この二重引用符の中のすべてが単一の文字列です。これはナンバーワンです:1. Hooray!:)今この文字列の最後に来ています。"
参考までに原文を載せておきます、下の1行がまとめて全部一つの文字列です。
"Everything in these double quotes is a single string. This is the number one: 1. Hooray! :) We are now coming to the end of this string."

二重引用符(コロンと括弧の絵文字も含む)内のすべては、ゲームによって1つの長い文字列とみなされます。
標準の文字列を翻訳可能にして、他の言語に翻訳できるようにすることもあります。翻訳可能な文字列と翻訳できないものとの唯一の違いは、文字列の前に「翻訳可能マーク」が付いているか、付いていないかの差があるだけです。
文字列を翻訳可能としてマークするには、文字列の先頭を示す最初の二重引用符の前にアンダースコアを追加するだけです。

翻訳可能な文字列の例: _ "これは翻訳可能な文字列です。"

WMLエンジンが文字列の前にアンダースコアを見つけなかった場合、文字列は翻訳不可能であるとみなされます。
厳密には必要ではないのですが、文字列を翻訳可能とマークするアンダースコアの前後にスペースを入れるのが一般的です。
たとえば、「Hello World!」を翻訳可能な文字列とする場合は、次のように書けば有効な構文と見なされます。

key=_"Hello World!"

そして、こっちも有効です。

key = _ "Hello World!"

要素の間に隙間があるほうが見やすいですね。
ゲームは上記の文字列の両方を同等に翻訳可能な文字列として認識します。
つまり空白を追加するのは、私たち人間にとってのWMLコードの読みやすさが向上するテクニックなわけです。

+++++++++++++++++++++++++++++++++++++++

2.数値ストリング
当然のことながら、数値文字列は、数字、小数点、またはマイナス記号 " - "のみを含む文字列です。
文字列に数字、小数点、および/またはマイナス記号以外のものが含まれている場合はその文字列は数字の代わりに標準文字列になります。
数字の文字列には、次のような例があります。

単純に数字
2
230001

 

浮動小数点値(小数点を含むことができるという単純な表現方法)です。
2.6
395667.49382345

 

マイナス記号の付いた数字
-49
-594.932

 

WMLはこれらの値を実際の数字と同じように扱うことができます。追加、分割、数学的計算でそれらを数学的に使用することができます。
(数字、小数点、またはマイナス記号以外の文字を含めると、文字列は数値文字列でなくなり、標準文字列になります。つまり、数学的計算では使用できません。これについては、[FIXME HERE]の章を参照してください。)※まだ訳してないから気になる人は原文を当たってね。


++++++++++++++++++++++++++++++++++++++++++
さらにタグの詳細
もう少し、タグと属性についての基礎を理解する必要があります。私が以前に約束したように、タグのより複雑な側面についていくつか紹介します。

入れ子タグ:親子
マークアップ言語の基本的な側面は、他のタグセット内でタグセットを使用できることです。他のタグセット内にあるタグセットは、ネストされたタグセットと呼ばれます。
以下の例では、「サイド」タグセットは「シナリオ」タグセット内にネストされています。

 

[scenario]
    [side]
    [/side]
[/scenario]

 

ネストされたタグセットを参照するとき、他のタグセット内にあるタグセットは子タグセットと呼ばれ、
子タグセットを囲むタグセットは親タグセットと呼ばれています。
擬似コードで説明すると

 

[親]
    [子]
    [/子]
[/親]

 

他のタグセットの子タグセットではないタグセットは、トップレベルタグセットと呼ばれます。
次の例では、[シナリオ]タグセットは、他のタグセットの子タグセットではないため、トップレベルタグセットです。 
[event]タグセットは、[scenario]タグセット内にあるため、[scenario]の子タグセットです。 
[message]タグセットは[event]タグセット内にあるため、[event]の子タグセットです。
ついでに、[scenario]は[event]の親で、[event]は[message]の親なので、[message]は[scenario]の孫タグセットです。

 

[scenario]
    [event]
        [message]
        [/message]
    [/event]
[/scenario]

 

+++++++++++++++++++++++++++++++++++++++++++++
インデントとレベル
上記の例では、子タグセットは、親タグセットよりも4つ右にインデントされていることに気づいたかもしれません。
これはなぜでしょう?適切な字下げ(WMLエンジンでは技術的に要求されていませんが)によってコードの読み込みと保守が非常に簡単になるためです。(人間にとってね)
これは原稿用紙に段落の頭で字下げして書くようなものです。

 

I.
    A.
    B.
    C.
II.
    A.
        1.
        2.
    B.
    C.

    
インデントにより、タグセットが他のタグセットの子か親かをより簡単に確認できます。インデントの量でタグセットがタグセットのどのレベルにあるかを決定します。
タグセットがトップレベルのタグセット(つまり、他のタグセットの子ではないため、その前に空白がない)の場合、そのタグセットはレベル1にあります。
手前に4つの空白があるタグセットは、トップレベル(レベル1)のタグセットの子であるため、レベル2に配置されます。レベル2のタグセットの子である
タグセットはレベル3のタグセットと呼ばれ、8つのインデントされ、レベル3のタグセット内のタグセットはレベル4のタグセットと呼ばれ、12個のインデントされます。
タグセットは、そのタグセットの任意の子タグセットと共に、そのタグセットよりも1つ下のレベルでインデントされる。擬似コードで説明すると:

 

[トップレベルタグセット]
    レベル2のキー = 値
    [レベル2タグセット]
        レベル3のキー = 値
        [レベル3タグセット]
            レベル4のキー =値
        [/レベル3タグセット]
    [/レベル2タグセット]
[/トップレベルタグセット]

 

このようにタグセットと属性をレベルにインデントすると、コードを読んだり修正したり維持したりするのがずっと楽になります。
新しいレベルごとに正確に4つのスペースをインデントすることを強くお勧めしますが、スペースキーを4回押すのではなくタブを使用することもできます。
※インデントの量は人によって好みがあるようです、ようは自分が見やすければ問題無いのでしょう。

 

第1章はここまでです。
とりあえず、WMLの基本中の基本はマスターしたと思っていいでしょう。

IIIO Test field ver.0.5.2

1.12.6 アドオンサーバーからダウンロード可能

新しいアドオンをサーバーにアップしました。
このアドオンはキャンペーンの形をとっていますが、ちゃんとしたストーリーがあるような普通のキャンペーンではありません。キャンペーンというより、素材集という方が正しいアドオンです。

このアドオンの目的は以下の通り。

1,マウンテンウイッチのWMLコードのブラッシュアップのためのイベントテスト用。
2,新しく作成するキャンペーンのための素材作り。
3,思いついたアイデア(新アビリティやユニットなど)をテストする。

 

また、他のキャンペーンやシナリオからも利用できるようにロード用の.cfgも添付しています。
自作のアドオンで魔女やアイテムを登場させたい方には有用かもしれません。
ただし、マルチプレイヤーのアドオンでは動かないイベントが多いと思います。

 

このアドオンに実装しているイベントの種類。

●マジックストーンの呪いイベントのセット。
これは、手を入れて吸血鬼退治シナリオにする予定。

●土木工事イベントのセット。
古いバージョンのWesnothのアドオン

「Cities of the Frontier」の土木工事部分を再現するプロジェクト。
作成中キャンペーンで使用する予定。

●マウンテンウィッチのアイテム関連のイベントセット。
アイテムの種類を再考したり、増やしたり。

●その他新ユニットなど。
錬金術士と僕のゴーレム、魔法使いの直接攻撃が凶悪になる武器「かぼちゃの杖」etc.

興味がある方は試してみてください。

酒場などに立ち寄って情報収集・・・RPG ゲームでよくある光景に賑やかしを

加えるために、Mountain_Witchでちょい役だけだったダンサーユニットをブラッシュアップ中。

ダンサーなのでダンスアニメを追加して、普段から踊っているユニットに

変更しようと目論んでいるのだ。

メタルな人たちに似てるのはご愛嬌ということで。

 

完成したダンスアニメはこちら。

最後の一個だけ、頑張ってみた。(他は2種のフレームの繰り返し)

Mountain Witch ver.1.1.2

for wesnoth 1.12.6

Download Password : pcm6jpsr

 

 

●1.12.6バージョンの最新版をアップロードしました。更新日:17.02.19
●1.13.6バージョンはWesnothのアドオン画面からダウンロードしてください。

●主な変更点

 ・ボス戦の演出と難易度を大幅に変更。

 ・マジックストーンのアビリティの動作を変更。

 ・アイテム使用時のテキストの翻訳を改善。

 

 

 

本日、1.13.6版を公式サーバーにアップしました。
日本語にも対応しています。

山の村や白玉のショップで連続購入すると速度低下する現象はMac版だけで発生するようです。
Win版では発生しませんでした。

初回以後のシナリオでのサイドの記述で1.13.6では必須項目が一つ多いことが判明。
前のシナリオで登場したリーダーユニットをそのまま使う場合、省略できる項目がありますが
1.12では省略できたキー「type="unit type"」が1.13では必須になっていました。