パッケージ
ViZiMO公式サイトへ
準備中
準備中
ViZiMO
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2007/12/04 16:28

連載

ViZiMO 3Dゲーム組み立て講座
第4回:イベント作成ウィザードの活用とタイマー処理

 

image

 3Dゲームが比較的簡単に作れるSNS「ViZiMO」でゲーム作りを支援する連載も4回目になりました。この連載を読んでViZiMOを始めた人も結構いるようなのですが,意外と「難しい」という書き込みを目にします。ただ,どのあたりで引っかかっているのか,よく分かりません。ViZiKitで物体を置いていく部分は,そんなに難しくないと思うのですが,そのあたりから引っかかっている人もいるのでしょうか?
 とりあえず,イベントの記述など,どうやってゲームにしていくかの部分については,できるだけ簡単に行える方法を紹介してみたいと思います。イベント自体をあまり使わずにゲームを作る方法については,前回の記事を参照してください。

 

 

ViZiMOの空間

 

image

イベント作成ウィザード

 さて,この連載ではまったく使っていませんでしたが,ViZiMOには「イベント作成ウィザード」というものがあり,これを使うと簡単なゲームの仕組みを自動で作ってくれます。最終的には,自分でイベントを組めるようになっていただきたいのですが,よくよく見ると,このウィザードも結構よくできているので,まずはこれを使って大枠を作り,各自で改造という流れもよいかもしれません。

 イベント作成ウィザードで用意されているものには,

  • 格闘ゲーム
  • レースゲーム
  • アイテム集めゲーム
  • 球技

の4種類があります。上記のような形式のものであれば非常に手軽に作ることができます。初心者がゲームを作るうえで,非常に便利なものですので,以下に一通り紹介しておきましょう。

 

格闘ゲーム

ゲームの目的:ほかのプレイヤーより長く生き延びる
事前に用意が必要なもの:なし

 

image

 プレイヤー数を選択すると,指定した人数分のプレイヤーキャラクター用のイベントとスコアボードが作成されます。ルールは時間制および体力制です。時間制限を0秒に指定すると,時間制限のない対戦ゲームとなります。
 さて,どうやって体力を削り合うかですが,簡単なのは武器を使うことです。銃で撃ち合うなり,バズーカを使うなりすれば,イベントなどにとくに処理を加えなくてもそのままゲームになります。ただ,格闘といっても,人間対人間の場合は蹴っ飛ばしてもダメージは与えることができません。バットなどの鈍器は使用可能です。
 大きなダメージを与える武器に爆弾があります。爆弾の使用には若干注意が必要です。プレイヤーに触れると爆発するようにすると,持ち上げて投げることができなくなります。タイマーをセットして,5秒後に爆発など,イベントを組んでください。
 スコアボードで初期体力が1000に設定されていますので,ゲーム内容に応じて変更しましょう。時間と体力を併用してあるので,勝利判定部はやや複雑な感じです。
 ただ,ステージを作って,武器をばらまいて「さあ殺し合ってください」というのは,作るのが簡単で,それなりに楽しめるものになるのですが,ゲームデザインとしては微妙なところもあります。できれば一捻りしたものに仕上げたいところです。

 

image

 

image

 

image

 

image

 

 

レースゲーム

ゲームの目的:ゴールに早く到着する
事前に用意が必要なもの:ゴール用オブジェクトと対戦人数分のプレイヤーを配置しておくこと

 

image

 レースゲームは連載第2回で解説しましたが,ウィザードで作ることもできます。ただし,ゴール判定のオブジェクトが一つなので,一本道タイプ(周回タイプではない)のレースゲームになります。また,なぜか体力メーターも用意されているので,サバイバルレースを前提にしているものと思われます。
 まず,プレイ人数と時間制限を設定します。次にゴール地点の判定用に使うオブジェクトを指定します。指定はほぼこれだけです。例によって,時間制限を0秒に設定すると,時間制限のないゲームにできます。
 適当にコースを作って,ウィザードでイベントをセットすれば,そのままゲームになります。この手のゲームは,障害物競争タイプが多いようですね。作り上げるコースによって,それぞれのオリジナリティを出しやすいので,万人向けの題材で,一人プレイとマルチプレイの共用ゲームを作りやすいジャンルでもあります。

 このウィザードで作られるゲームは,ゴール判定がプレイヤーとゴールオブジェクトの接触になっているので,自動車などを使った場合,乗り物から降りなければならないという制限があります。ゴール判定を乗り物単位のものに変更するか,ゴールオブジェクトの直前で乗り物を消去して,プレイヤーと判定を取るのがよいでしょう。
 体力勝負の部分が必要なければ,それぞれで改造してみるとよいでしょう。

 

