月別アーカイブ: 2014年10月

オンラインゲームのシステム案

「ポリゴンウォーク」からだいぶ外れてしまうが、前回の記事で書いたオンラインゲームにおけるプレイヤー間のパラメータ干渉についてもう少し考えてみた。

オンラインゲーム内の様々なオブジェクトを外部からアクセスできないパラメータを持つインスタンスと考えた場合に、そのオブジェクトを支配するというのは、そのオブジェクトの隠ぺいされたパラメータを制御するメソッドを自在に操るアクセス権を持つということとも考えられないだろうか。

その支配者は、キャラクター含む世界内のオブジェクトを自由自在に編集できる。

例えば、その支配者はフィールド上に生えた木というオブジェクトから葉をなくすこともできれば、お気に入りの場所に城を建てることもできる、また、出会ったプレイヤーの姿をネズミに変えてしまうことさえもできるのだ。

ネズミは移動はできるがもはや会話をすることはできない。

そのネズミを見た人はそれがプレイヤーだとは思わないかもしれない。

そのオブジェクトへのアクセス権とは、まるで「ゲド戦記」における「真の名前」、また「指輪物語」における「指輪」のようなものである。

この「オブジェクト」へのアクセス権の争奪戦をテーマにしたオンラインゲームがあっても面白いかもしれない。

非常に過激な仕組みでユーザー間の争いが絶えないかもしれないが、数々のドラマが発生するだろう。

例えば、アクセス権の鍵となるものを「指輪物語」の「指輪」のようなものに託すとすれば、その所有をめぐって善と悪が対立する構図になるだろう。

善き人が指輪を持てば平和な世界になるが、悪しき人が指輪を持てば好き放題にやるわけだ。

あるプレイヤーは木に変えられひとつの場所から動けなくなり、通りかかるプレイヤーを無言で眺める。
できることと言えばその葉を少し揺らすことくらいだろうか。

木に変えられてしまったプレイヤーはたまったものじゃないがそれもひとつのドラマを生む要素だろう。
もしかしたら通りかかった人が気づいて魔法を解いてくれるかもしれない。

もしくは勇者が現れて支配者から指輪を奪い、世界にかけられた魔法をすべて解いてくれるかもしれない。
それが明日なのか1年後なのかはわからないが・・・。

しかしそうやって偶然に与えられた不公平な生を積極的に生きるということはまさに人生である。

あるプレイヤーは支配者に小鳥に変えられもはや喋ることもできず自分の境遇に嘆く。
しかしあるとき空を飛べることで他のプレイヤーには絶対にできない自分の役割に気付くかもしれない。

これは決められたストーリーを手順通りに進んでゆく従来のスタイルのゲームではなく、プレイヤーが与えられた世界の中で問題を発生させ、また、それを解決してゆくゲームである。

ある意味、みんなが勇者ではなくそれぞれが与えられた役割を演じるという点では本当のロールプレイングなのかもしれない。

現実的にはすべての人が同じクオリティで楽しめないゲームの商品化は苦情だらけになるのかもしれないが、もしこんなオンラインゲームがあるなら一度遊んでみたい気がする。

私はエンターテイメントというのは単なる暇潰しではなく、何か人生について新しい学びがあるものだと思う。

そういった点ではこの仕組みはかつてないエンターテイメントになる気もしないではない。

私はネズミなりに世界に貢献する方法を見いだすことを楽しめるのではないかと考える。

パラメータ作成機能なんてあったらいろいろ出来るかも

おそらく「ポリゴンウォーク」でここまでゲームに特化した機能は入れることはないとは思うが、こういった機能があったら遊びが広がりそうだなと思ったのでメモ。

プロジェクト側で独自に使用するパラメータを好きに設定できるようにする。

例えば、RPG空間のプロジェクトで言えば制作者は以下のパラメータを設定する。

・体力
・攻撃力
・防御力

既存のイベント機能のアクションには、各パラメータに対する増減をさせられる機能を追加。

これによって泥の沼に入ったときには体力を消耗させるなんていうことも可能。

あとは、マップ(環境側)がパラメータに影響を与える仕組みがあってもいい。

例えば冬山のマップには「気温」というパラメータがあり、この気温がユーザーのパラメータに影響する。

「防寒服」というアイテムを所持していればこの影響を受けないようにするといったものだ。

こういう仕組みがあれば制作者サイドがいろいろなパラメータを生み出し、独自のゲームを作れるサービスになるかもしれない。

他には、プロジェクト内であるアイテムを持っているユーザーが他のユーザーのパラメータに干渉できるといった仕組みもちょっと面白いかもしれない。

指輪物語じゃないけれどある指輪を持っているユーザーがそのプロジェクト内の世界を支配する。

