チュートリアル 2
ワールド制作の第一歩・空のワールドを作る
前章でTransportX用データの構造を学びましたが、次は実践です。まずは何もないワールドを作ってみて、インプットした知識を確実なものにしましょう。
ワールド情報ファイルを作る
前章で述べたように、まずはデータの概要をまとめたファイルであるワールド情報ファイルが必要となります。
TransportX公式サンプルデータの BasicSample.xml、OkayamaCity.xml(いずれも samples フォルダ内)がこれに該当します。
まずは例として、samples\BasicSample.xml の中身をテキストエディタで見てみましょう。次のようになっているはずです。
<?xml version="1.0" encoding="utf-8" ?>
<WorldInfo>
<Title>サンプルワールド</Title>
<Description>動作確認用のワールドです。</Description>
<Author>automatic9045</Author>
<Path>$(bin)TransportX.Scripting.dll</Path>
<Args>
<Arg>BasicSample\World.csx</Arg>
</Args>
</WorldInfo>
要素を1つずつ見ていきましょう。
Title:ワールドのタイトルを設定します。Description:ワールドの簡単な説明文を記述します。Author:ワールドの作者名を設定します。
ここからが重要です。
Path
ワールドが定義されているdllを相対パスで指定します。 前章で述べたように、ワールドの作り方はα0.3の時点でプログラミング方式、スクリプト方式の2種類をサポートしていますが、プログラミング方式の場合は作成したdllのパスをそのまま指定します。
スクリプト方式の場合はTransportX本体(bin フォルダ内)に同梱されている TransportX.Scripting.dll のパスを指定する必要があるのですが、
bin フォルダの相対パスはワールドデータとTransportX本体の位置関係によるため、ユーザーやデータ毎に異なってしまいます。
そこで、$(bin) と記述すれば、起動されたTransportX本体の配置されている bin フォルダのパスが自動で設定されるようになっています。
ここまでの説明がよく分からなかった方も、「スクリプト方式のときは $(bin)TransportX.Scripting.dll と記述しておけば良い」とだけ覚えていただければ大丈夫です。
Args
<Path> 要素で指定したdllに任意個数の引数(追加情報)を渡すことができます。
スクリプト方式(TransportX.Scripting.dll)の場合は、引数は1つだけとり、次章で作成するワールドファイルの相対パスを指定します。
今回はワールド情報ファイル samples\BasicSample.xml から BasicSample\World.csx を指定しているため、ワールドファイルとして samples\BasicSample\World.csx が読み込まれます。
オプション:RuntimePath
前章で述べたように、ゲームの根幹に関する機能を設定する「ランタイム」という層が存在します。
<RuntimePath>Hogehoge.dll</RuntimePath> などと記述することで、使用するランタイムをデフォルトのものから変更することができます。
何も記述しなければデフォルトのランタイムが使用されるので、はじめのうちはそのままで構いません。
作ってみよう
それでは、いよいよ実際にワールドの制作を始めていきましょう。
ここまでに見てきたサンプルワールドのワールド情報ファイルを参考にして、あなたのワールドを作っていきます。
MyFirstWorld.xml などとしてワールド情報ファイルを新規作成してください。
配置するフォルダはどこでも構いませんが、はじめのうちはサンプルデータと同じ samples フォルダ内に作るようにしておくと分かりやすいかと思います。
作成できたら、VSCodeやメモ帳などのテキストエディタでファイルを開き、次のように記述します。
<?xml version="1.0" encoding="utf-8" ?>
<WorldInfo>
<Title>初めてのワールド</Title>
<Description>初めて作ったワールドです。</Description>
<Author>あなたのハンドルネーム</Author>
<Path>$(bin)TransportX.Scripting.dll</Path>
<Args>
<Arg>ここはまだ空欄で構いません</Arg>
</Args>
</WorldInfo>
「ここはまだ空欄で構いません」と記載した部分は、先述した通り、この後作成するワールドファイルのパスを指定する部分です。現時点ではまだ空欄で構いません。
ワールドファイルを作る
ワールド情報ファイルが準備できたら、次はワールド制作のメインとなるワールドファイルを作っていきます。このファイル内で建物や信号機を設置したり、道路を敷設したりしていくこととなります。
ワールドデータ用フォルダの準備
まずは、ワールド情報ファイルを配置したフォルダ内へ、新たにフォルダを一つ作成します。
この中にワールド関連のファイルを格納していくこととなるので、フォルダ名の制約は特にありませんが、今回作成しているワールドであることが分かる名前にしてください(MyFirstWorld など)。
ワールドファイルの作成
フォルダを作成できたら、その中に World.csx などとしてワールドファイルを新規作成します。中身はこの章では空のままで構いません。
ワールド情報ファイルへのパス指定
最後に、作成したワールドファイルへの相対パスをワールド情報ファイルの Args 内に記述します。
例えば、ワールド情報ファイルが samples\MyFirstWorld.xml、ワールドファイルが samples\MyFirstWorld\World.csx の場合、ワールド情報ファイルの中身は次のようになるはずです。
<?xml version="1.0" encoding="utf-8" ?>
<WorldInfo>
<Title>初めてのワールド</Title>
<Description>初めて作ったワールドです。</Description>
<Author>あなたのハンドルネーム</Author>
<Path>$(bin)TransportX.Scripting.dll</Path>
<Args>
<Arg>MyFirstWorld\World.csx</Arg>
</Args>
</WorldInfo>
動作確認
ここまで完成したら、実際に読み込んでみましょう。bin\TransportX.Player.exe を実行し、表示されたワールド選択画面で作成したワールド情報ファイルを選択してください。
エラーが一切出力されず、次のような灰色一色の画面が表示されたら成功です。

ワールド内にはまだ建物はおろか、空も地面も設置していないため、デフォルトの灰色の景色が描画されています。次の章ではここに空や地面などのオブジェクトを設置していきましょう。
おまけ:Hello, World!
動作確認用に、ワールドの読込が完了したタイミングでダイアログを表示することができます。 ワールドファイルへ次のように記述してください。
Debug.ShowDialog("Hello, World!");
実行すると、次のようなダイアログが表示されます。

付録
付録として、この章の完成データを配布しています。どうしても動かないときなどの参考にお使いください。