もどる
ZGE Tips
ZGEでのゲーム作成についてあれこれ書くページです。
- 第1回 ZGEとは
ZGEとはフリーでゲームを作成できるツールです。既製品のツールよりもできる幅がかなり広いので便利です。プログラムをいちから作るには敷居が高いけど既製品は制限が気になるという方に向いていると思います。RPGの場合はツクールの完成度が高いと思いますが他のジャンルはどのツールが使えるのかが心配ですよね。ツールを選ぶときの悩みって、自分が選んだツールが、使い込んだ結果やりたいことができないということにならないかが心配ですよね。このツールだとその心配はまずないと思います。
向いているジャンルはアクション性が高いゲームだと思います。普通のアクションやSTGなら規模の大きなゲームも問題なく作れると思います。SLGのように多くの数値を管理するゲームは作ったことがないので向いているかわかりませんが計算式は自由に組めるのでそれなりにいけるとは思います。3D表示はたぶんできないかと・・・ただ奥行き計算はできるので知識がある人ならいけるかもしれません。
ZGEの長所はなんといっても様々な作成領域の広さが魅力です。逆に短所はマシンスペックが低いと重いという話を聞きますので作成環境のPCで試してみて大丈夫そうなら導入してはどうでしょうか。インターフェースが使いにくいと言う話も聞いたことがありますが、ツール系はどれも独特のインターフェースを持っていて慣れの問題なので気にする必要はないと思います。現時点で完成度はかなり高いので安心して使えます。
次回からはZGEでゲームを作る場合のヒントなどを書いていきたいと思います。ゲーム作りはとても楽しいのですがなかなかハードルが高い・・・僕も初心者ですが一人でもこの楽しさに気づいて楽しんでほしいと思います。
-
第2回
実際にZGEを起動して何から作れば・・・と思う人は多いかもしれません。サンプルをいじれとはよくいわれますがなにをいじればよいのか・・・ということでまずは目的を決めて作るとよいと思います。まずは左右で歩くキャラクターを作る、を目的にしてみればどうでしょうか。左右で歩くキャラを作るためには
・絵を用意する
・絵を表示させる。
・キー入力に反応させる
・移動する
という段階で作ればよいと思います。絵は、BMPファイルを開き32x32サイズで適当に描きましょう。マルだけでいいかも。

次に絵を表示させるですが、これはZGEを導入して「ここに作成するフォルダを入力します」でフォルダを作成した後からの話としますが、
まずは画像のようにいきなりOKをおしてください。そして次の画面でもいきなり保存で適当に名前をつけてイベントファイルを保存しましょう。
次にシーン選択と言うボタンで画面を一つ戻ります。
その後イベントのアイコンで保存したイベントファイルとBMPファイルを選び保存します。
今日はここまでにします。
-
第3回 画面表示させる
前回の続き、でイベントファイルを保存してシーン選択をしたら画像のような画面が出たでしょうか。この縦長の画面の番号がイベントIDです。後は画像を表示させるだけですが手順はふたつだけです。イベントIDの5番にカーソルを合わせ
画像のようなプルダウンの選択肢で「キャラクター描画イベント」を選んでください。そして編集。そのままOK。
次にイベントID50番にあわせて、
またプルダウンで、次は「キャララクターイベント」を選ぶ。画面一番上の描画レイヤーは0にする、画面上から3段目のビットマップIDは0を選ぶ。
ここで選べないということは前回のシーン選択画面でBMPが選んだ状態で保存されていないことになる。その下のキャラクターサイズを32x32にして保存。

あとはイベントを保存して実行です。 (CTR+シフト+F5でもOK)。うまく表示されたでしょうか?

- 第4回 左右移動させる
前回まででキャラクターの表示はできました。
次は実際にキーに反応して左右に動くようにしたいと思います。
方法としては、左右キーで動くスクリプトを作り、キャラクターにそのスクリプトを割り当てると言う方法になります。
スクリプトはイベントID20を選択し、プルダウンから「スクリプト」を選んで編集ボタンです。
スクリプトとはプログラム命令みたいなものです。ここでキャラクターの動作、計算式などの命令を入力しキャラクターに割り当てる、という形になります。今回はキーに反応して左右に動くという命令なので以下のように入力します。
■20)スクリプトデータ
0 then sKArJ_R 1 2
1 add cXnpos 4
2 then sKArJ_L 3 4
3 dec cXnpos 4
これだけです。画面のようになったでしょうか?

内容の説明は今度行うとしていまはこれを記入すると言うことだけでよいです。百聞は一見ということで。
さて入力が終わったらOKを押してください。
次に前回作ったキャラクターのID50をダブルクリックしてください。
開いたら画面の下のほうにあるプルダウンの選択肢を下記のようにしてください。
「スクリプト実行」
「番号
20)スクリプトデータ」
以下のような画面になったでしょうか?