image

 

image

 

image

 

image

 

image

 

image

 

image

 

image

 

 

アイテム集めゲーム

ゲームの目的:指定されたアイテムを集める
事前に用意が必要なもの:集めるアイテム全種と最大対戦人数分のプレイヤーを配置しておくこと

 

image

 連載第1回で紹介したリンゴ集めゲームも,このジャンルのゲームとなります。アクションゲームやアドベンチャーゲームっぽい内容にも応用できるものとなっています。なぜか,体力メーターも用意されていますので,格闘ゲームと混ぜた仕様にすることもできます。
 このアイテム集めゲームでは,最大3種類のアイテムを集めるゲームが想定されており,オブジェクトを指定しなければ2種類以下にも対応できます。さらに,アイテムをすべて集めたら終了するかどうかを指定できるのが,これまでのものとの最大の違いです。
 例えば,6個のリンゴを集める場合,リンゴをオブジェクトグループでまとめておき,そのグループを対象とすると,そこに指定されているオブジェクト数だけイベントが作成されます。個数をカウントして処理するのではなく,個別にイベントを作成しています。自動生成だけあって,これはあまり賢い処理ではありません。オブジェクトで接触時に消去を指定して,オブジェクトグループのカウンタを2個作れば(加点用と個数判定用),カウンタ2個とスコアボード1個で済ませることができる処理ではあります。

 

image
image

グループで判定すると簡略化が可能

 

 しかし,ある意味,これは非常に重要な機能です。プレイヤー1がなんらかのオブジェクトに接触した場合に,そのオブジェクトとの判定を取るカウンタ,そして対応したスコアボードへの加算,そして各オブジェクトごとのアクション(デフォルトは消去)に対応したイベントが自動的に生成されるのです。ゲームによっては,膨大な数のイベントを羅列せざるをえないこともあるのですが,この機能をうまく使えば,多少は労力が軽減されるかもしれません。

 

image

 

image

 

image

 

image

 

image

 

image

 

image

 

 

球技

ゲームの目的:ゴールにボールを入れる
事前に用意が必要なもの:ゴールとなるオブジェクトとボールオブジェクトと最大対戦人数分のプレイヤーを配置しておくこと

 

image

ちなみに,このようなサッカーゴールをゴールオブジェクトに使うと,横や裏から衝突しても得点になってしまうので,中に透明な物体を入れて,それを判定材料にしましょう

 最後に球技タイプです。指定するのは,対戦人数,チーム割,ボールとなるオブジェクト,双方のゴールとなるオブジェクトなどです。
 球技には,サッカーのように指定時間内に入れた得点を競うもの,テニスやバレーボールのように,一定の得点をどちらが先に入れるかを競うもの,野球やボウリングのように既定のターン数で終了するものがありますが,このウィザードが想定しているのはサッカータイプのものです。時間設定を0秒にすれば,時間制限がなくなるので,得点による判定部分を作れば,得点制にするのはそれほど難しくありません。

 

image

 

image

 

image

 

image

 

 

 以上のように,ViZiMOで実現可能なすべての種類のゲームとはいいませんが,かなりの種類のものが,このウィザードで賄えることはお分かりでしょう。どんなゲームを作りたいかを考え,それが,こういったお決まりの形で収まるのならまず,このウィザードが使えないかを検討したり,雛形を作って拡張していくのもよい方法です。

 

 ViZiMOで複雑な操作を行うときに多用されるのが,オブジェクトの消失と出現です。オブジェクトの出現を,オブジェクトが消失していないときに使うと,瞬間移動的にオブジェクトを初期位置に戻すことができるというのは前回説明しました。では,消失しているオブジェクトを消失させるとどうなるのでしょうか? 「消えているものだから,消えたまま」というのが一つの正解です。しかし,これは,オブジェクト消失時の自動再出現が設定されていない場合の話です。自動出現が設定されている場合は,消失時に消失させると,「オブジェクトが出現する」という現象が発生します(消失直後を除く)。イベントの組み立てに失敗すると,予想のできない事態になることもありますので,こういうケースもあることを覚えておきましょう。

 

 

 

今週のサンプル:ホッケーゲームを作ろう

 

