【GameMaker:Studio】CSVファイル読み込みスクリプト

投稿者: | 2013年11月8日

GameMaker:Studioでは定数を定義することができます。

001

メニューから「Resources > Define Constances…」

を選ぶと、ユーザ定義定数のウィンドウが開くのでここで定義できます。

なのですが、表形式のデータを扱うには少々不便です。例えばこのようなデータですね。

敵ID 名前 HP MP 攻撃力 防御力
1 hoge 100 3 20 15
2 piyo 150 2 15 8
3 momo 200 5 30 50

そこでこれを簡単に扱えるモジュールを用意してみました。

■CSV読み込みスクリプト

スクリプトは以下のリンクからダウンロードできます。

  • [download id=”18″]


002

インポート方法は、リソースツリーから「Scripts」を右クリックして、「Add Existing Script」を選択します。

003

そうすると、scr_loadCSV / scr_unloadCSV というスクリプトが展開されます。

  • scr_loadCSV : CSVファイルをds_mapに展開
  • scr_unloadCSV : scr_loadCSVで生成したds_mapを開放

2つのスクリプトの機能はこのようになります。

▼使い方:CSVのインポート

CSVデータとしては例えば以下のものを作成します。

id,name,hp,mp,str,vit
int,str,int,int,int,int
1,hoge,100,3,20,15
2,piyo,150,2,15,8
3,momo,120,5,30,50

1行目がデータのキーとなります。このキーを使った各データの値にアクセスをします。

2行目はデータの型となります。intが数値で、strが文字列となります。

そして、3行目からデータの開始となります。

なおCSVエディタとしては、「Cassava Editor」というのをオススメします。

次に、CSVをインポートします。

004

リソースツリーから「Create Included File」を選択します。

005

すると「開く」ダイアログが表示されるので、該当のCSVファイルを選択します。

006

これでCSVのインポートは完了です。

▼使い方:CSVのロード

テスト用にオブジェクトを配置して、Createイベントなどに以下のコードを記述します。

// "test.csv"をロード
self.csv = scr_loadCSV("test.csv");

// hogeを取り出し
var hoge = ds_map_find_value(self.csv, 1);
// 各値を取得
var hp = ds_map_find_value(hoge, "hp");
var mp = ds_map_find_value(hoge, "mp");
show_message("hp=" + string(hp) + " mp=" + string(mp));

// 開放
scr_unloadCSV(self.csv);

すると以下の様なダイアログが表示されて、値を取得できたのが確認できます。

007

もし起動時に一度読み込んでそれを使いまわすのであれば、最後の開放処理は不要となります。

▼CSVロードの仕組み

CSVをロードすると、以下のようにds_mapの階層を構築します。

11

外枠のds_mapが、idをキーにして子の要素となるds_mapを管理しています。各データはCSVの一行目に指定した文字をキーに各値を管理しています。

あと上記の図には記載していないのですが、外枠のds_mapの直下に、

  • head:各値のキーの文字列の配列
  • types:各値の値の型の配列
  • size:データサイズ

をデバッグ用として格納しています。

▼文字コードについて

CSVに設定した日本語メッセージを表示するには、CSVファイルを「UTF-8 / UTF-16」で保存しておく必要があります

■おまけ:CSVエディタ「Cassava Editor」の便利な使い方

おまけとして、高機能なCSVエディタ「Cassava Editor」の便利な使い方を紹介したいと思います。

▼CSVファイルの関連付け

CSVファイルを「Cassava Edtior」関連付けしておくとGameMaker:Studioのりソースツリーからダブルクリックで編集できて便利です。なお関連付け実行前に、Cassavaの実行ファイルはProgram filesなどに移動させておいたほうがいいです。

設定方法は、メニューから「オプション > オプション」を選択します

012

そこから「ファイル」を選び、「関連付け > CSVファイルをCassavaに関連付け」にチェックを入れてOKボタンを押します。これで関連付けされればいいのですが、環境によってはうまくいかないことがあります。

013

その場合には、Windowsキーを押して、「ファイル」と入力して、「ファイル拡張子に関連付けされたファイルの種類の変更」を選びます。

014

CSVファイルを選択して、「プログラムの変更」をクリックします。

015

「参照」ボタンを押します。

016

Cassavaの実行ファイルを選びます。

017

OKボタンを押して関連付けを完了します。

▼動作の変更

Cassavaは標準だと、Enterを押した時にセルを移動しません。個人的にExcelの動作(Enterで次の行に進む)と合わせたいので以下のように設定を変更しました。

018

メニューから「オプション > オプション」を選択。「動作 > Enterキーでのセル移動を『次の行へ移動』に変更」