ある人はその支配者となったユーザーに樹木に変えられてしまう。

樹木となったユーザーはもはやそこから動くことができず、その魔法を解いてくれる人を待つばかりだ。

こういった仕組みができてくると、ひとつのアイテムをめぐってユーザーが自然発生的にドラマを織りなすような場ができあがるかもしれない。

「ポリゴンウォーク」で友達同士で住むマンションのような空間を作る

ひとつあったら面白いかもなあと思った空間案。

友達同士で暮らすマンションのような空間があってもいいかもしれない。

例えば、101号室にはAさんの部屋があって、102号室にはBさんの部屋がある。

これは「ポリゴンウォーク」のイベント機能+アイテムコードを使ったら実現可能。

■プロジェクト構成…

まずクローズドの空間にするのであればプロジェクトの公開設定は非公開のままにしておく。

そうすればプロジェクトがフロント画面にプロジェクトが表示されることはないがURLに直接アクセスすれば空間に入ることができる。

■マップ構成…

マンションのマップ
├ 101号室のマップ
├ 102号室のマップ
├ 103号室のマップ
├ 104号室のマップ
└ 105号室のマップ

こんな感じで各部屋をそれぞれマップとして登録しておく。

■アイテム構成…

101号室の鍵
102号室の鍵
103号室の鍵
104号室の鍵
105号室の鍵

それぞれのアイテムにアイテムコードを設定。

■イベント構成…

101号室のドア
102号室のドア
103号室のドア
104号室のドア
105号室のドア

それぞれ部屋の鍵を所持していた場合のみ指定の部屋のマップへ移動させる。
※この際使用時にアイテムを減算しない設定にしておく。

このような構成で友達にそれぞれの部屋の鍵のアイテムコードを知らせる。
友達はプロジェクトのアイテムコード入力画面から指定の部屋の鍵アイテムを入手する。

これによって以降その友達鍵を使って自分の部屋に入ることができる。

ただ、こういった空間を考えた場合にいくつか欲しい機能がある。

1) 開始マップを保持できる機能

次回プロジェクトに入った場合に自分の部屋から始めたい。

2) 特定の人を指定のマップに同伴させる機能

友達を部屋に呼ぶとき、友達は鍵を持っていなくても一緒に入室できるようにする。

3) 指定のアイテムがなければ各マップ空間に直接アクセス禁止にできる機能

現状はマップにURLを直接入れれば無条件でそのマップに入ることができる。

但しクローズドのマップを意識した場合には指定のアイテムやイベントの条件を判定してアクセスを制御する仕組みが必要になりそう。

4) 他プロジェクトのマップを連携できるようにする

現状はひとつのプロジェクト内において同一プロジェクト上のマップしか登録はできない。

ただ、自分の部屋を自分でカスタマイズしたい場合に第三者のプロジェクトをいじってもらわないといけないのは不便だ。

であれば自分が制作したマップを他プロジェクトの管理人に設定してもらって部屋の中の編集については自分で変更できる仕組みにすれば便利かもしれない。

こういった機能があれば、プロジェクトの中に自分の部屋を持ち、お互いの部屋を行ったり来たりするのを楽しむことができる空間作成も可能になる。

ポリゴンウォーク内でのアフィリエイト広告について

「ポリゴンウォーク」の特徴として、空間ファイルが公開者のサーバー側に設置されていることがあります。

そのため、仮想空間内でのアフィリエイト広告設置が可能です。

※公開者のドメインから接続されるため

魅力的な空間を演出し、そこにマッチした広告オブジェクトを設置することで是非収益化に繋げて頂ければと思います。

現在以下デモ空間でテスト中です。

アフィリエイト広告デモ空間

メタセコイアでフィールドマップを作る

今「ポリゴンウォーク」で使用する地形を作る簡単な方法がないか調べていたのですが、「メタセコイア」という3Dモデリングソフトには「凸凹地形」という便利な機能があるようです。

メタセコイア

「メタセコイア」を起動してメニューのオブジェクト>作成と選択すると「凸凹地形」というのがあります。

これは画像の濃淡から自動的に地形を生成してくれる便利な機能です。

マップを作るのにベースとなる画像を作成すればよいので開発効率がよいですね。

地形ができたらテクスチャをマッピングしてゆきます。

ベースの地面に道のテクスチャを貼り付けてゆけばフィールドマップがすぐできそうですね。

次にフィールドマップに樹木や街、塔や洞窟などのオブジェクトを配置してゆきましょう。

街や塔はフィールドマップ表示用の外観だけのものを設置すれば描画処理は軽く済むものと思います。