image

 今回のサンプルとして,ウィザードを使った球技(?)を作ってみます。ViZiMOのコミュニティでは,サッカーゲームが一時期流行っていたのですが,球技としてはいちばん扱いやすく,バリエーションもつけやすいので,イベントの練習には適した素材です。基本的なルールは決まっていますので,ゲームをする側にも分かりやすいのもメリットでしょう。難点の一つは,対戦相手がいないと,ほとんどゲームにならないということです。なんとかシングルプレイヤーモードをつけるとしても,かなりルールの違うものになりそうですね。今回は,対人戦のみを前提にしておきます。

 さて,今回作るゲームは,どちらかといえばサッカーよりもアイスホッケーをイメージしたものです。エアーホッケーといったほうが分かりやすいでしょうか。
 ViZiMOでは,エアーホッケーゲームはいくつか作られていますが,すべてマウスでパドルを直接操作するものとなっています。エアーホッケーらしさとしては,確かにマウス操作がよいのですが,ViZiMOのマウス操作はあまり分かりやすくないのと,臨場感などの点から,今回はマウスによる直接操作は採用しません。

 まずフィールドを作りましょう。水面を置いて氷に見立て,周りは変形したトランポリンで囲って,ボールの反射を活用できるようにします。ゴール判定には色違いのグミを使うことにしましょう。ついでにセンターラインなどを加えると,ほぼできあがりです。
 ボールは赤い球体としました。アイスホッケーなら円柱でパックを作ったほうがよいのですが,滑りがイマイチなので,転がっていく球にしました。グランドホッケーのほうはボールを使うのでよしとしましょう。
 さて,サッカーほか,ゴルフなどの球技を作るうえでの難点として,「ボールを持ててしまう」というのがあります。また,ボールを蹴る(打つ)のが結構大変という問題も抱えています。ボールを引っかけてあらぬ方向に飛ばしてしまうことがよくあります。
 これらの問題を解消するために,今回はプレイヤーをパドル化することにします。

 

image

 理屈は簡単で,リングを拡大して中央の穴にプレイヤーが入るくらいに調節します。重さは重めで,摩擦はなくします。Y方向だけさらに拡大すると,中のプレイヤーが安定するでしょう。プレイヤーを中に配置して,非表示に設定します。これでほぼできあがりです。起動してカーソルキーを操作すると,リングが動いているように見えるはずです。この状態では,体当たりでボールを動かすことになります。反発率を上げても全然勢いよく飛んでくれないのですが,ドリブルだと思えばよいのでしょうか。また,リングを挟んでいるため,xキーを押してもボールをつかめたりはしません。
 問題は,キャラクターがリングから外れてしまうと,戻す方法がないことなのですが,これはキャラクターが外壁にぶつかったら初期化するという方法で乗り切りましょう。
 また,今回は時間制ではなく,得点制への変更例としてルールを5点先取で勝ちという風に変更します。判定部分の追加はごく簡単です。下の図をご覧ください。

 

image

 

image

 

image

 

image

 

image

 

image

5個の立方体に見えるが,実は3415個の立方体が重なっている。合成を使うと,通常では扱えない数のオブジェクトを使用できるようになる

 ViZiMOで扱えるオブジェクト数はどれくらいでしょうか? どうも状況によって多少変わってくるようなのですが,起動したてのViZiKitで基本立方体をコピーし続けると,683個で「これ以上オブジェクトを配置できません」というエラーが発生しました。一応,UNDOバッファを削除しても,これ以上登録はできません。
 この状態で一度セーブしておき,同じものをここに「合成」してみましょう。……なんなく合成できます。もう1回合成してみましょう。……できます。新規のオブジェクトを置こうとするとエラーになるのですが,別ファイルから合成することは可能です。これによって,非常に複雑なシーンも実現できそうです。
 注意点は,読み込まれるのは,オブジェクトだけで,イベントやカウンタなどは一緒に保存されていても適用されません。ご注意を。

 

 

 

タイマー処理の基礎

 

image

 後半は,話題を変えて少し応用編です。前回扱った乱数は,近いうちにシステムでサポートされるとのことで,乱数以外になにがパワーアップされるのか,今後の展開に期待したいところです。
 ViZiMOのイベント処理の基本は,接触に対してなんらかのアクションを振り分けていくことで行われます。
 イベントが起きて即座に反応するのは情緒がないとか,少し間を取りたいという場合には,間にスコアボードを入れ,タイマーを操作して,間接的に次のイベントを呼び出します。

 