ここまでできたら保存して実行してください。
左右キーに反応しなかったら、スクリプトが間違っているか、キャラクターとスクリプトの割り当てがうまくいっていません。

- 第5回 左右移動させる2
さて、前回はスクリプトの内容の説明を省略したので今回はその説明を行いたいと思います。
■20)スクリプトデータ
0 then sKArJ_R 1 2
1 add cXnpos 4
2 then sKArJ_L 3 4
3 dec cXnpos 4
0行目は「右キーを押したら」といい命令です。thenは「yesだったら1行目へ、noなら2行目へ」という命令なので、右キーがおされていたら・・・押されていなかったら・・・、という意味になります。で、押されていたら次の行になります。次の行は
1 add cXnpos 4
ということでX座標を+4ドット動く、という命令になります。画面表示上は右へ行く=X座標をプラスに移動、左に行く=X座標をマイナスに移動、ということになります。座標の考え方です。というわけで、右キーを押したらX座標をプラスに4ドット、というようになります。では、noだったら、つまり右キーが押されていなかったらどうなる?かというと2行目へ、となり、その2行目は「左キーを押したら」という命令になっています。あとは先ほどと同じくX座標を左に4ドット移動、という命令になっています。
慣れたら「上を押したら上へ、下を押したら下へ」という命令を付け加えてみてください。
■20)スクリプトデータ
0 then sKArJ_R 1 2
1 add cXnpos 4
2 then sKArJ_L 3 4
3 dec cXnpos 4
4 then sKArJ_D 5 6
5 add cYnpos 4
6 then sKArJ_U 7 8
7 dec cYnpos 4
上記のようになります。上キーと下キーのときは、Y座標の移動になりますね。
- 第6回 左右向きのアニメーションさせる
今回は前々回に作った左右移動キャラクターにアニメーションをつけたいと思います。例によってBMPを描きます。下を参考にしてください。32x32のキャラを二つ並べるイメージです。左側には左向き、右側には右向きで配置してください。

次にイベントID21を選択し、プルダウダウンで「アニメーションデータ」を選択してください。画面に上のほうにある「ビットマップID]は0番を選択してください。次にその右にあるサイズ指定は32x32を選択してください。
次に画面下にある「リストに追加」ボタンを押し、アニメーションフレームNoの矢印ボタンの右を押して、再び「リスト追加」を押してください。

画面のようになったでしょうか?そこまでできたら「OK」ボタンを押して、次はイベントID50のキャラクターを選択してください。
画面上から2段目あたりに浴びメーションデータを選択するところがありますのでプルダウンで21を選んでください。そしたら「OK」です。

次にイベントID20のスクリプトを選び下記のようにしてください。
■20)スクリプトデータ
0 then sKArJ_R 1 3
1 add cXnpos 4
2 let cNowAnm 1 0
3 then sKArJ_L 4 6
4 dec cXnpos 4
5 let cNowAnm 0 0
6 anim_loop