次に「ポリゴンウォーク」の管理画面でフィールドマップの街や洞窟、塔の入口に移動イベントを設置してゆきます。

これによって街や洞窟、塔の中への移動が可能になります。

比較的簡単にRPGライクな空間が作れそうです。

カメラワークの実装について

いま「ポリゴンウォーク」の視点は一人称となっています。

つまり自分のアバターは画面上には出てきません。

※そのため現在はワールドビューの右側にアバタービューを用意しています。

一人称視点は自分が世界を歩いているような臨場感もありますが、やはり何か物足りなさを感じる気はします。

あとはアバタービューを出すくらいなら、アバターをワールドビュー内に入れてその分ワールドビューを大きく見せたいというのもあります。

しかしここでも技術的な課題が・・・。

Cortona3Dではウォークモードにした場合、視点を自分として物体との衝突を勝手に検知してくれます。

もしアバターを背後から見る視点にした場合、視点と自分がいる位置とのズレが生じますので、衝突判定にも何らかの細工を加える必要が出てきます。
※壁があっても衝突は視点との判定なのでアバターは壁に埋まってしまう。

アバターを背後から見る視点の実装については、正弦関数を用いて視点の角度方向のいくらか前方にアバターを常に表示するような形をとればそこまで難しいことはないのかと思いますが、アバターと物体との衝突判定の実装イメージが湧きません。

視点とは別にオブジェクト同士の衝突判定を行う必要が出てきます。

VRMLにはCollisionという衝突判定用のノードがありますが、これはあくまで視点と物体の衝突を検知するものなのでどうも使えそうもない。

もうひとつは範囲侵入を検知するノード、ProximitySensorをすべての物体に設置して、

物体の占める半径:r

視点とアバターの一定距離:d

とした場合に、ProximitySensorで設定する範囲は、

r + d

として、視点がProximtySensorの範囲に侵入したときに視点の動きを制限するのもひとつの方法でしょうか。

しかしこの方法の場合、地形との衝突判定は困難そうです。

地形もひとつのオブジェクトとみなす場合、先ほどの計算方法だとアバターはそもそも地形表面に入れなくなってしまうでしょう。

カメラワークにしても、もし3Dゲームのような「ゴム紐視点」を取り入れようとするならばよく実装方法を勉強しないといけません。

アバターを画面内に表示しようとするだけでこれだけ多くの課題が発生するんですね。

この辺はまたサイトを使ってくれるユーザーが増えてきたときに考えたいと思います。

3Dアバター用意するのは相当大変そう

もし要望が多い場合、今後カスタマイズできるアバターの導入もやはり検討してゆく必要が出てくると思いますが、少し考えただけでも難題が多いですね・・・。

現状のアバターはH-animの仕様に則り体の各パーツに単純な面のポリゴンを割り当てて歩行のアニメーションを入れています。

素体を男女それぞれでひとつずつ作成するくらいはなんとかなると思います。

しかしこれが身長や体型をカスタマイズできたりするとパターン数が膨大になってしまう・・・。

さらに服などを作れるようにすると、同じ服でも体型を考慮して表示しないといけない。

これを実装するのはかなりきつい作業になりそう。

体型についてはユーザーが人体モデルの点座標を変更できる仕様にして、その編集後の点座標をデータベースにストック、表示する際にその点座標を動的に反映するという実装もあるかと思いますが、これはこれでアバター表示時のサーバー負荷が大きくなりそう。

できるだけシンプルに個性を表現できるアバターが理想的ですね。

もしくはクリエイターが好きなアバターオブジェクトを登録できる方法を取るのも面白いかもしれませんが、そうなると今度はクリエイター側での歩行アニメーションの実装難易度が高すぎるのと、アバター側のエラーが同空間のすべてのユーザーに影響してしまうリスクも懸念される。

このリスクを考えるとやはりアバターはシステム側でコントロールする仕様がベターに思えます。

現状で考えられる仕様としては、

————————————————————————-

■素体の人体モデルは男女の2セットのみ

■素体の肌色はいくつか選択できる

■顔や服は人体モデルにテクスチャで貼り付ける

————————————————————————-

かなり妥協した仕様ですがこれが現実的でしょうか。

本当はシステム側で用意したものを選択して組み合わせながら自分の好きなキャラクターを作れるのが理想なのですが・・・。

個人的にはアバターにそこまでこだわりはないですが、やっぱりユーザーはアバターを介して世界に感情移入する部分が大きいと思うのでこの辺は今後課題となってきそうですね。

テーマを感じる世界…

aa

作品からテーマを感じる・・・というところでこの作品を紹介します。

高原にある家

この空間は海外のクリエイターが制作された空間にリンクをさせてもらっているものですが、この風景は何かテーマを感じさせてくれます。

