ニートが頑張るブログ

ニートが現実逃避するために創作活動など色々とカオスに頑張ってみる
ニートが頑張るブログ TOP  >  ゲーアイディアor理想のゲーム >  地形インタラクション

地形インタラクション

さて、アニマルメーカーが一段落したので
自分のゲーム作りもようやく次の段階に進めるようになったワケです。


前々から作っていた
配列から地形を生成する奴と組み合わせて、
アニマルメーカーの動物をその地形上で走らせることができるようになりました。


swf直接・全画面表示

◆基本操作
方向キー: 歩く 
スペースキー: ダッシュ 
シフトキー: 並行移動
Zキー: 注視移動
Nキー: 時間停止
Mキー: コマ送り



今回はまずはここまでです。
現段階ではアニマルメーカーの魔改造に過ぎませんが、これから差別化していきます。

まだまだショボイし、変な挙動をすることも多いけど、
それでも通常のゲームとは「なにか触感が違う」のを感じてもらえるのでは無いでしょうか。
(いい意味でも悪い意味でも)


◆今回やったこと

とにもかくにも地形との衝突判定です。

すべての足が、
リアルタイムに足を振って、
リアルタイムにIKで曲がって、
リアルタイムに地面を蹴って加速するシステムがアニマルメーカーだったワケですが、

それで動いている動物を、実際に凸凹の地形の上で歩かせるとどんな反応になるか、自分でも楽しみだったわけです。

ラプトル対峙

高いところから落下したときのクッション、
段差に乗り上げる感じ
坂の上で体が傾いている感じとかは出ていると思います。

生き物を2体ほど召喚して走りモードで眺めてるだけで自分は満足したりします。

カマキリが求める足元の地形の法線
あとカマキリのよじよじが相変わらず死ぬほど可愛いのでそれだけでも見てってください。


以前の奴では単に直立で落下しているだけだったので
それだけでも進歩です。


以下、法線の話、地形の話、敵の話、などなどを語っています。



 

◆地形衝突 具体的にどんなことをしたか

ホネ衝突判定

アニマルメーカーをそのまま使うだけで
各足が「自分が今踏んでいる地形の高さ」を簡単に求めることができ、
その足がそのまま地面を蹴ることができるようになってるのは良いとして、
「全ての足がもがれた胴体」にだって衝突判定は必要なワケです。
(今までは平面に落下するだけだったので重力加速度だけで管理できた)

まずそれをどうするか。

その判定自体は、以前の3Dゲーと同じく、矩形判定になってしまっています。
とりあえず前後左右の高さを求めて、めり込んでたら規定の位置にずらす、
乗り上げるべきめり込み方だったら乗り上げさせる。
そういう風にしています。

それプラス、足それぞれが地面を踏んで胴体を持ち上げ動かしているワケですが
それだけでは当然足りません。


あらゆる地形の上を歩かせることを考えるときに必要になってくるのが、
今いる足元の地形の形状に応じて、体を回転させることです。

つまり体の軸を、「地面の法線方向」に合わせて曲げる必要があるのです。
その角度を求める方法について、色々考えていました。
(こんな根本的なところからでも、一々自力で考えないと気がすまないのです)


◆足元の地形の法線をゲットする まず考えた方法

↑で衝突判定で取得してきた前後左右の高さと、足元の高さとの差をとります。
それでX方向の高さの差(水色の線)Z方向の高さの差(ピンクの線)が求まるので、
あとはatan2で曲げるべき法線の方向(オレンジ色の矢印)が出るのです。

ホネが求める足元の地形の法線

最初はこの方法で、地面に応じて体が傾くのを実現していました。

(ちなみに足元の坂のポリゴンの形に応じて角度を決め打ちするようなやり方はダメです)
(それでは、段差とか坂に乗り上がった時とかの、微妙な角度の変化を表現できません)
(階段の一枚一枚の床の法線自体は、鉛直↑向きを向いているだけなので)
(ずーっと地面がなだらかな坂だけで出来てるゲームならいいだろうけど)


で、このやり方でも、まだまだ結構不自然でした。

まず衝突用に使っている高さなので、高さに大きな差があるときは既に位置が戻されています。
これでは、「カマキリが段差際でのけぞる」ということが発生しません。

でも、それを解決するために
「取得する前後左右の高さの範囲」を広げようとすると、
今度は人間がおかしくなります。
壁に手を触れただけで「そこに高さの差がある」と判定されてしまい、大きく体制を崩してしまうのです。


◆足元の地形の法線をゲットする 次に考えた方法

そもそも、どんな大きさや形状の動物でも
とりあえず前後左右の一定距離の地形の高さで傾かせるというやり方が乱暴だったのです。
(その代わり処理は軽いのですが)


そこで次に考えたのが、
もう、全ての足が今踏んでいる高さとその足の位置を持ってきて、
それで全身の傾きを計算してしまう
、というやり方でした。

