糖分が足りない

HTC Vive、UE4、blenderあたりのネタを書いていきます?

第8回ぷちコン作品配布しました

60秒バスター.zip - Google ドライブ

 

今回も一発クリアは難しい程度に難易度調整しました!

あと細かい調整、バグ修正など…

 

○動作環境
OS:Microsoft Windows 10 (64bit)
GPU : GeForce GTX 980以上
HTC Vive

第8回ぷちコン参加の備忘録

ぷちコン2回目参加です!

 

こちらが今回制作したゲームです!

youtu.be
VR作品です!

ルール説明

2ステージ構成、それぞれ60秒の持ち時間となっています。

基本操作は、何も持っていない手でトリガーを引くと敵を引き寄せ、トリガーを離すと攻撃の弾となり飛んでいきます。

 

1ステージ目は60秒以内にたくさんの敵を倒し、シンクロ率(スコア)を稼ぎます。

敵は時間を吸収する技を使い、時間の進行速度を上昇させます。

 

2ステージ目は60秒以内にボスを倒すことが目的です。

シンクロ率が高ければ高いほど、時間の進行速度が遅くなります。(50%で2倍速、100%で等速、200%で0.5倍速)

ボスの攻撃を受けるとシンクロ率が下がります。

ボスの攻撃を奪い取って、攻撃を防ぎつつ、隙を見てダメージを与えていきます。

 

敵の行動は、音とエフェクトから分かる様になっています。

60秒をなるべく長く維持していきましょう!

(時間は手元、周りの時計、背景の演出、あと1秒毎に鳴るカウントでわかります)

(ボスは残りHPで発言と行動パターンが変わります)

まとめると、引き寄せて撃ち放つゲームです!

 

撮影用に難易度をだいぶ落としていますが、本気を出すとなかなか凄いです!

 

前回は背景の配置がけっこう大変だったので、今回はブロックでも置いておこうと思ったのですが、これはこれで大変でした…

背景はこのように変化しています。

youtu.be

こっちの動画のほうが画質良くなってて辛い

次回はもっと動画のエンコード時間が取れるよう、余裕を持たせたいです・・・。

 

ここから今回の備忘録です

 ブロック(床、壁)周り

InstancedStaticMeshで作成しています。

MaterialでObjectPositionから色々と動きを付けています。

f:id:bitrate1280:20170918162515p:plain

それぞれのパラメーターをでっかいタイムラインから値を渡しています。

Timeノードの代わりにゲームの進行時間を常に渡しています。

 

実際のオブジェクトは床に配置しているので、何も設定していないと上を見た時などに表示されなくなってしまうので、大きなコリジョンを親に置いて「Use Attach Parent Bound」をチェックしています。

 

パーティクル周り

今まで0からのパーティクル作成をあまり行った事無かったですが、今回は色々と作ってみました(なんと18個!似たの多いけど…)。

全く使ったことなかったRibbonやOrbitの使い方がわかったので、これからはもっとかっこいいエフェクトが作れるようになるような気がしなくもないです!

f:id:bitrate1280:20170918163939p:plain

 

操作周り

一度ターゲットのマーカーを出すと、ポインターが敵から外れても少しの間は狙ったままになります。

また、その状態で撃つとホーミングするようにしてあるので、細かく狙う必要がないです。(これでゲームをどんどん忙しくしても安心だッッ)

手が表示される位置はコントローラーを持つ位置まんまです、拳を敵に突きつけながらプレーします。

 

負荷軽減周り

VRテンプレートからプロジェクトを立上げ、そこから更にVR向けの設定を行いました。

半透明は基本DitherTemporalAAを使っていますが、ここぞというところはTranslucentを使用しています(出現演出、シールド)。

CPU側が結構スカスカだったので、描画負荷軽減の対応をそちらで色々行っていました。

敵の動きを止める位置は被らないようにしています、又、並走をあまりしないようにしています。