今回のスクリプトでのポイントは右向き、左向きの命令内に移動量だけでなく「let
cNowAnm」でアニメーションパターンの番号を入れることと、「anim_loop」命令を入れるところです。そして保存して実行してください。左右キーに反応して移動するだけでく、向きも変わったでしょうか?
第7回 テキストアドベンチャーを作る
テキストアドベンチャーとはノベル系のテキストゲームのことです。テキストアドベンチャーを作成したいだけならZGEに限らずとも、他のツールを使えばよいです。
ZGEでテキスト機能を使う理由を挙げるなら、ずばり「他ジャンルのゲームとの融合」です。たとえば・・・アクションゲームのステージ間の会話シーンや
町でのアイテム売買など、メインとなるゲームのサブポジションに会話シーンがあったり、逆にノベルゲーム主体であるがミニゲームが組み込まれた
ゲームを作りたい場合にはZGEでテキスト機能が重宝します。ここではそのためのtipsを紹介します。
まず、テキストを表示するだけなら本家HPでのサンプルを見ればよいのですが、ここでの解説用にサンプルをアップします。
ほぼ本家のものですが→サンプルダウンロード
■20)メッセージスクリプト
0 is_active 1 30 0
1 skip_slp 14 2
3 show_msg 0 b0 i0 7
4 then i0 7 5
6 break
7 then sTrSp 9 0
8 break
9 let i0 0 0
10 break
15 msg_font i0 0 18 1
16 msg_color i0 255 255 255
17 msg_set i0 5 8 0
18 msg_char_set i0 32 18 2
19 msg_scroll i0 2 0 0
20 msg_shcolor i0 8 8 8
21 let b0 0 0
22 goto 2
会話の送りに使用するキーは7行目で指定したスペースキーです。サンプルではスペースキーでの送りになっていますが、
他のキーを割り当てる場合は似たような感じで追加すればよいです。
私はキー押しっぱなしでどんどん送られてしまうのが苦手なのでS_Trの「押した瞬間のみ」の命令としています。
4行目のthenですが、ここはテキスト機能の標準で使用するi変数に関係しています。
i0の値 状態
-1 リセット※手動で指定
0 描画中
1 改頁待ち
2 停止中
3 データ終端
4 選択中
5 ロック※手動で指定
で、描画中でなければ(i=0以外のとき)7行目へ飛ぶ(キーを受け付ける)となっています。
i0で分岐する考え方は、これから先のtipsでも登場するので重要です。あと重要な変数は、21行目b0で、
指定したテキストファイルの何番目のメッセージを表示するか、という値を指定しています。
1ファイルに複数メッセージを詰め込むのが普通の作り方だと思いますが、何番目を表示するかはこのb0で制御します。15〜20行目の、他の初期値系は、最初は理解しなくてよいと思います。
まずはこのくらいで・・・サンプルをいじりながらなんとなく理解していきましょう。
いじるポイントとしては、まずはキーの入力をスペースだけでなくシフトでも送れるようにするとか、2行目でテキストのIDを変更してみる(1にしてみる)そのあたりでしょうか
第8回 動作の軽いゲームを作る
今回は趣向を変えて、座学です。動作の軽いゲームを作ることについて考えます。
その1.効率的な処理でプログラムを作る
これは当然の話です。無限ループを作るとプログラムは停止しますが、そこまでいかずとも、ループ処理の多様は処理の低下を招きます。無駄に行数を処理しないよう、is_activeを使ったりして処理数の軽量化をはかる。
実感はできませんが、プログラムにおける基本です。
その2.そもそものイベント数を少なくする。
大型ゲームになると1シーンでイベントが何千もいくこともあると思います。当然そうなると呼び出し全般に時間がかかります。これは開発中も目に見えてウインドの開きなどが遅くなるのでこれも避けましょう。
とはいっても、作っている最中にイベント数が足りなくなると付け足し付け足しになり、そうなると(ZGEで自動で挿入してくれる番号はともかく)イベントIDやスクリプトID
の指定しなおしが頻繁に発生します。これはバグの元なので極力避けたい。そうなると最初に多めに数を確保しとこうとなるとイベント数が多くなってしまいます。
この対策としては、最初に、1シーンで使用するキャラクター数の目安を決めておくという設計をきっちり最初にしなければならなくなります。
実はこれはかなり高度な先読みが必要でして・・・勘と経験が必要になりますね。
その3.表示キャラクター数を減らす(1)
これはマップチップの話です。マップチップにlayer表示をすることは当然あるでしょうがDIRECTに比べて処理が格段に重くなります。
またマップチップも1キャラとして認識しているらしく32ドット四方のチップであればそのサイズのキャラを画面中に敷き詰めているイメージになります。
これを避けるにはチップの大きさを64など大きくすることができます。しかしキャラは32なのにチップを64にすると当たり判定がおおざっぱになるので
地形判定は32ドットで、遠景などは64にする、という手段もあります。またここで注意なのがレイヤー多層にすると当然処理が重くなります。
よってレイヤー数も最低限にする必要があります。遠景(固定背景)、多重スクロール用遠景、地形、前景、この4つは少なくとも必要とすると
この4層でなんとかがんばるほうがよいでしょう。地形の層に、当たり判定する地形としない地形を同時に置くようになど工夫が必要ですね。
豊富なチップパターンで見せたい場合、レイヤー層を増やして重ねてバリエーションを増やすよりもチップパターンを増やすほうが動作的には軽いようです。
ファイルサイズに制限があるロムカセット時代とは逆の手法ですね。
その4.表示キャラクター数を減らす(2)
先ほどのその3はチップについてでしたがこちらはイベントで指定するキャラクターの話です。layer表示の話をしますが、キャラクターを
表示しない場合は、「sleep」しておく場合と「activeにはしておくけど、見えない透明キャラを置く」方法があります。
この動作の違いで言うとactive透明キャラは存在しているだけで速度を食います。非表示キャラはsleepしておきましょう。
その5.その他
debug変数はゲーム開発中に使うと思いますが、これは1フレームごとに描画しているらしく使い方によっては非常に重くなります。
逆に言えば、他のイベント描画は毎フレーム描き直していないのかなあ。内部処理はよくわからず。
まとめ
自分のPCでは512サイズでもチップを敷き詰めると重くなります。
最近はディスプレイも大きくなり800サイズで作ることもチラホラでてきましたが32チップサイズを敷き詰めるとまったく話になりません。
かといって64サイズにするとチップ数が少なくなり、キャラは大きくなるけど相対的に画面は狭くなることになります。
そのため32チップでいくならば、画面の下1/3はステータス画面にするなどチップを敷く領域を狭くする工夫や、レイヤー層を少なくする、
チップはできるだけ空白にして、固定画面の空などを背景にするといった工夫が必要になってきます。
もどる