RPGもどき開発者ガイド
RPGもどきの開発者ガイドです。
RPGもどきは、最終的にデータ分離型ローグ(って、知ってる人いるのかな?)みたいに
データ部分を外部スクリプトで用意することで誰でもデータをカスタマイズでき、
更にそのマップと設定を他の人のマップとリンクさせることができるようになっています。
そんな訳で、用意すべきデータフォーマットなどをまとめてみます。

例1最初の世界「ユニコーン大陸(だったらしい)」の設定ファイルです。
例2スタート地点からすぐの川をまたいでいる洞窟の設定ファイルです。
マップと照らし合わせるとわかりやすい!?
基本データ
動作に必要な基本的なデータです。

<データ>
 //データ作者情報  new creater("作者","linkURL");
 createrinfo = new creater("Blaze","http://www2.gol.com/users/blaze/index.html");  
 //フィールド画像情報  new image("作者","linkURL","画像ファイルディレクトリ")
 imageinfo   = new image("Blaze","http://www2.gol.com/users/blaze/","./img/")
 //配列番号対応文字列(変更不可)
 numString = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

createrinfoはマップのデーター作者情報です。 メイン画面の左下に名前とリンクが表示されます。
imageinfoはRPGもどきで使用する地形などの 画像情報です。作者とlink、画像ファイルディレクトリのURLを設定します。
numStringはこれから設定するデータを配列番号に変換する為の 文字列です。たとえば、「a」というデータを指定すると配列番号は「10」が戻ります。(文字の位置が値です)
詳しくは各データの部分で説明します。

マップデータ
マップデータに関するパラメーターの説明です。

<データ例>
 mapsize = 30;
 startPosit = 62;
 map = new Array();
 map[0]  = "000000000000000000000000000000000000000000000000000000000000";
 map[1]  = "000000000000000000000000000000000000000000000000000000000000";
 map[2]  = "000021212100000021212121000022424242424242424242424200000000";
 map[3]  = "000021212121212121212121210022222242420000429142004343000000";
  ・
 map[29] = "000000000000000000000000000000000000000000000000000000000000";

mapsizeはマップの横のサイズです。
startPositはキャラクタのスタート位置です。(座標はx+y*mapsizeになります)
マップデータは、各地形ブロックが「地形データ+モンスター出現エリア」からなっています。 各値は0〜9、a〜z、A〜Zを取ることができます。この値は、numStringと照らし合わせて(何文字目にあるか調べます) 数値に変換されます。たとえば、「2a」という地形は、地形が2、モンスター出現エリアが10となります。 現在の地形データに関しては、
地形パネル設定を参照してください。

画像は出来れば新しいものを作って欲しいです ^^;必要となるのは、各地形のデータ(1.jpg,2.jpg・・・)と キャラクターが重なった(地形番号+p).jpg (草原だと2p.jpg)です。
表示画面の関係上マップの周囲2ブロックは進入禁止地域としてください。30x30のマップですと、 実質移動できる範囲は26x26になります。
モンスター出現エリアの値は、後述のモンスター出現エリア表立て札メッセージ表町データ表 に関係してきます。
モンスター出現エリア表
モンスター出現エリア表に関する説明です。
この表は地形が立て札や町などのイベント地形で無いときに関係します。出現エリアの文字をnumStringに 照らし合わせて得た数値が配列番号に対応します。
<データ例>
 monsArea = new Array();//モンスター出現エリア表
 monsArea[1] = "00000000001111112222";
 monsArea[2] = "00112223330011222333";
   ・
 monsArea[9] = "eeeeeeeeeeeeeeeeeeee";

この配列要素は後述の、
モンスター表の配列番号(の素)を出現割合で並べた物です。
例えばモンスター出現エリアが1の地形では、monsArea[1]を用いて、numStringと照らし合わせた配列番号が0と1と2のモンスターが 10:6:4の割合で出現、monsArea[9]では、numStrinで「e」の場所、つまり配列番号14のモンスターしかでないという感じです。
モンスター表
モンスターのパラメータです。