半透明を使用する敵出現演出は、なるべく演出中に敵の通りが一番少ない場所にしています。

 

背景マテリアルにパラメーターを渡す時などに、無駄な値渡しが発生しないよう下記のマクロを使っています。

 

f:id:bitrate1280:20170918163019p:plain

 

ScreenPercentageは120です!!!!!!

 

まとめ

前回ステージが広くて、配置からデバッグまで色々と大変だったので、今回はステージを小さくまとめたのですが、なかなかうまく行った気がします!

 

難易度上げて、細かいとこ調整した後に配布します!

ぷちコン作品配布しました

サプライズバスター.zip - Google ドライブ

 

・プレイヤーに体力追加

・ゲームオーバーの追加

・一発じゃクリア出来ない程度にバランス調整

しました!

第7回ぷちコン参加の備忘録

ぷちコン初参加です!

 

こちらが今回制作したゲームです!


ガチなホラー方向にするか、ギャクっぽいゲームにするか悩んだ結果、ホラーっぽい世界観でギャグっぽい事をするゲームになりました。


以下、今回起こったなんやかんやです。

 

 キャラクターのマテリアル周り

MaterialAttributesを受け取るMaterialFunctionを使用して、適用するときの作業の単純化+後から急に足したくなっても大丈夫!という風にしました。(はじめてのMaterialAttributes!)

やりすぎると何処で何が起こってるかわからなくなりそうですけどね。

ちなみに今回のキャラクター用MaterialFunctionはこんな感じになりました。

f:id:bitrate1280:20170329020952p:plain

シーケンサーを使ってアニメーションしたいけど、Meshを変えなければいけない

アニメーションブループリントで制御しました。

タイトルから走っているときの動作は、TickでLocationから仮のVelocityを生成して適用しています。

もっといい方法があったのかなぁ。

振り向きモーション(ルートモーション)の罠

唯一の自作モーション、サプライズモード中の振り向きと、それから元に戻るときです。

ルートモーションで回転しています。(最終フレームでクイッと座標動かしてるだけですが…)

最終フレームで動かしてしまっているので、ブレンド無し+「Automatic Rule Based on Sequence Player in State」をONにして、一度ターン終了時のポーズを挟んだ後に、Idleモーションへと戻しています。

f:id:bitrate1280:20170329022357p:plain

そして罠というのは……使用する予定だったアセットにRootが無かったことです!

悲しい!

ボスAI

f:id:bitrate1280:20170329022709p:plain

HPによって動作が変わるという分岐をいたるところに入れたため、横に長くなりました。

各箇所でHPの分岐を入れているので、迷いはなかったです。

復活(立ち上がり)モーション

などは作れるわけもなく、マテリアルでごまかしました

f:id:bitrate1280:20170329023614p:plain

コピーしたActorをSpawnして、WorldPositionを見ての移動と、OpacityMaskで徐々に出しているだけですが、個人的にお気に入りデス。

シームレスな読み込み

「タイトルから最終リザルトまでシームレスに流したい」というのが、今回やりたいことの一つでした。

ただ、このゲームは開けたマップではないので簡単に実装できてしまいました。

落下する通路でマップの読み込み、破棄を行っています。

この通路に入って暫く進むと鍵が掛かって読み込みと破棄が始まり、扉の直前あたりに到着した事がある+読み込み終了で落下するようにしました。

反省点

・(モーション作成なども含め)作業的に一番時間を掛けていたサプライズモードが動画中に全然行えなかった。

・サプライズ時のギャグっぽさがもっと欲しかった。

まとめ

ぷちコン初参加ですが、かなり多くのことが学べて良かったです!

また制作が間に合えば参加します!(5回目に参加しようとして間に合わず)

 

今回の作成したゲームは需要があれば配布します。

もうちょっと作り込むかもです。

HTC Viveのセットアップ

HTC Viveが届いてセットアップも何やかんやで2回くらい行ったので、そのあたりの情報を書いていきます。 

続きを読む