ムラサメ研究ブログ

主にゲームやプログラミングのログ

OverwatchというかFPS初心者の夏休みの研究

最近のゲーム FPSなどが極端に下手なので練習開始してます

Overwatch

1年ほど前に発売されたFPSで今もそこそこ人数がいる 出来は素晴らしいらしい FPSというよりMOBAであるため、単純なプレイヤースキルではなく頭を使った戦術でも戦える ため、FPS初心者でも考えれば勝てるはず また、ヒーローごとのアンチがある

Splatoon

これも日本では人気だし練習に買ってもよかったと思うけどまだ手を出してない

実力

超下手なので練習

練習方針として、FPSの標準操作キャラのソルジャーをしばらく使ったが いまいちなので方針変更してみる

方針

苦手意識を持ったキャラを使ってみる 苦手キャラのアンチも使ってみる そういえば苦手キャラ=使い方のわからないキャラ である 今のとこ

以下苦手キャラ

ゲンジ

木の葉返しがうざい エイムできない ULT怖い

アンチ シンメトラ、ゴリラ、ザリア、トールビョン、メイ、ロードホッグ

ジャンクラット

跳弾する弾にあたってしまう つい近距離で殺して爆風に巻き込まれる 威力でかい ULT怖い

アンチ ファラ、ザリア

ハンゾー

スナイプ怖い ULT怖い

アンチ ゴリラ D.va

ウィドーメイカー

スナイプ怖い

アンチ ゴリラ

積みゲーム

社会人といえば積みゲーム!!

昔から積みゲーム多いよほんと! とりあえず Steamのサマーセールで3本買った。どうせ全部積みゲーになるんだろうね・・

ゲーム実況で食えるまでは 仕事がメインで積みゲー消化できないよ・・

f:id:murasame-labo:20170704195220p:plain

私は あまり積みゲー作らないようにしてる。あまりプレイする時間ないのわかってるし 仕事として必要な有名ゲームや、変わったものをプレイしてる

今積んでるゲームで有名なのだけ紹介

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と中野シスターズを表示してみる ライトはディレクショナルライトいれて ドーン

f:id:murasame-labo:20170704191808p:plain

ここからライトを消していきます

Directional Light OFF

f:id:murasame-labo:20170704191856p:plain

UNITYちゃんは真っ黒になったけど、中野シスターズも背景も光があります これは UNITYはデフォルトで少しAmbientが入っているからです

UNITYちゃんが真っ暗なのは、UNITYちゃんは DirectionalLight以外効かないからです

Ambient OFF

f:id:murasame-labo:20170704192036p:plain メニューの Window->Lighting->Setting

f:id:murasame-labo:20170704192102p:plain Intensity Multiple を0に

f:id:murasame-labo:20170704192425p:plain

キャラは真っ暗になった 背景がまだ明るいけど・・

完全に暗く

先ほどのLight Settingの

Skybox Materialをnoneにすると空がなくなる AmbientColorを黒にする EmvironmentReflections の Intensity Multipleも黒にする f:id:murasame-labo:20170704193308p:plain

カメラのBackgroundColorも黒にする

f:id:murasame-labo:20170704193316p:plain

漆黒が手に入りました!

テストでSpotLightつける

f:id:murasame-labo:20170704193542p:plain

ちゃんとライトも反映されてます UNITYちゃんは ディレクショナルライト以外反応しないのはきっと シェーダーのせいでしょう

大逆転裁判

仕事をさぼったわけじゃないのだよ ワトソン君

本日は、従業員へのタスク割り振りやタスクの説明やら、管理的なことを行って お客さんとの受け答えを

その合間に 大逆転裁判

恥ずかしながら 逆転裁判シリーズは軽く動画見ただけで、初プレイだったのだけど 有名作品はかならずプレイしなければならない ゲームプログラマ故 やっとプレイしクリアした

アドベンチャーとも違う、推理ゲームとも違う ちょっと独特なかんじかなー

他にも有名ゲームプレイしていきたいです

UNITY ScriptableRenderLoop アウトラインのミス

前回調べた時に ポストエフェクトのアウトラインが入っていた・・・

EdgeDetectionというやつだ なので、Unity-chanシェーダーのアウトラインではなく ポストエフェクトのアウトラインが入っていた f:id:murasame-labo:20170627035739p:plain たしかこれはDepthや法線でアウトラインを出すタイプだったと思う

ということで、EdgeDetectionを切ったものを出力

f:id:murasame-labo:20170628025650p:plain

これえで 正しいアウトラインが出た

しかし ScriptableRenderLoopを使ったものは、上記のチェックを外しても 変わらずだった

UNITY EdgeDetection

ふと気になった 先ほど出力した画像のSphereに アウトラインが付いている・・・・・ なぜだ??

カメラに EdgeDetectionってやつがいた! こいつ怪しい! f:id:murasame-labo:20170627035739p:plain

ってことで こいつをOFFしたら、Sphereのアウトラインが消え Unity-Chanのアウトラインが、カラー反映したいいものになった

元々作っていたアウトラインの上に 黒で上書きされていたようだ・・

Unity - マニュアル: エッジ検出

アウトラインを付けるポストプロセスのようだ。

ってことで、アウトライン調査やり直しである

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になっている事を確認

f:id:murasame-labo:20170627030132p:plain

正しく表示されてます

BasicRenderPipeline

上記の設定を BasicRenderPipelineに変更すると

f:id:murasame-labo:20170627030256p:plain

何も表示されなくなりました これは、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();
        }
    }

f:id:murasame-labo:20170627031316p:plain

なんとなく表示された。

ライティングが元と違う。原因調査中だけどライティングの計算式が違うのかな?

アウトラインが無くなった。 これに関しては デフォルトでは2パスでアウトラインを表示しています(オブジェクト拡大法で) 通常のレンダリングとは別に アウトラインのパスを暗黙的に実行します ところが ScriptableRenderLoopでは パスは明示的にしか指定できないため Outlineパスが呼ばれない ので、スクリプトと 先ほどのRenderを修正しなければならない