Unityと吉里吉里でSLGとかRPGを作るブログ

今回はデータの読み込みとテーブル化について解説したいと思います。


■データの読み込み

動的ゲームでは、ノベルやアドベンチャーとは比べ物にならない程のデータを扱います。
RPGなら戦闘に必要なキャラデータは10や20では無いでしょう、それがキャラ毎に存在する訳ですから、全体を通せば、千を超えるデータ数を扱う事になります。
これらのデータをソース内に手入力するのは効率の面で非常に悪いです。

ですので、姫百合の乱では表計算ソフトでデータを作成し、CSV形式で保存、吉里吉里で読み込むと言った方法でデータを作成しています。

吉里吉里には、csvParser.dllと言うDLLがあり、これを使用すればCSV形式のデータを読み込めます。
コピペ出来る様に、今回もソースを作成しました、ダウンロードして見て下さい。
◆データロードソース◆

さて、このソースを実行するといきなり下の様な変な画面が出てきます。
データロード画面
白い四角画像の上に、「こんぼう」・・・。
中々にシュールですね。

このこんぼうと言う文字は、下のCSVファイルを読み込んで表示させています。
CSV.png

これから、順を追って、CSVファイルの読み込みとそれをゲーム内で使用する方法について記載してきます。


■CSVファイルのロード

まずはCSVファイルを読み込む所からです。
吉里吉里でCSVファイルを読み込むには、csvParser.dllを使用します。

firstファイルに以下の記載を追加して、DLLをロードしましょう。
;CSV読み込みプラグインを読み込む
[loadplugin module="csvParser.dll"]


