クロノス・クラウン - 記事検索

おすすめ
自作の本やゲーム他を販売
便利なWebアプリが多数
ソフトウェア
めもりーくりーなー Winのメモリーを掃除
Novel Supporter 小説推敲補助ソフト
PCソフト まとめ
ゲームブック
闇の聖杯の儀式 電書のゲームブック
ゲーム
Little Land War... Win向けSRPG
Little Bit War Switch向け高速RTS
TinyWar... 1面数分の8bit風RTS
EX リバーシ 変形盤面、盤面多数
no link
2013年06月17日 10:34:18
 夏のコミケ「コミックマーケット84」の準備を進行中。

月曜日 東地区“ポ”ブロック−33b「るてんのお部屋」

 週末を利用して、ダイアログ管理システムを作成していました。

□コミケ84 サンプル 003

コミケ84 スクリーンショット 003




「ダイアログ管理システムとは何ぞや」ということですが、リスト ダイアログを使って、設定ウィンドウなどの、「ネストするメニュー」を実現するためのフレームワークです。

 なぜそんなものを作ったかというと、これまでの経験からです。

 私は基本的にシミュレーションゲームを作ることが多いです。そうなると、多くのダイアログ(それもネストする)ものを表示する必要があります。

 分かりやすく言うと、初代ドラゴンクエストのツリー状のメニュー画面のようなものを、複数のダイアログで実現するわけです。

 これまで、PC、iアプリ、Android、で様々なゲームを作って来ましたが、このメニューを実現するシステムをどう作るかが、シミュレーション系ゲーム開発の肝になってきます。

 管理しやすいシステムを作ると、開発効率が上がります。

 逆に、管理しにくいシステムを作ると、開発効率が下がります。

 アクションゲームを中心に作る人には、あまりぶち当たらない悩みかもしれません。

 というわけで、週末の時間を利用して、シミュレーション系ゲームの、開発効率を大きく左右する部分を実装していました。

 このダイアログ管理を含む、ダイアログ部分全体のコードは、現在のコード全体の約1/4になります。いかに比重が大きいかが分かります。



 というわけで、実際に作ったダイアログ管理システムを利用して、ネストするメニュー ダイアログを実装している部分のコードです。

 かなりシンプルにできた方だと思います。


/**
* ダイアログ管理 構造
*/

// ダイアログ構造
var dlgTree = {txt: "ダイアログ構造", msg: "ルートです。", nst: [
{txt: "選択肢0 末端"}
,{txt: "選択肢1 項目2つ", nst: [
{txt: "選択肢1-0"}
,{txt: "選択肢1-1"}
]}
,{txt: "選択肢2 項目3つ", nst: [
{txt: "選択肢2-0"}
,{txt: "選択肢2-1"}
,{txt: "選択肢2-2"}
]}
,{txt: "選択肢3 非表示混じり", msg: "項目1,3を非表示", nst: [
{txt: "選択肢3-0"}
,{txt: "選択肢3-1", enbl: false}
,{txt: "選択肢3-2"}
,{txt: "選択肢3-3", enbl: false}
]}
]};

// 選択内容保持
var sel = 1;
var sel1 = 0;
var sel2 = 0;
var sel3 = 0;

// ダイアログ処理
dlgTree.fnc = {
pre: function(brnch, arg) {
arg.selDflt = sel;
arg.datArr[1] = brnch.nst[1].txt + " 選択" + sel1;
arg.datArr[2] = brnch.nst[2].txt + " 選択" + sel2;
arg.datArr[3] = brnch.nst[3].txt + " 選択" + sel3;
}
,pst: function(brnch, res) {
if (res != -1) {
sel = res;
console.log("sel - " + brnch.nst[res].txt);
}
}
};
dlgTree.nst[1].fnc = {
pre: function(brnch, arg) {
arg.selDflt = sel1;
}
,pst: function(brnch, res) {
if (res != -1) {
sel1 = res;
console.log("sel1 - " + brnch.nst[res].txt);
}
}
}
dlgTree.nst[2].fnc = {
pst: function(brnch, res) {
if (res != -1) {
sel2 = res;
console.log("sel2 - " + brnch.nst[res].txt);
}
}
}
dlgTree.nst[3].fnc = {
pst: function(brnch, res) {
if (res != -1) {
sel3 = res;
console.log("sel3 - " + brnch.nst[res].txt);
}
}
}

// ダイアログ設定
var dlgOpt = {
cnslBck: true, selBck: true,
btnDflt: crocro.game.Dialog.BTN_BCK
};

// ダイアログ管理
crocro.game.Dialog.Manager.start(dlgTree, dlgOpt);



 さてと、次はリソースの管理システムを作らないといけないです。

 サクサクと進めましょう。
最新20件 (全て見る)

オススメ電書 (全て見る

動画講座 (全て見る

サイト目次

おすすめ

PCソフト/Webアプリ

ゲーム

マンガ

記事

柳井の同人活動

開発

携帯・スマホ

アナログ・ゲーム

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について