image

 立方体1に触ると,立方体2,3,4が次々と爆発するシーケンスを作ってみましょう。いくつかやり方はありますが,ここではタイマー1個とイベント4個を使う方法を紹介します。
 まず,立方体1と接触判定を取るカウンタ,およびカウントアップタイマーを作っておきましょう。タイマーは初期状態では動作を無効化しておきます。
 続いて,接触カウンタによって起動されるイベントの記述です。ここでは,イベント1〜3でそれぞれの立方体を爆発させることにします。イベントを作成し,それぞれ,タイマーが2秒,3秒,4秒以上になったらそれぞれの立方体を爆発させるようにしておきます。
 一通りイベントを揃えたら,調整に入ります。
 接触と同時に,タイマーの起動,およびイベント1を有効化するように,最初のイベントを作成します。
 イベント1では,イベント2を有効化する処理,およびイベント1自身を無効化する処理を加えます。くれぐれも順番を間違えないように。イベント2も同様に,イベント3を有効化し,イベント2を無効化する処理を加えます。
 イベント3では,タイマーを0に初期化し,タイマーの動作を無効化する処理とイベント3自体を無効化する処理を加えます。数珠つなぎに次のイベントを有効化し,自身を無効化していくわけです。これにより,一つのタイマーで複数の処理を回すことができます。
 ただし,これらの処理が同時に発生しないことが条件となります。同時に近い間隔でタイマー処理が発生する可能性がある場合には,それぞれのアクションについて独立したスコアボードを設定したほうがいいでしょう。

 

image

 

image

 

image

 

image

 

image

 

image

 

image

 

 

スコアボードを使わない処理
image

物体の落下でイベントを駆動している例

 非常に込み入ったルームを作ってイベントが込み合ってくると,タイマー処理が追いつかないのか,まれに指定した時間になってもイベントが駆動されないことがあります。そういった場合には,明示的にトリガー作ってイベントを起こしてやることが有効です。
 スコアボードのダウンタイマーの代わりに使えるのは,オブジェクトの落下時間です。あるタイミングで,オブジェクトを生成し(物理運動あり,初期状態アクティブ),落下先との接触を取るカウンタを設置して次のイベントを駆動していきます。タイミングは高さで調整しますが,この方法ならかなり安定して動作するようです。ほとんどの場合,スコアボードで間に合うのですが,どうもおかしいという場合にはお試しを。

 さて,ViZiMOのデフォルト状態である,オブジェクトを消去した場合に一定時間後に自動で再出現してくれる機能は非常に便利です。ある程度間隔を置いて出現するので,ウェイトがついた処理が最初から実装されています。ですが,場合によってはその指定を使用できないこともあります。オブジェクトを初期状態では表示したくない場合がそれに当たります。こういったときには,オブジェクトの出現と消滅を自分で制御しなければなりません。しかし,デフォルト機能の自動出現と同じことをやろうとすると,扱う物体それぞれに対して,スコアボードとイベントを用意しなくてはなりません。できれば回避したいところなのですが,まだうまい解決策が見つかりません。

 次回は最終回ということで,まだ説明していないViZiMOの機能などについてまとめてみたいと思います(まだ題材は決めていませんが)。では,また来週。

 

 物理運動を有効にしていても,なにかのオブジェクトを消去したときに,その上に乗っていてるオブジェクトが落ちてこないことがあります。ゲームによっては,オブジェクトが落ちてこないと非常に困ったことになるので,なんとか強制的に落とす方法を考えてみましょう。
 オブジェクトが落ちないのは,消えたという情報が伝わらないからで,これは完全に静止しているオブジェクトには,外部からの接触などがない限り物理判定を行わないような最適化が行われていることによるものと思われます。そのオブジェクトになにかのイベントが発生すれば,ちゃんと物理運動に従うようになります。
 簡単なのは,下のオブジェクトを消去すると同時に,上から透明な物体を落とすことです。上に乗っている物体が小さい場合は,土台となるオブジェクトと同じ大きさのものをぶつけてやればよいでしょう。もちろん,接触と同時に,透明オブジェクトは消去しておきます。

 

 

■■Veki(なぞの職人)■■
 先週は風邪でダウンしたり,Tipsのネタ切れになったりと,いろいろ大変だった様子。「最終回のネタはあるんですか?」と聞くと,「最初4回って話じゃありませんでした?」とさりげなく反撃が。ええ,「4回くらい」という話でした。最終回のTipsに期待しましょう。
  • 関連タイトル:

    ViZiMO

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月26日〜12月27日