高大な高原にポツンと建つ家。

こんなところに誰が住んでいるのだろう?

この情景から何やら非日常的な感情が刺激されます。

これが現実の街の一角にある家であればさして何も深い印象はもたないかもしれませんが、この風景の中にある家が何か私の中にある感情を呼び覚ますのです。

この情景が既にストーリーを内包しています。

現実にないウェブ空間の片隅にあるこの家に誰が住み、その住人は私に何を伝えようとしているのか・・・。

私はこの空間から何か物悲しい感情を感じました。

もしかしたらあの家には永遠に誰かを待ち続けている老女が住んでいるのかもしれません。

だとしたらその老女は一体誰を、何故待っているのでしょうか・・・。

その物語は我々が日常忘れている人生の中の大切な何かを思い出させてくれるかもしれません。

この情景は絵画と同様の芸術性を備えているように私には思えます。

いろいろな空間を見てきましたが、海外の仮想空間作品というのはこういった情感があるものがとても多いように思います。

これはデジタルコンテンツというよりはひとつの芸術作品のように私には思えます。

もしこの空間にイベントを取り入れて、ストーリーを付加すればこの空間が持っている物悲しい相貌が一体何なのかわかるのかもしれませんね。

ポリゴンウォークでRPGライクな空間を作る

「ポリゴンウォーク」の開発過程で常にイメージしているのは、RPGライクな空間です。

RPGではなく、RPGライクとしているのは、「ポリゴンウォーク」ではモンスターとの戦闘などゲーム性に関わる部分が省かれているからです。

「ポリゴンウォーク」はこういったゲーム性よりも世界観の表現を最も重視し、「イベント」という概念を取り入れました。

単なる仮想空間というのは、せっかくの3D作品がただの背景となりがちです。

結局はアバターの装飾やフレンドとのコミュニケーションが主となってしまう。

しかし、そうではなく、世界そのものに焦点を当てた仮想空間サイトが作りたいと思いました。

世界から何か情感やメッセージを受け取れる場にしたいと考えたのです。

今でも悩んでいるのがアバターをもっと匿名性の高いものとするか・・・です。

現状では顔部分に好きな画像をはめこむことができますが、世界に焦点をあてるというところで言えば、アバターは真っ黒な人型だけでもよいのではないかとも思っています。

現実とは別の世界に訪れた異邦人たち。

そこでは現実に存在する具体的な誰かを想像させないように、アバターはできるだけ抽象的な表現にとどめる。

個人的にはその方がわくわくする気もします。

ちょっと話がそれましたが、世界の方に話を戻しますと、世界観を演出する上ではただ空間だけではなく、ストーリーも必要であると感じました。

ストーリーは空間に意味や奥行きを与えてくれます。

イベントシステムはそのために取り入れた仕組みとなります。

この辺で具体的な制作についての話に入りますが、例えば、「ポリゴンウォーク」でRPGライクな空間を制作しようとするならば、

———————————————————————————–

1)フィールドマップを作る

2)町や洞窟、塔のマップを作る

3)フィールドマップと町や洞窟、塔のマップをイベントオブジェクト(移動イベント)で接続する

4)マップにキャラクター(トークイベント)やアイテム(アイテム取得イベント)を設置する

※イベント同士は条件指定で複雑なパターンを形成できます。

———————————————————————————–

大まかに言えば上記のような流れで制作ができます。

例えば、はじまりの町で会った人に、「塔の鍵が欲しかったら洞窟の奥にある石をとってこい」と言われる。

洞窟の石を渡すと塔の鍵をもらえるといった流れを制作することができるのです。

これによって、空間内で簡単なストーリーを構築できます。

サウンドノベルのようなものも制作は可能かと思います。

オープニングやエンディングについては、視点前に画像や動画のオブジェクトを置いたマップを用意して、移動イベントでマップを移動させれば実現が可能です。

是非「ポリゴンウォーク」を使ってクリエイターの皆様の世界観を表現して頂けたらと思います。

VRMLと3Dプリンター

DMMの3Dプリントサービスの入稿ファイル形式にはVRMLが含まれているようですね。

とすると「ポリゴンウォーク」のオリジナルツールで制作して空間もそのまま3Dプリントできるのだろうか…。

ちょっと試してみたい気がします。

indexFaceSetノードしか対応してないと厳しいですが。

3Dプリンターの普及で世の中に3Dモデルが増えてきたら、たくさんのVRMLデータが出てくると思うのでそういったモデルをポリゴンウォークに提供してくれたら、それを組み合わせて誰でも簡単に仮想空間を制作できる環境になるかもしれませんね。