PanzerStrikeがインプレス「窓の杜」で紹介されました

PanzerStrikeがインプレス「窓の杜」で紹介されました。

【週末ゲーム】第648回:物理演算による真面目な3D戦車シューティング「PanzerStrike」
http://forest.watch.impress.co.jp/docs/serial/shumatsu/1019182.html

PanzerStrikeの一番最初の体験版を出したのが2013年8月(c84)なので、もう3年以上経っているんですね。そこから完全版を出すまでさらに時間かかってますが…

最初の体験版はスウィンぐるんと同じ3週間で作ったり、リアルタイムシャドウ欲しさにコミケ前ギリギリで Unity 4.2に変更したり、今思えばかなり無茶をしていたかもw
(当時使っていたIntel HD5000だとUnity EditorがDX11モードでないと動かないけど、DX11だとUnity Editor上でリアルタイムシャドウの確認ができないとかかったりとかトラブルも色々あったなぁ…)

ちなみに今なら紹介記事で指摘されている問題のほとんどを解決できると思うので、いずれ新しい戦車ゲーを作ってみたいとは思っています。…PanzerStrike bis.?

PanzerStrikeの照準について(2)

引き続き照準についてです。

戦車の砲身の延長上に敵(もしくは破壊可能なモノ)があると、緑色の円が消えて赤い円に変わり、横に目標までの距離が表示されます。
やっていることはシンプルにPhysics.Raycastです。160521_測距の仕組み

「赤い円の状態=砲身の延長上に敵がいる」となるので、この状態の時に射撃を行えば命中します。ただし砲弾は重力の影響を受けるので、目標までの距離次第では砲弾が目標に到達する前に地面に接触する可能性があります。

例えば400m先の敵を狙った場合の着弾位置はこんな感じです。160521_400mまでなら水平射撃でOK

かなり下側に着弾してますが、400mぐらいなら水平射撃で命中します。
(スピーカーアイコンの位置が着弾位置です)

では400mより先の目標に当てるにはどうすればいいかと言うと、砲身を上に向けて弾道射撃を行うことになります。
試したところ、2000m先の目標に当てるには発射角0.82度、8000m先の目標に当てるには発射角3.32度で弾道射撃を行う必要があります。ただ8000m先となると爆発の煙さえ見えませんが…160521_2000m着弾160521_8000m着弾

せっかくなので、砲弾にカメラを付けて8000m先の目標に着弾する動画を録ってみました。
8000m先はさすがにマップ外なので途中から地面や海面もなくなりSkyboxのみになります。
発射から約10秒後の着弾直前に一瞬だけ白い立方体が見えると思います。

照準についての説明は以上です。

実際のゲームでは地形の傾きや揺れが発生してなかなか照準が定まらないことがあったり、敵が移動している場合は予測射撃も必要になります。

 

PanzerStrikeの照準について(1)

ちょっとわかりにくいと思われる戦車の照準についての補足になります。

ヘルプ等には以下のように書いてますが、これだけだと「?」って方もいると思います。

help_shoot

今回はこの緑色の円についての説明になります。
(目標の測距については次に書きます)

この緑色の円は戦車の砲身から100mと400m先の場所にあります。
着弾予測位置のような便利なものではなく、あくまで砲身の延長上になります。

上の図を実際のゲーム画面で見るとこんな風です。160520_照準

この時100mと400mの円がズレて表示されますが、これはカメラ位置によるものです。

カメラは常に戦車後方ちょっと上の位置を維持しています。
Unity EditorのSceneで確認するとこのあたりを維持します。160520_カメラ位置(通常)

上から見下ろした結果、手前の100mの円より奥の400mの円の方が上にズレて見えることになります。

参考までにカメラを砲身と同じ位置まで下げてみます。160520_カメラ位置(後方)

すると当然2つの円はズレることなく表示されます。160520_照準(後方)

でも、この視点で遊ぶのはちょっと難しいですね…

