OverwatchというかFPS初心者の夏休みの研究
最近のゲーム FPSなどが極端に下手なので練習開始してます
Overwatch
1年ほど前に発売されたFPSで今もそこそこ人数がいる 出来は素晴らしいらしい FPSというよりMOBAであるため、単純なプレイヤースキルではなく頭を使った戦術でも戦える ため、FPS初心者でも考えれば勝てるはず また、ヒーローごとのアンチがある
Splatoon
これも日本では人気だし練習に買ってもよかったと思うけどまだ手を出してない
実力
超下手なので練習
練習方針として、FPSの標準操作キャラのソルジャーをしばらく使ったが いまいちなので方針変更してみる
方針
苦手意識を持ったキャラを使ってみる 苦手キャラのアンチも使ってみる そういえば苦手キャラ=使い方のわからないキャラ である 今のとこ
以下苦手キャラ
ゲンジ
木の葉返しがうざい エイムできない ULT怖い
アンチ シンメトラ、ゴリラ、ザリア、トールビョン、メイ、ロードホッグ
ジャンクラット
跳弾する弾にあたってしまう つい近距離で殺して爆風に巻き込まれる 威力でかい ULT怖い
アンチ ファラ、ザリア
ハンゾー
スナイプ怖い ULT怖い
アンチ ゴリラ D.va
ウィドーメイカー
スナイプ怖い
アンチ ゴリラ
積みゲーム
社会人といえば積みゲーム!!
昔から積みゲーム多いよほんと! とりあえず Steamのサマーセールで3本買った。どうせ全部積みゲーになるんだろうね・・
ゲーム実況で食えるまでは 仕事がメインで積みゲー消化できないよ・・
私は あまり積みゲー作らないようにしてる。あまりプレイする時間ないのわかってるし 仕事として必要な有名ゲームや、変わったものをプレイしてる
今積んでるゲームで有名なのだけ紹介
Age of Empires Collection
AoE 1,2,3,RoN,AoM と色々なものが入ってる。昔AoEにはお世話になったので 感謝の意味もこめて 買った RoNとか さすがCivチームが作っただけあって 酷いしおもろい AoMとかもいいね メインのAoCは文明も増えてるし あと何年遊べるんだ?このゲーム
Skyrim
昔はお前のようなゲーマーだったんだが、膝に矢をうけてしまってな・・・ これはマジでやると半永久的に遊べるから危険だ!!
AlanWake
あれ?ミスクリで買っちゃった
Assasin’s Creed
これ すっごくやりたかったんだ!
CS-GO
FPS練習に買ったけど難しいよ!!
DarkSouls III
早くプレイしたい
Dota2
この手のゲーム好きなんだけど、どっぷり時間かけて集中して勉強する必要あって 全然できない
Dungeons&Dragons
昔好きだったので 感謝の気持ち込めて
MetalGearSolid
はやくプレイしたい!!
Civilization V
いつも買っては プレイに困る奴。やっぱ買った
今回のサマーセールで買ったやつ
Potal2
凄い安いんだよ・・
Deathsmiles
ゴシックシューティング!! はよープレイしたい
Fallout4
有名だし、プレイしたい
UNITYのライト消したいの巻
まずデフォルト
UNITY-Chanと中野シスターズを表示してみる ライトはディレクショナルライトいれて ドーン
ここからライトを消していきます
Directional Light OFF
UNITYちゃんは真っ黒になったけど、中野シスターズも背景も光があります これは UNITYはデフォルトで少しAmbientが入っているからです
UNITYちゃんが真っ暗なのは、UNITYちゃんは DirectionalLight以外効かないからです
Ambient OFF
メニューの Window->Lighting->Setting
Intensity Multiple を0に
キャラは真っ暗になった 背景がまだ明るいけど・・
完全に暗く
先ほどのLight Settingの
Skybox Materialをnoneにすると空がなくなる AmbientColorを黒にする EmvironmentReflections の Intensity Multipleも黒にする
カメラのBackgroundColorも黒にする
漆黒が手に入りました!
テストでSpotLightつける
ちゃんとライトも反映されてます UNITYちゃんは ディレクショナルライト以外反応しないのはきっと シェーダーのせいでしょう
UNITY ScriptableRenderLoop アウトラインのミス
前回調べた時に ポストエフェクトのアウトラインが入っていた・・・
EdgeDetectionというやつだ なので、Unity-chanシェーダーのアウトラインではなく ポストエフェクトのアウトラインが入っていた たしかこれはDepthや法線でアウトラインを出すタイプだったと思う
ということで、EdgeDetectionを切ったものを出力
これえで 正しいアウトラインが出た
しかし ScriptableRenderLoopを使ったものは、上記のチェックを外しても 変わらずだった
UNITY EdgeDetection
ふと気になった 先ほど出力した画像のSphereに アウトラインが付いている・・・・・ なぜだ??
カメラに EdgeDetectionってやつがいた! こいつ怪しい!
ってことで こいつをOFFしたら、Sphereのアウトラインが消え Unity-Chanのアウトラインが、カラー反映したいいものになった
元々作っていたアウトラインの上に 黒で上書きされていたようだ・・
アウトラインを付けるポストプロセスのようだ。
ってことで、アウトライン調査やり直しである
ScriptableRenderLoopでUNITY Chan表示
環境
ベータ版の機能なので EditorをUNITY2017のβを使います。今回は b10です
サンプル
GitHub - Unity-Technologies/ScriptableRenderLoop: Scriptable Render Loop 個々のサンプルを落とす 多分コンパイルエラー出るので、エラー出る所をつぶせばなんとかなるはず
UnityちゃんPluginをいれる
Unityちゃんと、Unity-Chan Toon2.0を入れてみましょう GUIが邪魔なので IdleChangeとFaceのスクリプトを無効にし
通常のレンダリングパイプライン
デフォルトの状態。 Edit->ProjectSettings->Graphicsの ScriptableRenderLoopを Noneにする カメラもForwardになっている事を確認
正しく表示されてます
BasicRenderPipeline
上記の設定を BasicRenderPipelineに変更すると
何も表示されなくなりました これは、Shaderパス名が違うからです。
今までのシェーダーではForwardの場合は ForwardBase というパスが実行されますが このRenderLoopでは BasicPass というパスを実行しているので その部分を修正してみる
BasicRenderPipeline.cs#Render が、実際のパイプライン
public static void Render(ScriptableRenderContext context, IEnumerable<Camera> cameras) { foreach (var camera in cameras) { // Culling CullingParameters cullingParams; if (!CullResults.GetCullingParameters(camera, out cullingParams)) continue; CullResults cull = CullResults.Cull(ref cullingParams, context); // Setup camera for rendering (sets render target, view/projection matrices and other // per-camera built-in shader variables). context.SetupCameraProperties(camera); // clear depth buffer var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, false, Color.black); context.ExecuteCommandBuffer(cmd); cmd.Release(); // Setup global lighting shader variables SetupLightShaderVariables(cull.visibleLights, context); // Draw opaque objects using BasicPass shader pass // var settings = new DrawRendererSettings(cull, camera, new ShaderPassName("BasicPass")); // パス名を変更する var settings = new DrawRendererSettings(cull, camera, new ShaderPassName("ForwardBase")); settings.sorting.flags = SortFlags.CommonOpaque; settings.inputFilter.SetQueuesOpaque(); context.DrawRenderers(ref settings); // Draw skybox context.DrawSkybox(camera); // Draw transparent objects using BasicPass shader pass settings.sorting.flags = SortFlags.CommonTransparent; settings.inputFilter.SetQueuesTransparent(); context.DrawRenderers(ref settings); context.Submit(); } }
なんとなく表示された。
ライティングが元と違う。原因調査中だけどライティングの計算式が違うのかな?
アウトラインが無くなった。 これに関しては デフォルトでは2パスでアウトラインを表示しています(オブジェクト拡大法で) 通常のレンダリングとは別に アウトラインのパスを暗黙的に実行します ところが ScriptableRenderLoopでは パスは明示的にしか指定できないため Outlineパスが呼ばれない ので、スクリプトと 先ほどのRenderを修正しなければならない