続いて、CSVを読み込むファンクションを作ります。
005_BukiPluginファイルのgetCsvData()ファンクションがそれです。
//------------------------------------------
// CSV展開
//------------------------------------------
function getCsvData()
{
  var i;
  var csv_text;
  var buki_su = 2000;
  var buki_id;

  var csv = new CSVParser();
  //データファイルの読み込み
  csv.initStorage("BUKI_DATA.dat");

  for(i=0;i  {
    csv_text=csv.getNextLine();

    //読み込みデータが無い場合
    if(csv_text === void){
      break;
    }  

    //武器データの作成
    buki_id = csv_text[1];
    buki_data[buki_id] = new BukiClass();

    //武器データの格納
    buki_data[buki_id].name = csv_text[0];
    buki_data[buki_id].atk = csv_text[2];
  }

  invalidate csv;
}

まず、CSVファイルの読み込み方法です。
  var csv = new CSVParser();
  //データファイルの読み込み
  csv.initStorage("BUKI_DATA.dat");

DLLによって追加されたCSVParser()クラスのオブジェクトを生成し、initStorageで任意のCSVファイル名を指定するだけです。

次にcsv.getNextLine()によって、読み込んだCSVデータを配列として受け取れます。

後は以下の様に変数に格納するだけ。
buki_data[buki_id].name = csv_text[0];
これはCSVの1個目を取得します。
上のCSVファイルで言う所の、「こんぼう」です。
csv.getNextLine()する事で、行が変わります。つまり、csv_text[0]には2行目の1個目である、「ひのきのぼう」が格納されています。


■テーブル化について

次はテーブル化です。これは私の造語でして、意味はデータベースのテーブルの様にデータを管理すると言う事です。

先ほどのCSVファイルを思い出して見て下さい。ドラクエの武器と言えば、「こんぼう」と「ひのきのぼう」ですね。
CSVでは、武器1つ1つに、2つのデータを持っています。「名前」と「攻撃力」です。

これらのデータをテーブルとして管理する場合、まず、武器クラスを作成します。
こんな感じですね。
//----------------------------------------------------------------------
// BukiClass 武器クラス
//
//
//
//----------------------------------------------------------------------
class BukiClass
{
  //メンバ
  var name;
  var atk;

  //------------------------------------------
  // コンストラクタ
  //------------------------------------------
  function BukiClass()
  {
  }

  //------------------------------------------
  // デストラクタ
  //------------------------------------------
  function finalize()
  {
  }

}


このクラスを、Dictionary()型で管理します。
文字配列型(Dictionary)の添え字をIDとして使う事で、複数のデータから即時にユニークデータを取得出来る訳です。
ちょっと具体例を出してみましょう。
先ほどダウンロード出来るようにしたサンプルソースのデータでは、「こんぼう」データはこんな感じになってます。
buki_data["KONBOU"].name = こんぼう
buki_data["KONBOU"].atk = 10
です。

ここまで来たら何となくわかりますね。
例えば、RPGなので、勇者の武器を管理する場合、勇者のステータスを表す変数には、武器データでは無く、武器のID(この場合、KONBOU)のみ持たせ、攻撃力を計算したり、ステータスで装備を確認する時に、このIDを元に表示する訳です。
先ほどの、「こんぼう」が表示されているシュールな画面は、IDで「こんぼう」を表示するサンプルです。

では、今回のプラグインを解説していきます。


■004_TextLayPlugin

今回の新顔です。
テキストを表示するレイヤーで、表示する文字列に合わせて自分の大きさを変える事が出来ます。
囲み文字とシャドウを指定する事が出来ます。001_ImageLayPluginを継承している為、配置や半透明等は同様に使用可能です。
ステータス画面などを作成する際は、非常に役に立ちます。


■005_BukiPlugin

武器プラグインです。
CSVデータの読み込み例、データのテーブル化として出しています。武器やスキルはこんな形で管理すると非常に楽にゲーム作成が可能です。


■006_BukiWinPlugin
武器のデータを表示するプラグインです。ぶっちゃけると、白い四角画像と、「こんぼう」を表示するだけです。


■総括

今回はデータのロード方法と、その表示方法を解説しました。
データの持ち方(テーブル化)については、1例にすぎません。武器やスキルは1つのプラグインにまとめて管理するとわかりやすいよと言う話です。
設計上、必要なければテーブル化をしてくても問題ないでしょう。

今回でゲーム作成に必要な基本的な機能を全て説明しまいた。ボタンの入力デバイス、データのロードと表示、画面遷移です。
プログラム未経験者でも、コピペと改造を駆使すれば、これまでに紹介した情報で、育成ゲームのくらいなら余裕です。
今後は、ノウハウ系の話も混ぜながら、小さいテクニックをダウンロード出来る形で提供して行きます。




◆つぶつぶ主人公HP◆
スポンサーサイト
2012.06.21 / Top↑
いつもお世話になっております。つぶつぶ主人公のネコダマシです。

今回の夏コミで、「姫百合の乱」を販売する事となりました。
人生初コミケです、若干緊張しております。
姫百合の乱でイベントに参加するのはこれが最後となると思います、次にイベント参加するのは、次回作が完成してからと言う事になりますね。

また、DLsite様のダウンロード件数が100件を超えました。
姫百合の乱を購入して頂いた方には、改めてお礼申し上げます。
特にコメントを書いて頂いた方、レビューを書いて頂いた方、大変励みになりました、次回作も頑張りたいと思います。

■ダウンロード販売サイトについて
さて、このブログの性質を考えて、少々情報公開をしたいと思います。
あくまで、当サークルの情報ですので、1例として見ていただければと思いますが、これからDL販売を考えている方には多少なりとも役に立つかと思います。

①サイトのアクセス数について
 DL販売サイトに登録後、当ブログのアクセス数が役2倍から3倍に増えました。
 因みに販売前のアクセス数は、10前後、販売後が40前後です。
 しょぼい!と思うかも知れませんが、ピーク時には100を超える事もしばしばありました。
 宣伝と言う観点から見ても、DL販売はかなり有効な手だと言えます。

②ユーザーからの反響
 コメント機能などの充実もあり、結構な数の反響が貰えます。
 因みに103(現在)の販売数で、評価ボタンによる評価を頂いたのが42件、その内、コメントまで頂いたのは8件です。
 レビューの数は3件で、他サークルさんを見るに販売数とレビュー数はあまり相関関係がなさそうです。

③販売数について
 実は2つのDL販売サイトに登録していますが、売上の数は天と地ほども違います。
 具体的な数を出すと、DLsite様のダウンロード数が103の時点で、もう片方のダウンロード数は10以下です。
 当サークルの場合、サークルそのものの知名度は完全に0なので、DL販売サイトの知名度がクリティカルに影響する形になってます。




◆つぶつぶ主人公HP◆
2012.06.08 / Top↑