この解説は http://rag.kstd.net/ に掲載したpukiwiki形式の解説をhtml形式に変換し、加筆修正を行ったものです。レイアウトが崩れる場合があるので、フォントサイズは中以下(小推奨)でご覧になってください。
当解説は igun v0.11 に即した内容となっています。このhtmlが添加される予定の igun v0.12 バージョンでは仕様が変更されている可能性がありますので、igun の doc ファイルも目を通して置いてください。
また、解説内の記述は著者が独自に検証した結果に基づいています。この解説により利用者に不利益が生じても著者は責任を問われない物とします。
オリジナルマップの作成には、igun と Plutinum と言うソフトを使用します。Plutinum でマップのデザインを行い、igun によって athena で使用するマップの形式(*.gat *.gnd *.rsw )に変換します。
これらのソフトが作成に必須になりますので、Plutinum を所持していない方は http://www.valley.ne.jp/~valencia/ よりご用意ください。igun はこの解説を見ている限り所持しているはずですので、配布先は割愛させていただきます。
igun は End_of_exam 氏による制作のソフトで、マップファイルの変換の他*.rsw の編集や*.spr *.gnd の*.bmp 形式への変換、デバッグ用クライアント機能などを保有します。
Plutinum は valencia 氏制作のゲーム開発者向け汎用マップエディタソフトです。特に athena のオリジナルマップの作成に特化した物では無く、マップ作成に幅広く利用できるすばらしいソフトです。
Plutinum については好きなフォルダ(デフォルトなら C:\program Files 等)に入れて置いてください。
igun も好きな場所で良いですが、コマンドプロンプトで操作する性質上できるだけ浅い階層にある方が作業がしやすいです。この解説では、c:\igun\ に置いてある物として解説していきます。
導入に関してはダウンロードした *.zip を解凍してコピーするだけなのでここで躓いているとこの先は非常に厄介です。
テクスチャとは、立体画像のポリゴンの表面に貼り付ける画像のことです。地面や、凸凹の部分の模様と考えて結構です。
マップ製作に使用する テクスチャ は、8bit(256色) または 24bit(フルカラー 1677万色) の *.bmp 形式です。実際には*.tgaも使用できますが、現在の igun では対応していません(ていうか Platinum 側も対応してないみたい)。ファイル名には英数字のみを使用してください。
テクスチャを 32×32 ドット、または 64×64 ドットごとに区切った マップチップ を Platinum で配置してマップを製作していきます。Gravityによるマップではほとんどが 64×64 ドットのテクスチャですが、画質にこだわらないなら 32×32 ドットでも十分です。テクスチャを自作できない場合は、とりあえずdata.grfから取り出したテクスチャ画像をそのまま使ってマップを製作してみましょう。
テクスチャを用意するときの注意点について書いておきます。テクスチャの画像のうち、一番左上のチップは透明チップとなるため、マップ上に配置できません。Plutinum 上では配置されていますが、変換時に何も配置していないことになります。よって、使用したいチップが左上には来ないようにしてください。
このとき、テクスチャの一番上の部分に 64ドット(または 32ドット)の空白を入れ、マップの変換の際のオプションで テクスチャーの最上段を削る をチェックすれば、完成後のテクスチャが全面使えて無駄が省けます。もちろん、このオプションを使用する際は一番上の空白部分のチップは配置できません。
テクスチャは、チップ数が縦、横共に2の整数乗(1, 2, 4, ... )個になるようにしないと線が入る現象が確認されています。 テクスチャの最上段を削る オプションを有効にする場合、2の整数乗 +1 個になるようにしてください(削った後のチップ数が2の整数乗になるようにする)。
Platinum ver1.67f現在では対応していませんが、マップチップは90,180,270度回転して配置できます。回転を駆使すればテクスチャの枚数を減らせ、容量の減量が可能です(未実装)。
Platinum を起動し、新規プロジェクトを作成します。
マップの横幅、縦幅にはこれから作成するマップのサイズを記入します。ここで製作する際の 1×1 マスはクライアント上では 2×2マス(2歩) となります。よって、マップのサイズはそれぞれ倍の数字となります( 100×100 で製作したら 200×200 マスのマップになる)。
1チップの横幅、縦幅は用意したテクスチャによって 64Pixel または 32Pixel としてください。
データサイズについては、通常では 8ビット で構いません。使用できるテクスチャの最大サイズは下記の表のようになります。
チップのサイズ | 64×64 | 32×32 |
8ビットで扱えるテクスチャの最大サイズ | 1024×1024 | 512×512 |
16ビットで扱えるテクスチャの最大サイズ | 16384×16384 | 8192×8192 |
基本的な操作は、チップウィンドウから配置するチップを選択し、ペンツールでマップ上に配置していく作業の繰り返しになります。この操作については直感でわかると思うので割愛します。
レイヤーについては、既に知っていないとわかりづらいと思いますが、レイヤーウィンドウでより↑の方にあるレイヤーが一番前面に表示され、変換もこの表示されるような形を使用します。
ちょうどセル画を重ねていく作業を思い浮かべてください。レイヤーウィンドウの↓のほうにあるレイヤーが底のセル画で、↑のレイヤーを順に重ねていきます。↑のレイヤーと↓のレイヤーでダブっている部分は、↑のレイヤーのものが優先され、↓のレイヤーの部分は実質無いものと同じになります。まずは地面を作っておき、別のレイヤーでマップ上にある物をデザインすると、後で編集も容易になります。特にレイヤーを分ける必要はありませんが、テクスチャを複数使う場合や、複雑なマップを作る場合にはレイヤーを上手く活用すると作業が格段にしやすくなるので、是非レイヤー機能を活用しましょう(後ほど説明するエキスパートモードの場合などレイヤーを分けないと混乱するかもしれません)。
レイヤーの数に制限は特に無いようですが、あまり多くなりすぎない方が良いでしょう。
マップを選択し、Delete キーを押すと、選択しているマップチップで選択範囲を埋めてくれます。
ペンツールで右クリックをすると、その場所に使用されているマップチップを選択したことになります。ペイントで言うスポイトツールのような挙動です。右クリックでドラッグをすると、範囲で選択できます。その後左クリックで選択した部分を貼り付けることができます。コピペを多用するよりも直感的にわかりやすいと思います。
また、このペンツールで右クリックドラッグにより範囲をコピーした場合、先ほどの範囲選択→Deleteの技でその選択した部分を並べてくれます。塗りつぶしでは一つのチップしか並べられないので、この機能を有効に活用して作業を簡略化していきましょう。
次に高さフラグを設置していきます。高さフラグは、レイヤーを新しく作成し、_height と言う名前にして置いてください。igun は変換時に _height と言う名前のレイヤーを高さの値として読み込むので、これ以外の名前では変換時にエラーとなります(高さの値の指定が無いとされる)。
高さの設定の仕方は、マップの作成と同じくチップセットからチップを選び、ペンツールで配置する作業となります。このとき、チップIDが高さとなります( ID:8 のチップを設置したら高さは 8 )。
_height レイヤーについては特に編集時にテクスチャを用意する必要はありませんが、適宜高さ別に色を分けたテクスチャを用意すると作業が見た目にわかりやすいです。パーツ番号 を表示する設定にしていると、_height ではパーツ番号=高さの数値となるのでわかりやすくなります。ここで使用したテクスチャはマップに変換する際には使用されませんので、安心してください。
高さは、習うより慣れろと作者も言っている通り、慣れの問題です。
この画像を参考にしていただければ大体の高さの目安になると思いますが、マップは3Dでキャラは2Dです。カメラの角度によって高さの見え方は変わります。まずは色々な高さで自由に視点を変えながら感覚を養ってください。ちなみに私のお勧めは、階段の段差は 4 、ダンジョンなどの壁は 32 です。床の高さ(基準面の高さ)が 0 じゃない場合はそれぞれ考えてください。
なお、通常モードでの高さの値は、それぞれのマスの左上の部分の高さとなります。1マスを四角に浮き上がらせたい場合は、そのマスに加えて、右、下、右下も同じ高さにする必要があります。高さが連続しないチップ同士は斜面でつながれます。
通行禁止フラグは、高さフラグより簡単です。高さフラグと同じく、レイヤーを新たに作り、今度は名前を _movable としてください。こちらもチップセットから選択して配置する作業です。
通常では全ての ID が 0 になっていると思いますが、0 の状態が通行可能の状態です。通れない部分に ID:1 のチップを当てはめていってください。実際では 0 以外の数値なら全て通行禁止になりますが、特に使う必要も無いので 1 にしておきましょう。このレイヤーに関しても、使用されたテクスチャなどはマップに変換した際使用されません。
これでマップの基本の作成は終了です。*.ppj 形式で保存してとりあえずマップデザイン作業は完了です。
では、次に *.ppj をラグナロクのマップ形式に変換しましょう。ここで、igun を使用します。コマンドプロンプトでの作業なので慣れないと大変ですが、cygwin で athena を運営しているなら簡単です。
igun は C:\igun\ にあるとします( C:\igun\igun.exe )。まず準備として、*.ppj、そして製作に使ったテクスチャをigun.exeと同じフォルダに入れておきます。ここでは、testmap.ppj というマップファイルで、テクスチャには 01.bmp、02.bmp を使用したとします。
コマンドプロンプトを起動します。9x系ではMSDOSプロンプト、2k系ではアクセサリ→コマンドプロンプトで起動します。起動した状態ではカレントフォルダは C:\Documents and Settings\自分のログ名 になっているので(9x系はC:\?)、↓のように打ってigunのフォルダに移動します。
cd C: cd igun |
igun -map testmap.ppj |
高さの計算式については通常はこのままでOKです。
[倍率]*入力値+[加算値] |
設定を済ませ、OKを押すと変換が始まります。正常に変換されれば、igun フォルダ内に data フォルダが作成され、中には
testmap.rsw testmap.gnd testmap.gat texture\01.bmp texture\02.bmp texture\タッタタホナヘニ菎フスコ\testmap.bmp |
では、次にマップに装飾をつけていきます。ここまでで制作したマップは地面のデザインだけされている状態で、オブジェクトが何も無く、ガラっとした雰囲気だと思います。オブジェクトを配置したり、照明や水面を設定してマップに彩り(?)を付けましょう。
解説の前に、ここでマップに使用されるファイルについての解説を加えたいと思います。
*.gat : いわゆる地図。歩ける座標や高さなど。 *.gnd : マップのデザイン。使用するテクスチャの指定、見た目の構造。 *.gat と *.gnd で高さが違う場合、見た目は *.gnd 、キャラが歩く高さは *.gat が適用される。 これを利用すると、オブジェクト上を歩くときなどにオブジェクトの下に水があるなどを実現できる。 *.rsw : マップの装飾。水面の高さや照明の強さ(色)、オブジェクトの配置など。 *.rsm : 配置するオブジェクトファイル。 *.bmp : *.gnd、*.rsm に貼り付けるテクスチャファイル。 |
コマンドプロンプトを起動し、マップの変換のときと同じようにカレントフォルダを igun のフォルダに移動します。さっきは -map コマンドを使用しましたが、*.rsw の編集は -rsw によって行えます。
先ほど作成したマップの、*.rsw ファイルは data\testmap.rsw なので、
igun -rsw data\testmap.rsw |
igun -rsw |
このソフトの機能は、大きく分けて Rsw Objects(画面左側)と Rsw Header(画面右側)に分かれます。Rsw Objects では、オブジェクトの配置ができますが、まずはマップの設定の方から解説します。
画面右側のRsw Header の部分を見てください。ここでは水面(海、池)の設定と照明の設定ができます。
水面の高さは、作成したマップの座標で考えてOKです。ただし、少し↑の方でも言ったように高さは下向きが正です。Plutinum で 20.0 の高さに水面を持ってきたい場合、ここでは -20.0 と指定してください。もちろん、マップ変換時に高さの計算式を弄った場合はその設定を考慮して設定してください。
次に水面の色です。水面の色は右側が欠けていますが、
00 : Normal light colored water (Prontera) 01 : A little darker water 02 : Very light/tropical water (Jawaii) 03 : Very dark water (Culvert) 04 : Lava (Magma Dungeon) 05 : Dark/muddy water |
振幅 : 波の鉛直方向の振幅。通常は 0.00 〜 1.00 程度が指定されていて、2.00 以上を指定しているマップは少ないです(新フェイヨン等)。 速度 : この数値は水面の表面に張るテクスチャのアニメーション周期として指定します。 振動中心 : 波の水平方向の位相。この値は 360 との剰余の結果を整数に丸めて使用されます。 波の2頂点の位相で、この値が 180 に近づくほど波が不安定になり、転がりだすでしょう。 |
光の強さは、それぞれRGBの色の強さです。全てを 1.00 にすれば地上の白色の照明となります。ダンジョンなどの暗いマップでは、0.35 程度にすると感じが出ます。
光の拡散についてはigun0.11現在で未実装のため検証不可。
では、次にオブジェクトの配置の説明をします。現在のバージョンでは、オブジェクトの新規配置には対応していませんので、既にオブジェクトが設置された *.rsw からコピー&ペーストで設置していきます。新たにコマンドプロンプトを起動し、見本にする *.rsw ファイルでrswエディタを起動してください。
開いた *.rsw にはオブジェクトが定義されていると思います。この中から設置したいオブジェクトファイルを選択し、 コピー をクリックします。そして、自作の方のrswエディタで 貼り付け をクリックしてください。オブジェクトが追加されたと思います。このままでは、元のオブジェクトと座標などが同じままなので、自分のマップに合わせて設定しなおしましょう。
設定項目は以下の通りです。
X | Y | Z | |
Position | 配置x座標 | 配置高さ座標 | 配置y座標 |
配置x座標はマップ上のx(横)座標、配置y座標はマップ上のy(縦)座標です。指定する数値についての詳細は↓で解説。オブジェクト底面の中心の座標で指定してください。 | Rotation | y軸方向傾き | 配置向き角度 | x軸方向傾き |
x軸方向傾きは右向き正、y軸方向は下向き正です。それぞれの数値は 0°〜360°で指定する。 | Size | 横幅 | 高さ | 厚さ |
*.rsmファイルのデフォルトのサイズが 1.00 です。割合で指定してください。 | |||
Layer | オブジェクトのラベルです。メモなどに使用可。 | ||
Rsm | *.rsmのファイル名。変更しないように。 | ||
Model | オブジェクトの名称?記述は自由だと思われるが、特に変更しないで良い。 |
通常モードでは高さの設定はマスごとの左上の部分しか設定できませんでしたが、エキスパートモードを使用するとマスの左上、右上、左下、右下の各4点の高さが設定できます。また、それによってマス同士で高さが連続しない部分ができると思いますが、その部分は通常モードと違い、地面に垂直な壁ができます。
エキスパートモードでは、通常モードの1マス分の情報を4マスで表現します。レイヤーの種類によって仕様が変わりますので、それぞれを説明していきます。
通常レイヤー(マップデザイン)では、偶数座標(2x, 2y) が水平面のテクスチャ(上から見た部分)を表し、(2x+1, 2y)、(2x, 2y+1) が鉛直方向のテクスチャ(横から見た部分)となります。(2x+1, 2y+1) は使用されません。高さが連続しないチップ同士は、鉛直方向のテクスチャを指定しないと透明の壁になってしまいます。また、(2x+1, 2y) では右側しか指定されないので、左側にもテクスチャを張る場合は (2x-1, 2y) にもテクスチャを指定してください。同様にy軸方向でも (2x, 2y+1) だけでなく (2x, 2y-1) にもテクスチャを張る必要があります。
高さが連続している場合は鉛直方向のテクスチャは必要ありませんが、指定していても問題はありません(塗りつぶしなどで一気に張ることでも操作を簡略化できる)。
高さフラグ( _height )では、偶数座標(2x, 2y) がチップの左上、(2x+1, 2y) が右上、(2x, 2y+1) が左下、(2x+1, 2y+1) が右下の高さになります。チップ内(この4箇所の中)で高さが違う場合、そのチップは斜面となります。チップとチップの間で高さが連続しない場合、くどいようですが鉛直方向のテクスチャを用意する必要があります。
通行禁止フラグ( _movable )では、偶数座標(2x, 2y) だけを使用します。他の部分は無視されます。
エキスパートモードでは、通常モードで制作したマップはそのままで使えません。使うには使えますが、マップとしては成り立つ物にならないことがほとんどです。igun には、通常モードで制作したマップをエキスパート企画に変換する機能がありますので、この機能を使います。コマンドプロンプトで既に igun のフォルダがカレントフォルダになっているとして、次のコマンドを打ってください。もちろん、マップファイルの名称が違う場合は作ったファイルにあわせてください。
igun -ppj testmap.ppj |
さて、言葉だけではわかりづらいと思いますので、こちらの画像を見てください。
数字は _height で使用しているチップID、つまり高さです。青紫と青の部分が偶数座標となります。この状況では、青い部分が他の部分に比べて持ち上がっていることになります。
高さが連続しないために鉛直方向のテクスチャを用意します。それらが、赤、紺、深緑の部分です。高さが 32 になってる部分がでっぱった箱の形になり、紺が横、赤が奥、深緑が手前のテクスチャとなります。 つまり、これを変換してクライアントから見ると、↓のようになります。
視点を変えると(奥から見ると)
のようになります。
エキスパートモードは複雑な仕様ですが、慣れればこちらの方が高さの設定など直感でわかりやすいと思います。階段や複雑な地形を実現するにはエキスパートモードが必須となりますので、がんばってマスターしてください。
鉛直方向のテクスチャは、1マス分のテクスチャを引き伸ばすことになるので、画質が低くなります。本家のマップでは、壁に 64×256 ドットのテクスチャを当てている部分がありますが、これの実現について解説します。
まず、64×256 ドットのテクスチャを横に4つ並べて 256×256 のテクスチャを用意し、このテクスチャを 256×64 に縮小、または 256×64 に切り取って(元のデータは残しておくこと)、マップ製作を行ってください。マップの変換後、このテクスチャの画像を、元々用意していた縮小されていない *.bmp に置き換えます。そうすると、64×256 のテクスチャを鉛直方向に張ることが可能になります。
この仕組みは、マップのテクスチャは *.bmp の座標切り取りではなく、相対%座標の切り取りで行われているために起こります。256×64 のサイズで作った場合、ID:0 では (0%, 0%)-(25%, 100%)、ID:1 では (25%, 0%)-(50%, 100%)、…のように切り取って配置されます。よって、 *.bmp をマップ作成後に引き伸ばしても 100% といった数値が変わらないので、64×256 ドットのテクスチャを張ることができます。
ちなみに、チップ数が2の整数乗になるようにしないといけないのはこの仕様のためです。プログラムの内部では小数は無く、全て分数で表されます。しかもその分数は分母に2の整数乗しかつかえません。例えば、チップ数が3の場合、0.333333 も 1/3 も正確に算出できないため、線が入ってしまうわけです。
では、最後にエキスパートモードを使った階段を紹介します。
このような階段を作りたいと思います。解説画像を用意しましたので、こちらをダウンロードしてください。テクスチャは各自で用意してください。
解説画像では、わかりやすいように水平面のテクスチャを青紫、鉛直面のテクスチャを茶色で表しています。赤い数字は例の如く _height で使用しているチップID、つまり高さです。この解説の通りに作ると普通に歩く階段としては、段差がありすぎるので、自分で作る時は段差を少なくしてみる方が良いかもしれません。階段は横に斜めの坂をつけたりと応用ができますので、いろんな発想に挑戦してください。なお、SSでは少し↑で解説している 64×256 ドットのテクスチャを使用する技を使っています。どのように活用したかは各自で頭をひねって見ましょう。64×256 にこだわらなくても、例えば 64×128 や、64×196 といったものも使用できます。
この解説を作成するに当たって、igun 作者の End_of_exam 氏によるigun 説明書 [doc\index.html] と オリジナルマップ作成 [doc\gmap.html] 、また igun のソース [src\*.c src\*.h]を参考にさせていただきました。また、一部資料の和訳も氏による和訳を一部参考にしています。この場を借りてEnd_of_exam氏に感謝の意を表します。
また、私の制作したマップのデバッグと解析に協力してくれた友人にも、併せてお礼申し上げます。
最後まで読んでくれたあなたには、こちらをプレゼントします。私が制作の時に(たまに)使用している、高さフラグ、通行禁止フラグ設定のサポートBMPとミニマップ制作用のテクスチャです。
この解説では -map -rsw -ppj しか掲載していませんが、他にも *.spr を *.bmp に変換したり、*.act を *.avi に変換したり、*.bmp のビットレートを変換したりと使える機能が満載ですので、docの方にも目を通してみてください。
また、ファイル名の指定の部分に * または ? を使用すると、条件に適したファイル全てで処理を行います。例えば、igun -spr *.spr と指定すると、同じ階層にある *.spr 形式のファイルを全て *.bmp に変換します。オプションの組み合わせ方などによって機能はさらに増えますので、色々と試してみるのも楽しいです(私もやったこと無い組み合わせとかも多い)。
同じ言葉を繰り返したり〆が上手くいかないのは、まとめる能力に乏しい私の欠点です。ご了承ください。
この解説は http://rag.kstd.net/ に掲載したpukiwiki形式の解説をhtml形式に変換し、加筆修正を行ったものです。 本文に関する著作権は柳霜杞紗 [ Kisa Yanashimo ] が保持しています。また、当コンテンツの再利用(再転載・配布など)は、GPLに基づき許可します。 This manual is converted to html style from pukiwiki form (pablished on http://rag.kstd.net/), and retouched. The copyright of this manual is held by Kisa Yanashimo. If you want to reuse (re-reproduction, distribution, etc...) these contents, it is permitted based on GPL. C.O.M.A. ver 1.00 : 2005/04/07 begun to write the manual of igun C.O.M.A. ver 1.01 : 2005/04/10 writing is completed C.O.M.A. ver 1.10 : 2005/04/11 convert to html style, add & correction of description C.O.M.A. ver 1.11 : 2005/04/13 add & correction of description C.O.M.A. ver 1.12 : 2005/05/08 based on GPL, correction of description |