(というか動物がリアルに行っていることを考えると、これが一番正確ですよね)
(このやり方から考えると、足元のポリゴンの法線を求める方法なんて、全くもって間違っています)

カマキリが求める足元の地形の法線
(黄色からオレンジを得るのです)

で、自分の脳みそではかなり難しかったけどコレを実現し、今に至るワケです。

これで、カマキリは壁際でよじよじするし、
人間は壁際でもそんなに傾かない、
アマ公は段差をストンと降りる
、という大宇宙の法則を統一的に表すことが出来るようになったのです。

これもまた、色即是空であり、空即是色ですね。
現象から「見えざる法則」を見出し、
見出した法則で、また現象を再現するのです。 (電波)



ここからしばらく自分の「ゲーム地形観」の話。

実際に売られているゲームの地形判定というのは、
どこまで行っても「擬似的なもの」だと思うのですよ。

あれはポリゴンとポリゴンがリアルタイムに衝突しているのではありません。
(それは、キャラの手足とかが壁のポリゴンにめり込むのを見るだけで分かりますね)

キャラクターと地形側に、それぞれ「簡易的な当たり判定」が用意されていて、
それらが衝突して、それなりの動きに見せているのが分かります。

それはまぁ、仕方がないでしょう。
リアルタイムにポリゴン同士の衝突を計算するには
最近のゲームのポリゴンは精緻すぎるからです。


でもそのことが
「なんとなくの当たり判定で遊ばされている感」につながっていると思うのです。




どうせここはこうは歩けない・・・
どうせここからここに無理やり乗り上げることはできない・・・
どうせここには見えない壁がある・・・
どうせここの段差をまたいだりすることはできない・・・
この足場は細いし足が地面についてないけどどうせ落下しない・・・
どうせこのハシゴは吸い付いてからモーションを再生しているだけ・・・
どうせ足は壁にめり込むし、見えないところで体は壁と一定の距離を保っている・・・
どうせこの階段は実質滑っているだけ・・・足はIKで段差を踏んでるようには見えるけど・・・
どうせこの挙動はHAVOK神・・・


どんなに最新のゲームをプレイしていても、
どんなにリアルなモーションで多彩なアクションが用意されているゲームをプレイしていても、
結局心のどこかで、このような「地形に対する諦め」を抱きながらゲームをプレイしている人は、
結構多いのではないでしょうか?

地面が平らな狩りゲーなんて、尚の事バカバカしくて遊ぶことなんて出来ませんね)


ちなみに、ダークソウルは最近のゲームの中では「接地感」は良く出来てる方だと思うのですよ。
甲冑を着込んでガチャガチャ歩いてる感じが無茶苦茶出てると思います。
(よく「デモンズのほうが操作性良かった」とかいう人いますが、デモンズは足が地面を滑ってるタイプのゲームです)
(これに関しては、自分はダクソに軍配を上げたい)
そしてダクソは、「見えているところは全て実際に歩くことが出来ます」みたいなことを宣っていたゲームでもあります。
それでも結局はあんな感じなのです。



ではどうすればいいか?
どうすれば、マジにキャラが地面を蹴って、歩いているかのような
リアルな触感を感じられるゲームが作れるのか?

どうすれば画面の向こうのキャラが
今、自分の操作によって足を振って地面を駆けていると思い込めるような、
モーションのリアルさとは別の「生々しさ」「実感」を感じられるようになるか?


・・・
そういうことを考えた結果、
自分はこういうのを作っているのです。

つまり、どうせなら開き直ってアホみたいにカクカクなブロックで背景を表現してしまう。
(それは技術的に仕方ないのもあるけど)
そうすれば、実際の地形の当たり判定と見た目のポリゴンに差を完全になくすにはぴったりである。
その上で、キャラの歩きの根本の部分では
マジの接地、マジのリアルタイム駆動、マジのリアルタイムIKを実現する。

そういうのを目指しているワケです。


実際、こんなカマキリのよじよじ感を味わえるゲームなんてこの世に他に無いだろう。
カニの足を一本一本もいでいったら逃げ方が実際に変化するゲームなんて他に無いだろう。


そういうことに価値を見出しながらやっているワケです、一応。


◆処理の軽減話

ところで今回は
処理の軽減も結構やりました。

アニマルメーカーでは
キャラを2体も召喚すれば重すぎてとてもfpsを維持できなくて、
こんなんでゲームに使えるのか!?と危ぶまれました。


でも今回は、
例えば旅人さんを4体ほど召喚しても、
自分の環境では30fpsを維持することが出来ました。
これは、そこそこ行けるような手応えを感じまする。

旅人さん4人青ファントム
(大勢の旅人さんが地形の上を駆けずりまわっている姿はなんかいい・・・)


最終的に自分は、PS1時代くらいのゲームが作れれば、御の字だと思っています。

そういうことを考えると、キャラが4体でも問題なく動きまわってりゃいいかな、という感じがあるのです。

ベイグラ、
天誅、
メタルギア、
ディノクライシス・・・


