連載
ViZiMOは3Dオブジェクトや物理演算が使えるViZルームにつながるSNS(ソーシャル・ネットワーク・サービス)です。各ViZルームは付属のViZiKitで作成することができます。このViZルーム用に用意されているオブジェクトを使えば,ゲームなどが(比較的)簡単に作れてしまうというのがウリになっていますが,基本的にはSNSが主体で「3Dゲームや箱庭が作れるSNS」という位置付けのサービスになっています。
ViZiMOがどういうものかを,「Second Life」のような3DバーチャルワールドやMMORPGと比較してみましょう。Second Lifeは3D MMORPGに似ていますが,ゲームではありませんが,内部でゲームを作れば,仲間と一緒にゲームで楽しめます。MMORPGは,ゲーム部分が主体ですが,昨今ではアバターの着せ替えやコミュニケーションツール的な部分も重要で,3Dバーチャルワールドに近づいている気配もありますね。
ViZiMOは,SNSを3D空間の入り口にしています。Second LifeやMMORPGなどでは,3Dワールドがロビーなどのコミュニケーションエリアとプレイグラウンドを兼ねていますが,ViZiMOでは,コミュニケーション機能をSNSとチャットに任せた形態になっています。コミュニケーションツールとしては,テキストや画像を使ったWebベースの技術のほうがこなれており,ローコストで実現できます。Webベースだと,コミュニケーションに同時性が要求されないのも利点といえるでしょう。誰もいない時間帯でも,書き込んでおけばコミュニケーションは取れるのです。
こう見ると,ViZiMOは,割といいとこ取りなシステムだと思うのですが,興味を持って集まる人はいても,実際にルームを作って公開する人は少なく,ちゃんとゲームになっているものを作れる人は,さらに限られているようです。もちろん,ViZルームでは,自分の部屋やチャット場所を作ったり,3Dアートで遊ぶこともできますが,やはりゲームを作ってみたいじゃないですか。
ここでは,βテストを通じてViZiMOをいじった経験をもとに,ViZiMOを始めてからゲームを作るまでをサポートしてみたいと思います。よろしくお付き合いください。現在はオープンβテスト中ですので,興味を持った方は誰でもすぐに参加できるようになっています。様子見の人もとりあえず登録してみましょう。
まず,ViZiKitを立ち上げてみましょう。今回は,テンプレートは使いません。
画面にグリッドが出てますね。この小さなマス目の大きさは30cm四方です。
では,素材パレット(出ていない場合はF1キーで)を開いて,地形を一つ置いてみましょう。地形パーツ(A0-1)を中央に置いてください。ここでいう中央とは,エディタ平面の中央で,マウスの右ボタンを押したままぐるぐるしたときに中心となっている点です。初期画面では,中央は心持ち手前にあるかと思います。その中央にある格子点をクリックするように,素材パレットから地形をつかんで置きます。これで地形が中央に置かれました。オブジェクトは,指示した点を真ん中にして配置されます。
ここで置いた地形は,マス目にして24マス,7.2m四方の地面です。
次にF5キーを押すとオブジェクト操作ウィンドウが現れます。ここの拡大/縮小の部分で,XとZに1380%を指定してみましょう。
地形が,ほぼグリッドの全体に拡大されましたね。サイズを計算すると99.36mで,約100m四方の平面です。ViZiMOで使えるのは,この平面と上下に伸びる空間内のみです。下はあまり使えませんが,上は1万m(100万cm)くらいまで使えるようになっています。とりあえず,100m四方の空間が扱えるということを頭の片隅に入れておきましょう。
素材パレットから,[キャラクター]−[プレイヤー]を開いて,プレイヤー1を先ほどの地面に置いてみます。この状態でプレイモードに移行すれば,キャラクターを動かすことができます。カーソルキーで移動,Cキーでジャンプ,Xキーでしゃがみ,Zキーでキックします。Xキーは,アイテムを手に取ったり,乗り物に乗ったりといった操作のためのキー,Zキーは攻撃キーとなっています。
また,移動中にシフトキーを押すと(この場合は)走り出すことも覚えておきましょう。ゲーム内での100m四方の大きさを確認しておいてください。
ジャンプ動作でCキーを何度か押していると,連打したときに前転動作をするのが分かると思います。ゲームの仕掛けに使うのはおすすめしませんが,ジャンプだけだと登れない高さもジャンプ+前転で登れたりすることがあります。また,ちょんと押したときと長押ししたときではジャンプの高さが違うことも確認しておいてください。そのほか,フルキー側の数字を順に押していくと,キャラクターがいろんなアクションをしますので,確認しておきましょう。
ViZiMOでゲームキャラクターができることについては,以上のとおりですが,キー操作として,ほかにアクションキーの操作があります。これはゲーム内で設定されている場合にのみ意味があるもので,AからFまで横に並んだキーを押すと,設定された動作が実行されます。また,オブジェクトによっては,キャラクターの操作でいろいろな効果を出すものもあります。
このようなキャラクターの動作のうち,基本的な部分(走る速度やジャンプ力など)は,ゲームごとに設定できます。ジャンプ禁止にしたり,実質的に走れないようにすることもできます。ゲームを組み立てる際の重要事項ですので,いろいろ試しておくのがよいでしょう。
いろいろなβテスターを見ていると,オブジェクトを配置するのは比較的早くこなすものの,それをゲームに仕上げる部分で悩んでいる人が多いように思われます。
ViZiMOでは,スクリプト(テキストエディタで書くような予約語と変数などによる記述)でプログラムを書くことはできません。そういうのを書かなくてもゲームが作れるとはいえるのですが,操作が簡略化された半面,できることに制限があり,それなりのコツの習得が必要です。
ViZiMOでゲームの組み立てに使える要素には以下のものがあります。
- カウンタ
オブジェクト同士の接触判定ができます。 - スコアボード
数字の保存ができます。タイマーにもなります。表示できます。 - イベント
ゲームの制御やオブジェクトの操作ができます。
具体的にこれらをどう組み立てていくのかを説明する前に,処理の流れを説明しておきましょう。処理は基本的に「イベントドリブン」です。なにか(イベント)が起きたときに,それに対応した処理を行っていきます。きっかけがなければなにも動きません。
- 処理を始めるきっかけ(トリガー)
- 処理内容(アクション)
この二つが重要です。具体例を簡単にまとめてみると,それぞれ以下のようになります。
- オブジェクトがぶつかった
- タイマーが指定の時間になった
- アクションキーが押された
- 得点が○○点以上になった
- オブジェクトを消す/出現させる
- オブジェクトを爆発させる
- オブジェクト特有の動作をさせる
- カウンタやイベントの有効/無効を切り換える
- スコアボードの表示/非表示を切り換える
- スコアボードの値を変更する
- ゲームを終了させる
まだ,漠然としすぎてよく分かりませんね。以下に少し実例を挙げてみましょう。
まず,必要なものは,リンゴ,プレイヤーキャラクターです。キャラクターが落ちないような地面なども必要ですが(画像内のリンゴの樹はオマケです)。それぞれを素材パレットから持ってきて適当に配置してください。
まず,リンゴを拾ったということをカウンタで察知しましょう。ViZiMOでは接触判定しかできませんので,キャラクターが触れた瞬間にリンゴを消して拾った動作とみなします。
カウンタを作成し,プレイヤーとリンゴの接触を監視するように設定します(スコアボードなどは,今回は使いません)。これがトリガーになります。
次に,カウンタが発動したあとのアクションを指定します。イベントを新規作成して,カウンタが発動したあとの処理を指定するわけです。まず,リンゴを消去します。これはアクションオブジェクトのところから指定します。
そして,ゲームシーケンスでプレイヤー1の勝利を指定し,続いてゲーム終了も指定しておきます。これはお約束のようなもので,まず勝利フラグを立ててから,終了処理が行われると,勝利(クリア)画面になるようにできています。勝利フラグを立てずに終了すると,ゲームオーバー画面で終了します。勝利と終了の順番も重要ですので,忘れないようにしてください。
さて,次にリンゴを5個拾うとゲームクリアという風にしてみましょう。リンゴを拾った個数を数えるためにスコアボードが必要になります。
リンゴの使い方でいくつか実装方法はあるのですが,とりあえず,リンゴをばらまき,それを拾っていきます。
先ほどと同じように,リンゴごとにプレイヤーとの接触判定を取っていると,5個もあってたいへんです。そこで,リンゴを5個まとめてグループ化を行い,そのグループとの接触判定を取るようにしましょう。リンゴ単体からグループになるだけで,指定は先ほどとほとんど変わりませんが,今度は個数を数えるスコアボードを指定します。スコアボードは事前に作成しておきましょう。
イベント部分でも,トリガーをカウンタからスコアボードに変更します。条件は,拾ったリンゴの数が5個以上の場合に処理を行うようにしておきます。ちょうど5個でも問題はないのですが,なにかの拍子に同じリンゴに2回触れたことになってしまうこともありえなくはないかもしれませんので(Windowsというのはそういうものです),念のために5個以上の指定にしておくことをおすすめします。
さて,今回問題となるのは,拾ったリンゴを消す部分です。オブジェクトグループは便利ですが,「グループのどれかと接触した」という情報で処理が起動されますので,どのリンゴを消すべきなのかはアクション部分には伝わってきません。
そこで,オブジェクトの消去は,オブジェクト自体の設定部分でするようにします。ViZiMOでは,オブジェクト設定のところで接触時の動作などを指定できます。たいていは「出現/消失/爆発」の三択なのですが,出現と消失は利用範囲が広いので,できるだけこの部分を使用するようにしましょう。どのオブジェクトと接触した場合に消すかなどを指定できるので,かなり便利に使えます。ついでに,「消滅後,自動で出現する」のチェックを外しておきましょう。これをしないと,拾ったリンゴがしばらくすると,また出てきます。なお,これらの指定はオブジェクトグループの部分で行うことで,各リンゴすべてに一括指定できます。
このようにオブジェクトでのアクション指定を使うと,イベント処理を大幅に簡略化できることがあります。とくに接触アクション以外に初期アクションを指定できるのは非常に便利です。ただ,初期アクションが動くのは本当にルームが起動されたときだけなので,ゲーム内で再プレイしたい場合などにオブジェクトの初期化を行っても,初期動作の部分は作動しません。そういう場合は,初期化イベントをほかでまとめて作っておきましょう。
さて,次は時間制限を付けてみましょう。基本的に先ほどのものと同じですが,時間を計るタイマーが必要になります。これは,スコアボードをカウントダウンタイマーモードで使うことで実現できます。新規に追加したスコアボード編集ダイアログの「種類」のところで選択し,初期値を10にしておきます。なお,残り時間を表示するときにスコアボード名も一緒に表示されますので,ここでは画面に表示されたときに分かりやすいスコアボード名を付けるようにしましょう。
イベントでは,タイマーが0以下になったときにゲームシーケンスで「終了」だけを実行します。この場合は先ほどと違って勝利フラグが立っていないので,ゲームオーバーで終了するようになります。時間内にクリアできた場合は,先ほどの終了処理のままで問題ありません。時間に間に合わなかった場合のみ,新しい終了画面が表示されますので。
また,ViZiKitの上メニューにあるViZルーム内容-ViZルーム設定の部分の3ページめで「終了時に表示するスコアボード」の部分で残り時間を指定しておけば,クリア時にクリアタイムが表示されることになります。タイマーを使ったゲームでは同様の指定をしておくとよいでしょう。
ViZiMOでは,カウンタやイベントで指定してあるオブジェクトを操作した場合,カウンタやイベントの設定が解除されるという仕様になっています。全部の動作を作り込んでおいてからオブジェクトの色を変えたりすると,いきなりゲームが動かなくなったりします。
とはいえ,細かい部分はあと回しにしたい人も多いでしょう。この現象を防ぐには,使用するオブジェクトをできるだけグループ化して扱うことが有効です。中身はボール1個でも,それをグループにしておき,そのグループをカウンタなどで指定するわけです。このようにしておくと,オブジェクト自体の色を変更しても,設定されているカウンタやイベントの情報はクリアされません。
なお,オブジェクトグループ単位で色を変更するなどしても大丈夫なので,使い勝手はかなりよくなります。ゲームのプロトタイピングをしてから開発する場合には,とくに有効です。
ViZiKitには,便利なキーボードショートカットが用意されています。オープンβテスト版になってさらに便利になってきました。私が多用するのは,フルキーの5。オブジェクトを中心に持ってくる動作がワンキーでできます。
最初は誰もがオブジェクトをいろいろ触ってみて,どんなことができそうかを試していくのでしょうが,ある程度まとまったルームができあがったら,サーバーにアップロードしてみましょう。
以下に,ルームをアップするときのチェック事項をまとめておきます。
ViZiKitでルームを作成すると,デフォルトでは4人入れることになっていますが,それにはゲーム内にプレイヤーオブジェクト(ないしカメラオブジェクト)を4体置いておく必要があります。プレイヤーオブジェクトがなくてもルームに入れるのですが,その場合,デフォルトの固定視点から見た画像しか出てきません。
実際に遊べる人数にルーム情報を書き換えることを忘れないでください。
ランキング機能を使えば,ゲームを競い合うことができます。対戦ゲームであれば,勝利回数であったり,アクションゲームであったら,得点やクリア時間であったりとさまざまです。このうち,勝利回数はサーバー側が管理していますので,それを指定すればよいのですが,得点とかクリア時間などはゲーム側で最後に表示するスコアボード情報が使用されます。これはルーム設定の3ページめで指定できますので,ルームを公開するときにはできるだけ設定するようにしましょう。タイムアタックなどができれば楽しみ方が広がります。
ぱっと見てどんなゲームかが分かりますので(分からないものもありますが),できるだけゲームのサムネイルをつけてアップするようにしましょう。自分が他人のルームを遊ぶときのことを考えれば分かると思うのですが,サムネイルもついてないルーム(それくらいの手間もかけられてないルーム)を開いてみようと思う人は多くありません。
ゲームを更新したときは,新規登録ではなく更新で変更できます。短時間で連続投稿してもSPAMとみなされてスルーされるのがオチです。
現状のViZiMOの弱いところなのですが,ルームに対するコメントは星印の付与でしか行えません。これは一方方向かつ一度しかできないものなのでコミュニケーションは取れない仕様といえます。そのルーム用の日記があれば,レスの交換ができますので,現実的なコミュニケーションが可能になります。
今回は最初ということで,ごく簡単な例の紹介に留めましたが,次回はもう少しゲーム作成っぽい展開にする予定です。
ViZiMOではできることにいろいろと制限はありますが,「なにもできない」わけではありません。とはいえ,制限はきつめなので,あまり大それたモノは作れないと考えてください。その分,プログラム技術などもほとんど要求されませんので,素人でもプログラマでもあまり差がつかず,技術的な面では同じくらいのレベルで楽しめます。むしろ,パズル感覚で,制限の中で工夫していくことを楽しむのが面白いともいえるでしょう。
とにかく,まずはいろいろ実験してみましょう。最初は扱いづらいと感じる部分もあるでしょうが,ViZiKitは意外と(失礼)よくできているツールです。また,ViZルームは毎日制作されていますので,他人の作品を参考にしてみるのも,ViZiMOの使い方を学ぶうえで有効です。基本はSNSですので,何をやっているのか分からないルームなどでは,作者に気軽に質問してみましょう。コミュニケーションを大切にしてください。
ではまた来週お会いしましょう。
Rキーを押すことで,F5キーを押したときのサイズ変更では独立サイズ指定できなかったオブジェクトでも,X/Y/Z独立でサイズ変更ができるようになっています。オブジェクトグループに対しても使えます。この場合,オブジェクトの衝突判定のチェックは外しておくようにしましょう。
ViZiMOでは,オンライン対戦ゲームを簡単に作成できるのですが,対戦相手がいないとゲームにならないものも多く見受けられます。これはちょっともったいないですね。対戦相手がいないときは,一人でも遊べるような工夫がほしいところです。
とはいえ,ルームに何人が入っているかを直接判定することはできません。シングルプレイヤーのときはプレイヤー1のみ,マルチプレイヤーのときには,それに加えて,最低限プレイヤー2が登場することになります。
そこで,プレイヤーを少し浮かせて配置しておき,プレイヤー2が地面と衝突した場合は,マルチプレイヤーでゲームが行われていると判断します。プレイヤー1をやや高く,プレイヤー2をやや低く配置して開始すると,プレイヤー1の着地イベントが発生したときにプレイヤー2の着地イベントが発生していなければ,シングルプレイヤーでゲームが行われていると判断できます。
プレイ人数の把握が必要な場合は,プレイヤー3,プレイヤー4についても同様な処理をすればよいでしょう。
|
- 関連タイトル:
ViZiMO
- この記事のURL:
(C)2007 MiCROViSiON Inc.