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

今更感がありますが、姫百合の乱の体験版をアップしました。
既に沢山の方が購入して下さいっていますので、こちらはソース未公開とさせて頂きます。
ご了承下さい。

これを機に、姫百合の乱を遊んで頂ければと思います。

■体験版ダウンロードページ■




◆つぶつぶ主人公HP◆
スポンサーサイト
2012.04.30 / Top↑
前回の仕様を元に脱出ゲームを作ってアップしました。
もちろん、ソースの使用及び改変OKです。
■脱出ゲームダウンロード■

背景はこちらのサイトからお借りしております。
■誰そ彼亭様■


■ゲームの構成


まずはゲームの構成から説明していきます。
Aルーム
こちらがAルームです、仕様通り、真ん中に鍵穴があります。
この鍵穴は今までと少し違う方法でボタン化しています。
左下のドアっぽい奴が、ドアボタンです、Bルームへ行けます。

Bルーム
こちらがBルーム
仕様通り、ボールがあります。
この二つはクリックすると、右下のアイテムウィンドウにアイテムとして表示されます。
左下のドアボタンは、Aルームに行けます。

アイテムを表示したアイテムウィンドウです。
アイテムウィンドウ
Bルームのボールをクリックすると、この様にアイテムが追加されます。
追加されたアイテムをクリックする事で選択できます。
Aルーム鍵穴を、を選んだ状態でクリックするとクリアとなります。

■①の訳


何故①なのか、それは②があるからです。
実を言うと、①にはバグが潜んでいます。AルームBルームどちらでも構わないので、ドアボタンをクリックしまくって下さい。
下の様なエラーがでるはずです。
エラー


吉里吉里で動的ゲームを作成する場合、恐らく最も陥りやすいであろうバグの1つです。
次回以降、解説を踏まえて、このバグの正体と対処方を記載します。
最後に②として、完成版もアップ予定です。




◆つぶつぶ主人公HP◆
2012.04.26 / Top↑
当サークルの処女作、「姫百合の乱」のDL販売を始めました。
何かの手違いか、登録したサイトから審査終了のメールが来ず、ご報告が遅れましたが(自分も昨日気づいた)19日より、下記サイトで販売しております。少々、難易度が高いですがやりがいのあるSLGとなっております、興味のある方は、是非購入を検討して見てください。
■ダウンロード■


また、購入していただいた方、コメントを頂いた方、こちらを見ていましたら、この場でお礼させて頂きます。
一生の思い出が出来ました。やはり、自分で作成したゲームをやって頂く、その上面白いと言って頂くというのは、同人ゲームの醍醐味ですね。昨日は夜中の3時頃に小躍りしてしまいました。

こちらで紹介している吉里吉里ソースは姫百合でのノウハウを元に改良した物です。
今後、ノウハウとして、こうすれば良かった、こうして良かったと言う開発に役立つ情報を上げて行きたいと思います。
ど素人集団での作成でしたので、この編のノウハウは豊富です。
ノウハウ話の元ネタを確認する意味でも、姫百合の乱如何でしょう。と最後は宣伝で締めて終わらせて頂きます。




◆つぶつぶ主人公HP◆
2012.04.22 / Top↑
まずは脱出ゲームの仕様を考えてみましょう。
脱出ゲームはフラッシュ製のゲームが有名で、脱出ゲームでググればかなりの数が出てきます。
今回は、このフラッシュゲームを参考にして、仕様を考えてみます。

■脱出ゲームとは


吉里吉里の得意なノベルゲームとの差を意識して、脱出ゲームの仕様を考えてみましょう。

①画面の何処かを押すと場面が切り替わる
 例えば、タンスをクリックすると近づいた絵になったり、トイレの扉を押すとトイレに入ったりします。
 吉里吉里的な表現でいうと、背景が切り替わっている訳です。
 この機能は、じゃんけんゲームと全く同じですね。適当なボタンをクリックしたら、別のラベルに飛べば解決出来そうです。

②アイテムが拾える
 背景にあるアイテムをクリックするとそれを拾う事が出来ます。
 ここで必要なのは、拾ったアイテムが背景からは消えて、アイテムウィンドウとかに表示される事です。

③アイテムを使用して問題を解決出来る
 脱出ゲームのだいご味ですね。拾ったアイテムを特定の場所で使用する事で、ゴールを目指せる訳です。
 ここで重要なのは、特定アイテムを使用してない場合と使用した場合で動作が変わる事です。


■脱出ゲームの仕様を考える


上で出した①~③の条件を満たしたゲームを考えてみましょう。

まず、2部屋あるイメージとします、仮にAルームBルームとしましょう。
2つの部屋に「ドアボタン」を配置して、双方に行き来できる様にします、これで①を満たす事が出来ますね。

次いで、Bルームには、拾えるアイテムとして、「」と「ボール」を配置します。
」と「ボール」は拾った場合、アイテムウィンドウに表示されます。これで②を満たす訳です。

更にAルームには「鍵穴」を配置します。アイテムウィンドウで「」を選択した状態で鍵穴をクリックした場合、ゲームクリアとします。
これが③に当たる訳です。

■次回
ここで考えた脱出ゲームをアップします。
今回は仕様そのままにアップ予定です、これで私が世に出したゲームは2つ目になりますね(笑)




◆つぶつぶ主人公HP◆
2012.04.19 / Top↑
前回のじゃんけんゲームを構成するスクリプトについて解説します。
まずは、TJSプラグインから解説して行きましょう。


■000_CustomLayer(カスタムレイヤ)


 文字通り、 Layerクラスを継承しカスタムしています。
 カスタム内容は、Layer上でマウスクリックをした場合、押されたボタン(左右)に合わせて、windowオブジェクトにマウスがクリックした事を知らせています。
 何をしているかと言うと、このレイヤ上でマウスをクリックしても、メッセージウィンドウのクリック待ちや、右クリックサブルーチンに対応させる為です。
 これを行わないと、作ったボタンの上で右クリックしてもサブルーチンが動かなかったり、メッセージウィンドウが更新されない事態になるのです。


■001_ImageLayPlugin(イメージレイヤ)

画像イメージを表示するためのプラグインで、今回は特に使いません。継承元と言うだけです。
このプラグインの中で、CustomLayerを表画面用と裏画面用に紐つけて所持しています。
今後詳しく紹介するので、今回は画像を表示するプラグインとだけ覚えて置いて下さい。


■002_ImageListLayPlugin(イメージリストレイヤ)

ImageLayPluginを継承し、カスタムしています。
画像の1部分だけを表示し、且つ指定した位置の画像を表示する事が出来ます。
イマイチ良く分からないかも知れませんが、例によって今回は余り使いませんので、ロードした画像の一部を任意に表示出来るとだけ覚えて置いて下さい。


■003_WinButtonLayerPlugin(ウィンドウボタンレイヤ)

ImageListLayPluginを継承し、カスタムしています。
じゃんけんボタンの表示に使用しているプラグインで、ロードした画像をImageListLayPluginの機能を使ってボタンの状態に合わせて表示画像を切り替えています。
下がロードした画像です。
button_gu_image.png
4種類の画像が連結しているのが分かりますね。
右から、ボタン平常時ボタンをクリックした時ボタンの上にマウスが乗った状態ボタンが使用不能になった状態の4種類となっています。
loadImagesを使ってロードした画像に従い、自動的に大きさを調整し、マウスアクションに合わせた画像を表示してくれます。
簡単に言うと、画像をロードしたら、勝手にボタンの機能になると言う訳です。

更に、マウスアクションによって実行されるファンクションと、識別用のIDを指定する事が出来ます。
この機能で、ボタンを押した時に実行される処理や、どのボタンが押されたか判定する事が出来ます。


■004_JyankenPlugin(じゃんけんプラグイン)


じゃんけんウィンドウを生成するプラグインです。
具体的には、ぐー、ちょき、ぱーボタンと、それを押した時の機能が書かれています。

まず、コンストラクタで各ボタンオブジェクトを生成します。
j_button[0] = new WinButtonLayerPlugin(click_func, onmouse_func, offmouse_func, button_id);

ぐーボタンだとこの部分ですね。
j_button配列の0番目をぐーボタンにしています。
次に生成時に渡している変数についてですが、click_func, onmouse_func, offmouse_funcの3つについては、少し上で宣言している変数が設定されています。

//ボタンが押された時に実行されるファンクションを設定
var click_func = onClickBtn;     //ボタンがクリックされた時
var onmouse_func = onMouseBtn;  //ボタンにマウスが乗った時
var offmouse_func = offMouseBtn; //ボタンからマウスが離れた時

この部分ですね。
赤字になっている場所を見て頂くと、下の方にあるファンクションと同名である事がわかります。

function onClickBtn(i_x, i_y, i_button, i_id)
function onMouseBtn(i_id)
function offMouseBtn(i_id)
このファンクションがスクリプトの下の方にあるのが分かるはずです。
ここで指定したファンクションが、マウスのアクションに応じて実行されます。

次にbutton_idです。ここには、"GU"などの文字列が設定されています。
ボタンを押した時に、どのボタンが押されたか判定する為のIDです。
ボタン毎に違うファンクションを設定すれば、このIDは必要ないのですが、スクリプトが大きくなってしまう事や、ほぼ同じ処理を行うボタン等の無駄を省く効果があります。

続いて、画像のロードです。
//画像をロード
j_button[0].loadImages("button_gu_image");
これは、先ほど「003_WinButtonLayerPlugin」で説明した画像をロードしています。
ロードした後、ボタンサイズの横幅は画像サイズの4分の1になります。

次は表示場所の設定を行います。
//ポジションの設定
var left = 160;
var top = 190;
j_button[0].setPos("all", left, top);

"all"が入っている場所は、表(fore)、裏(back)、両方(all)を指定出来ます。
今回は、表裏どちらも同じ位置にしました。

次に描画の優先順位を設定します。
j_button[0].setAbsolute(win_abs);
同じ位置にあった場合、この数値の高い方が上に表示されます。
今回は、そんなものか程度に覚えておいて下さい。

//全てのボタンを非表示に設定
setVisible("all", false);

このコマンドで、全てのじゃんけんボタンを非表示にしています。
"all"が入っている所がpageです。これは先ほどご紹介した内容と一緒です。
次が、表示するか非表示にするか。falseなら非表示、trueなら表示になります。

openWin(i_page)
このファンクションは、外部から呼び出し用に作ってます。
じゃんけんボタンを表か裏か両方かに表示できます。

続いて今回の肝である、じゃんけんボタンに指定したファンクションを解説します。
//------------------------------------
// ボタンが押された時の処理
//------------------------------------
onClickBtn(i_x, i_y, i_button, i_id)

このファンクションは、コメントの通り、じゃんけんボタンが押された時に実行されます。
i_x、i_yはそれぞれクリックされた時のマウスの位置です。
i_buttonは押されたボタンそのものです。押されたボタンを使用不能にしたり、ボタンの位置を取得したりするのに使えます。
i_idは上で指定した識別用IDが返されます。これにより、どのじゃんけんボタンが押されたか判別出来るのです。

//特定のラベルに飛びます(この場合、勝った時のラベル)
var storage = "jyanken.ks";
var target = "*kati";
var countpage;

kag.process(storage, target, countpage);
return;

KAGのジャンプタグに相当する機能です。jyanken.ksの*katiラベルに飛ぶという訳です。

KAGへの追加を行います。
004_JyankenPlugin(じゃんけんプラグイン)の一番最後にある。
kag.addPlugin(global.jyanken_win = new JyankenPlugin());

この記述がKAGへの追加となります。
このスクリプトを、jyanken_winという名前でKAGに登録しているのです。

■KAGスクリプトファイル
さて、残りのファイルについても解説します。
first.ksは、ご存知吉里吉里で最初に稼働するスクリプトです。
この中で、各種プラグインをロードしています。

jyanken.ksは、ぐー、ちょき、ぱーのじゃんけんボタンが押された時に、それぞれの飛び先が明記されています。

上での説明で、004_JyankenPlugin(じゃんけんプラグイン)をjyanken_winという名前で登録している話をしました。
今回は、その呼び出しです。

;じゃんけんボタンをまた表示します。
[eval exp="jyanken_win.openWin('fore')"]
この様に、[eval]タグで実行し、 expの引数に名前とファンクションを設定すればOKです。

■総括
正直、読んでるとしんどいかと思いますが、アップしているファイルをダウンロードして頂き、実際に眺めてみれば、それほど難しい事はしていないのが解るはずです。
これからも、こんな感じで、最小単位で動く形をアップして行こうと思います。
これらのスクリプトは、そのまま使用するもよし、改変するも良し、自由に使ってください。

次回からは、フラッシュゲームでお馴染みの脱出ゲームもどきを作ってみようと思います。




◆つぶつぶ主人公HP◆
2012.04.13 / Top↑
前回、設計したじゃんけんゲームを公開します。
正直、ノウハウの公開の難しさを実感しています。
その為、ダウンロードすれば誰でも簡単に動かせる用にexeファイル込で公開してみました。
◆ここからダウンロード◆

まず、事前の内容といくつか違う点があります。
一番の違いは、じゃんけん“ゲーム”になっていないと言う所でしょう。
グーなら必ず勝ち、ちょきなら必ずアイコ、パーなら必ず負けます。
しかし、ここは大きな問題ではありません。TJSでボタンを表示し、そのボタンアクションを元にKAGスクリプトに飛ぶ。
今回公開したソースの肝はここにあります。
勿論、このソースは自由に改変して構いません。ただし、使用については自己責任でお願いします。

■公開ソース内訳


・TJSプラグイン
 000_CustomLayer
 001_ImageLayPlugin
 002_ImageListLayPlugin
 003_WinButtonLayerPlugin
 004_JyankenPlugin

・KAG用ファイル
 first
 jyanken


TJSプラグイン、KAG用ファイルはやや造語です。
一応、loadpluginでロードするファイルをTJSプラグイン、それ以外をKAG用ファイルとしています。
次回より、これらの詳しい解説をしていきたいと思います。




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