思えばどのPS1のゲームも
「同時に表示される敵の最大の数」というのは大体決まっていたような気がします。
(ちなみに↑これらのラインナップは「PS1時代で敵の挙動について参考にしたいと思っているゲーム」です)

それでも当時プレイしていた時に
「敵の数が少ないなー」なんてことは微塵も感じさせなかったし、
処理的に同時に出せる敵の数が決まってるなんてことも、想像すらしませんでした。

つまりそのへんは「見せ方」でなんとでもなると思うのです。
一体一体のキャラの挙動がしっかりしていれば、人数はなくても「集団戦」を感じられる筈だと信じています。


で、なんでアニマルメーカーと同じ挙動なのにこんなに処理が軽くなったのかというと、
まぁ色々やりました。

まず、体全体を回転させる関数に無駄があったのを直しました。
(例えば、今回「kaiten」って名前で表示させている数値、)
(あれが0の時は、ある追加の回転処理をカットするようにしたり)


あと、足のIKの求め方。
ヒザの伸びる方向、これは足のベクトルとヒザの「Y軸値」から求めているのですが、
毎フレーム計算していたこの方向を、「数フレームに一回だけ」やるようにしました。

これは殆どズルですね。
自分が考えたリアルタイムIKの実現法なので、この計算のクソ重さが大問題だったのです。
このおかげで軽くはなったのですがキャラによっては歩き方が変に見えますね。


で、今回はこんな感じです。

とりあえずアニマルメーカーで作った動物たちが
一応は地形の上を駆けまわることができることが確認できました。
まずは第一段階。


でもこれは
「地形をリアルタイムに編集できるエディター」を作るのが本当の目的なのです。

つまりこの四角いマップを削ったり、凸らせたり、テクスチャを回転させたり、
水を貼ったり、穴をほったり、壁を作ったり~を動的に行えるようにして、
地形を自分で作れるようなプログラムを完成させたいのです。


今、そういうのを作ってると「マイクラのパクリか?」などと思われそうですが、
断じて違います。

自分が目指しているのはそんなのではありません。

MGS1のVRミッションを自作できるような感じです。 (結局1のVRミッションが一番面白かった)
ベイグラのパズルモードを自作出来るような感じです。
そして何よりも、「天誅忍凱旋」の虎の巻みたいなのを目指しているのです。


自分はサンドボックス的なゲームが作りたいのではありません。
あくまで、自分で作ったマップや謎解きで魅せたいのです。


まぁ、リアルタイムに3Dのマップを編集できるようになったなら、
それは即ち「地形破壊表現が出来るゲームが作れるようになる」ということでもあるので
そういうのもやりたいなぁとは思いますが。


アマ公ランニング


まぁ今は、元気に走り回るアマ公の姿が確認できればそれだけで満足だったりします。

関連記事
いつもながらすごいなー!
D連打しちゃってすっごい増殖してくっそ重くなったけどw
Xが無重力で、Cがしゃがむでしょうか?
ほかにもいろいろありそう!
[ 2014/02/07 22:00 ] [ 編集 ]
コメント返信
> ニート さん


> Xが無重力で、Cがしゃがむでしょうか?
> ほかにもいろいろありそう!


その辺はアニマルメーカーのテキトー機能そのままですね。
一応Mの横でスローとかありますが。

ところで他の方にも言ったのですが
ここのコメ欄で名前をニートにされると、自分の名前欄もニートなので
コメントがニートだらけで区別がつきにくいことになってしまうのですが
なにかハンドルはないでしょうか。


まぁ自分もここではちゃんと名前を決めてないからこそこんなことになるわけですが。


ちなみに自分がやっている「〇〇ニート」という風に名前が毎回変わる感じは、
唐沢なをきの「電脳なをさん」というマンガで
タイトルの「〇〇☓☓漫画」が毎回変わる感じをイメージしているのです。
(・・・どうせなら四文字熟語にこだわるべきでしたね)

[ 2014/02/10 09:30 ] [ 編集 ]
2チャンの名無しのイメージだったw
名前漢字にしてみたよw

元がアニマルメーカーなんだから操作系は同じか
よく考えたら当たり前だったw
名前に関してはもうちょっと考えます!
[ 2014/02/12 00:00 ] [ 編集 ]
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
[ 2014/04/14 11:15 ] [ 編集 ]
コメント返信
> 名無し さん


やっぱゲームやってるとその辺見るようになりますよね。


>そのへんのことに関してもMGSGZの感想?楽しみにしてます


さてGZの感想ですが、どうなんですかね。
今のところ、展開的に想定内といえば想定内ですし。

システムとグラフィクの進化がすごすぎて、TPPが超楽しみになったという感じなので
感想はTPPまで特に書かないかもしれません。スイマセン。

結局今はダクソ2ばっかやってしまっていてGZのトロフィーも全然集められてないですしね。
[ 2014/04/18 23:11 ] [ 編集 ]
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

月別カレンダー
05 ≪│2017/06│≫ 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -