Siege University 200■講義201 テンプレート#1<テンプレートとは>テンプレートとはレベルの最も基本となるもので,単なるグラフィックスやサウンドなどをゲーム内のオブジェクト(岩,木,剣,クリーチャーなど)として作り出してくれます。テンプレートはゲームのオブジェクトを言語にしたもののブロックからなっています。 どうしてテンプレートを作るのか テンプレートってどんなもの?
[t:template,n:blacksmith_hammer]
{
specializes = base_misc_fs1;
category_name = "other";
doc = "blacksmith hammer";
[aspect] { model=m_w_hmr_004; }
[attack]
{
damage_max = 2;
damage_min = 1;
}
[common]
{
screen_name = "Blacksmith Hammer";
}
[gui]
{
active_icon = b_gui_ig_i_ic_hmr_001;
inventory_height = 2;
inventory_icon = b_gui_ig_i_w_hmr_004;
inventory_width = 1;
}
}
(world\contentdb\templates\regular\interactive\wpn_misc.gasより)
ダンジョンシージの素晴らしいところのひとつは,大量のドキュメントがゲームファイルそのものに含まれていることです。これから説明していくものの多くは,後に述べる様々なファイルの中にも含まれています。この資料はファイルの冒頭のコメントの形態であるか,データファイル中に挿入されています。"template.gas"や"components.gas"(後述)などがその良い例となります。 ひとつ忘れてはならないのは,これらファイルの中のいくつかの資料(テンプレート)は開発段階の機能やシステムのために書かれた古いものも含まれているということです。ダンジョン・シージの開発段階からリリースバージョンまでの間に,機能面での操作やシステムが変化したことはありえます。それゆえテンプレートに含まれている情報はこれらファイルの情報に関連して使用される必要があり,ここに含まれるデータはファイルの資料よりも優先されます。 <テンプレートの構造>テンプレートは以下の3タイプのデータで構成されています。
ここでは4つ挙げましたが,一番下の"ブロック"とは,その上3つ(コンポーネント,フィールド,値)の集合体のことです。 テンプレートは「コンポーネント」,1つ以上のコンポーネントの「フィールド」,そしてそのフィールドの「値」の3つの要素からなる「ブロック」で構成されています。上記テンプレートの[common]ブロックを見てみましょう: [common] このブロックには1つのフィールド(screen_nameとその値"Blacksmith Hammer")が含まれています。このブロックはコンポーネント(この場合[common])の宣言がなされていると見なされ,すべて大括弧({,})で括られています。ブロック内のフィールドラインはセミコロン(;)で終わります。C,C++,Javaなどといった言語に慣れている人なら,こういった構文的な慣習に見覚えがあると思いますが,こういった括りが無ければオブジェクトはゲームエンジンにロードされません。 すべてのテンプレートは"world\contentdb\templates"にある"Logic.DSRES"のGASファイルで見ることができます。 すべてのベーステンプレートは,\regularサブディレクトリにあるtemplate.gas(後述します)内にコア・テンプレートを含んでいます。\veteranと\eliteディレクトリにあるテンプレートは,他の2つのテンプレートからチューンされたものです。この文書を読んで,テンプレートとその構造に慣れたら,いかにしてゲームエンジンが難易度レベルを作成するためにテンプレートを使っているかということを学ぶためにも,\veteranと\eliteのファイルやテンプレートを見てみる事をお奨めします。 ・コンポーネント テンプレートを学ぶに最もふさわしいファイルは,Logic.DSRESファイルに含まれる,"world\contentdb\components\components.gas"でしょう。 これはゲーム内のコンポーネントやそのフィールドを解読するための暗号解読書ともいえるものです。何らかのテンプレートを見る際,様々なコンポーネントやそれに含まれる無数のフィールドに慣れるためにも,このファイルを開いておくことをお勧めします。テンプレート内に新しいコンポーネントを発見した時にconponents.gasを参照すれば,それが何をするものなのかを見つけることができるでしょう。 ・フィールド
[screen_name]
{
type = string;
flags = LOCALIZE;
doc = "Text seen in-game upon mouse over";
}
components.gasに含まれるすべてのフィールドの中で重要な部分は,"default="と"doc="です。それぞれのフィールドには"default"があり(このケースのように,例外もありますが),"doc"は(通常は)そのフィールドの目的が正確に記述されています。しかしこのcommonコンポーネントのフィールドには"default"が含まれていませんが,この事については次に述べる「特殊化」の項目でさらに詳しく述べましょう。
・値 次のページへ |