<データ例>
 //モンスターステータス new monster("名前",HP,AT,DF,SP,DI,HIT,AV,EXP,GOLD,imgfile,creater,linkurl);
 monsParam = new Array();
 monsParam[0] = new monster("スライム",8,5,3,3,3,100,2,1,4,"img/mons0","Blaze","http://www2.gol.com/users/blaze/index.html");
 monsParam[1] = new monster("スライムベス",9,6,3,3,3,100,2,2,5,"img/mons1","Blaze","http://www2.gol.com/users/blaze/index.html");
 monsParam[2] = new monster("おおこおもり",10,5,2,6,4,95,10,3,8,"","","");
   ・
 monsParam[14] = new monster("えびるどらごん:150:25:30:30:20:130:30:1000:3000,"","","")
   ・
 monsParam[99]= new monster("お墓",0,0,0,0,0,0,0,0,0,"img/mons999","Blaze","")

配列番号がモンスター番号になります。モンスターエリア表の値とも直結しています。
たとえば、モンスター出現エリアが1の地形はモンスターエリア表
monsArea[1] = "00000000001111112222"を用いる という話でしたが、モンスター表に照らし合わせると、「スライム」、「スライムベス」、「おおこおもり」が10:6:4で 出現する地形であるとなります。
モンスターの最大数はモンスター出現エリア表で指定できる0〜9,a〜z,A〜Zまでの62です。
#記号も使えばもう少し拡大できます。
ステータスはパラメータはobjectで持たせています。各パラメータの意味は、

名前モンスター名。戦闘時に使用されます。
HP基本HPです。もちろん多ければ強敵になります。
AT基本攻撃力です。与えるダメージに関係します。
DF基本防御力です。受けるダメージ減少に関係します。
SP基本スピードです。イニシアチブ、逃走判定、回避判定に関係します。
DI基本ダイスボーナス。ダメージ(攻撃&防御)に0〜DIの値のボーナスが加えられます。
HIT基本命中率。攻撃の成功判定に使用されます。基本値は100(%)。
AV基本回避率。攻撃の回避判定に使用します。基本値は0(%)。
EXP倒したときに得られる経験値です。
GOLD倒したときに得られるGoldです。
imagefileモンスターの画像ファイルURL(一部)です。
creater画像データの作者です。画面の左下に表示されます。
linkurllinkしたいURLです。

モンスターのグラフィック表示はimagefileが設定してあると表示しに行きます。 データは38x38を3x3(マップ画面の中央3x3)がグラフィックサイズで、左上よりimagefile+0.jpg(imagename0〜8.jpg)となります。 試しに2,3 作ってみました。(簡単なのばかり。わたしの作画レベルはこんなもんです。でもノートのタッチパネルで描いたにしてはまあまあ?) お墓データはmonsParam[99]に入れてください。
立て札メッセージ
立て札で表示されるメッセージです。
<データ例>
 boardMess    = new Array(); //立て札メッセージ
 boardMess[0] = "↑北 マイラの村 ↓南 砂漠";
   ・

これもモンスター出現エリアと考え方は同じです。地形が8,a,b(立て札)のときのモンスター出現エリアの 値が読み込まれる立て札の番号(numStringで変換された)になります。8aの地形ではboardMess[10]の 文字が表示されます。
洞窟データ表
洞窟というか、RPGもどきでマップをリンクさせる為の情報です。

<データ例>
  //洞窟情報 caveParam[i] = new mapLink("設定ファイルURL","メッセージ",リンク先マップ位置)
  caveParam = new Array();
  caveParam[0] = new mapLink("rpgparam.js","外に出ますか?",220);
  caveParam[1] = new mapLink("rpgparam.js","外に出ますか?",252);

考え方はモンスター出現エリアと同じです。地形がcdefgのいずれかのときのモンスター出現エリアの 値の洞窟データを読み込みます。ここでもnumStringで変換した値を使用します。 データ内容は、
caveParam[x]=new mapLink("リンクしたいjsファイルURL","表示させたい文字",リンク先でのスタート地点)
です。スタート地点は、マップ座標(x,y)のときx+y*mapsizeで求めます(x,yは0から)。
自分のマップへのリンクを設定するには、リンクもとのデータ作者に設定していただ くことになります。相互リンクみたいに盛り上がると面白くなりそうなんですが。
町データ表
町のデータです。宿屋と武器防具屋,道具屋が用意されています。
<データ例>
 cityParam = new Array(); //町パラメーター("名称:宿屋料金:装備屋タイプ:道具屋タイプ")
 cityParam[0] = "アリエスの街:15:0:0";
 cityParam[1] = "マイラの村:30:1:1";
    ・
    ・

これもモンスター出現エリアと考え方は同じです。地形が9(町)のときのモンスター出現エリアの 値の町データを読み込みます。ここでもnumStringで変換した値を使用します。 設定する項目は、町の名称、宿屋の料金、
装備屋タイプ道具屋タイプです。

装備屋タイプ表
武器防具屋のデータです。
<データ例>
 //装備屋品揃え表
 shop1Param    = new Array();
 shop1Param[0] = "2:32:62:91:121:0";
 shop1Param[1] = "3:32:62:92:121:0";
   ・
   ・

売り出している装備品の番号を:区切りで並べます。現在の装備品リストは、
装備品という感じになっています。 これを町データと装備品表をリンクすると、 「アリエスの町」では装備屋タイプの0番目を使用して、 「銅の剣」、「皮の盾」、「革の鎧」、「皮の帽子」、「縁日リング」が売られているとなります。 装備品は各種類30種類までで、装備品を追加したい際には御連絡ください。データを追加します。
道具屋タイプ表
道具屋のデータです。
<データ例>
 //道具屋品揃え表
 shop2Param    = new Array();
 shop2Param[0] = "1:2:8:9";
 shop2Param[1] = "2:3:4:10";
   ・
   ・

売り出しているアイテムのINDEXを:区切りで並べます。 考え方は装備屋と同じです。現在の道具品リストは、
道具品という感じになっています。 これを町データと道具品表とリンクすると、 「アリエスの町」では道具屋タイプの0番目を使用して、 「ぽーしょん」、「はいぽーしょん」、「けむりだま」、「ばくだん」が売られているとなります。 道具品を追加したい際には御連絡ください。データを作成します。
宝箱タイプ表
宝箱のデータです。
<データ例>
 //宝箱パラメータ 20パターン t?:宝(?アイテム番号) e?:敵(?モンスター番号) n0:(空)
 tsParam = new Array();
 tsParam[0] = "t1e0e1e2n0n0t1t2e1n0e0n0e1e2t9n0n0t3e1t8";
 tsParam[1] = "t1e0e1e2n0n0t1e1e1n0e0n0e1e2t9n0n0t2e1t8";
   ・
   ・

宝箱をあけた時の中身のデータです。地形がt0の時tsParam[0]のデータを用います。
レバー情報表
レバー情報のデータです。
<データ例>
 //レバー情報 (扉の座標1,扉の座標2,・・・)
 lvParam = new Array();
 lvParam[0] = "215";
 lvParam[1] = "79,84"
   ・
   ・

レバーを動かした時の動作する壁の位置の表です。レバーは動作させると扉の開閉が逆転します。 データには開閉させる扉の座標をカンマ区切りで列記します。
クエスト情報表
クエスト情報のデータです。
<データ例>
 //クエスト情報
 questParam = new Array();
 questParam[0] = new quest("村人:「ハチミツを採りに来たんだが、凶暴な熊がいて困っているんだ。\n誰かハチミツを採ってきてくれないかな。」","旅人:「おお、ありがとう。御礼にこのかいふく石をあげよう。」","村人:「ほんとに助かったよ」","f",20,0,"3");
   ・
   ・

地形がr,sの時クエストの情報を参照します。設定する項目は、
quest("解決前メッセージ","解決中メッセージ","解決後メッセージ","クエストアイテムINDEX",取得EXP,取得GOLD,"取得アイテムINDEX");
となっています。 パスワード地形情報表
パスワードがかかっている地形のデータです。プレイヤーにパスワードの入力を促し、
正解ならパスワード地形を解除(地形Bに変更)、不正解の場合もとにもどされます。
<データ例>
 //パスワード情報
 passParam = new Array();
 passParam[0] = new pass_point("見えない力で封印されているみたいだ","ふとある言葉が浮かんだ...","LANDSCAPE","封印は解かれたようだ","見えない力で押し返された。");
   ・
   ・

地形がA,Bの時パスワードのかかった地形の情報を参照します。設定する項目は、
pass_point("メッセージウィンドウ用文字","プロンプト文字","パスワード","正解時メッセージ","不正解時メッセージ");
となっています。
オープニングメッセージ
マップ開始時に表示されるメッセージです。
<データ例>
 //オープニングメッセージ(ch_NAME:キャラクター名は変数で使用できます。)
 openmsg   = new Array();
 openmsg[0]= ch_NAME+"は洞窟に足を踏み入れた。";
 openmsg[1]= "という感じで、マップがリンクします。";
 openmsg[2]= "いかがでしょうか?";
   ・
   ・

見たままですね。メッセージの最大行数は8行(indexは7まで)です。
音楽データ
ゲーム中に流れる音楽の設定です。
<データ例>
 //音楽データ(mfield:フィールド、mcity:町、mabattle:戦闘、mdead:死亡)
 mfield  = new music("retsu","http://www.g-7.ne.jp/~retsu/","midi/retsu15.mid","荒野の風");
 mcity   = new music("retsu","http://www.g-7.ne.jp/~retsu/","midi/retsu04.mid","人と緑と街と太陽");
 mbattel = new music("retsu","http://www.g-7.ne.jp/~retsu/","midi/retsu19.mid","不意打ち");
 mdead   = new music("K.K.","http://www1.linkclub.or.jp/~medaka34/","midi/akiiro.mid","秋色");
   ・
   ・

設定項目は各曲データとも、
music("データ作者","リンク","曲ファイル","タイトル")
となっています。