まとめると

  • 緑色の円はあくまで砲身から100m・400m先の場所でしかありません
  • 円がズレて見えるのはカメラが戦車の上にあるためです

ということになります。

PanzerStrikeで使っているアセット(4)

作業に使っているノートPCのSSDが突然死…orz
とりあえず予備機で作業する日々…

主に省力化に貢献してくれたアセットになります。

Easy Saveは簡単にゲームデータの保存が出来ます。
セーブ自体は .NET のクラスを使えばなんとでもなるんですが(特にPCプラットフォームなら制限緩いですし)、せっかく買ったアセットなので使った感じです。
とはいえ暗号化やDictionary<>の保存にも対応しているので、平文で保存したくない場合やサクッと保存部分を作るなら便利に使えます。

iTweenやNGUIは今更説明の必要はありませんね。
もっとも今はTween系はDOTWeenやGoTween、UIはuGUIを使ってます。

GUI Generatorはメニューの背景などを簡単に作れるアセットです。
わざわざグラフィックソフトで作るほどでもなく、かといって背景なしとか単色はちょっとなーという時にサクッと作れて便利です。

SpriteStudio 5 Player for UnityはGitHubのではなくAsset Storeの方にあるものです。
初期のモノなのでインポートは煩雑で性能もあまり…
それでも自分でssaxパースして読み込み&表示部分を作る作業は省略できるのでありがたいです。
今ならGitHubのSS5PlayerForUnityを使うかなー、きっと。

これで PanzerStrikeで使っているアセットの紹介は最後になります。

PanzerStrikeで使っているアセット(3)

演出をより良くするために使ったアセットです。

ArcReactorはある敵の攻撃エフェクトで使ってます。
モデルやパーティクル、ポイントライト使いまくりで派手な見た目になります。

LightShaftsは光の筋みたいなアレを再現してくれます。
描画負荷は上がりますが、かなりいい感じになります。
ゲームで使っている箇所はガレージです。

160501_PS_LightShafts

ちなみにLightShaftsはAsset Storeのアセットではありません(すっかり忘れていた…)が、Asset Storeにも同じ機能をもったアセットはあります。

アセットの紹介は次で最後になります~

PanzerStrikeで使っているアセット(2)

引き続きPanzerStrikeで使ったアセットについてです。

PanzerStrikeの地面は全てTerrainで作ってます。
ただ、なかなか思い通りの地形になってくれませんでした…
そこで利用したのが以下のアセットです。

「Landscape part1」は5面、「Low Poly Military Base」は4面、「Modern Ruins」は8面、「Winter Pack」は7面で使っています(もちろんこれ以外の面でも使っていたと思います)。

なお、背景モデルのアセットは積極的にImage Effectを使っているものが多く、ただTerrainや背景モデルを入れただけではAsset Storeの紹介動画・画像通りの見た目にはなりません。ほとんどの場合、付属のサンプルシーンを見れば使っているImage Effectとパラメータを確認することはできるので、どのように絵作りしているか参考にもなります。

例えばImage Effectのあり・なしだとこれだけ違います。
(Landscape part1 のhigh_1 シーンより)

160426_PS_ImageEffectONImage Effectあり

160426_PS_ImageEffectOFFImage Effectなし

ただImage Effectはプラットフォームによっては描画が高負荷になるので要注意です。

PanzerStrikeで使っているアセット(1)

PanzerStrikeで使っているアセット一覧になります。
(同じ内容をエンディングに表示していますが、見ている人は少ないかも…)

  • ArcReactor
  • Easy Save 2
  • GUI Generator
  • iTween
  • Landscapes part1
  • LightShafts
  • Low Poly Military Base
  • Modern Ruins 1.0
  • NGUI
  • SpriteStudioPlayer
  • Winter Pack

個々のアセットについてはまた改めて紹介したいと思います。

ちなみに無償有償に限らず有用と思ったアセットはとりあえず使ってみる派です。
ざっと確認したところ、購入済みの有償アセットが191個ありました。
ついついセールの時に買っちゃうんです…