強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Google Maps API がゲームで活用可能に。 Unity にも対応


昨夜、 Google Maps APITwitter アカウントから以下の様なツイートが行われました。

Google Maps API を使って現実世界をゲーム内に構築できる、しかも Unity にも対応との事です。

Google Maps APIs  |  Google Developers
https://developers.google.com/maps/gaming/


作成事例

紹介ページには作成事例の動画も上がっていました。


まだ「セールスにご連絡下さい」な状態になっていますがページの最後にこの様な記述も有るので恐らく GDC でもう少し詳細が公開されるのでは無いでしょうか?

関連情報

Google Map APIとUnityで“リアルワールドゲーム”開発が容易に - ITmedia NEWS
http://www.itmedia.co.jp/news/articles/1803/15/news061.html

IBM Watson の Visual Recognition を Unity から使う方法

Visual Recognition は画像を解析し、どのようなものなのかをテキストで返すサービスです。

[サービス情報]

Visual Recognition - IBM Cloud
https://console.bluemix.net/catalog/services/visual-recognition

[公式のチュートリアル]

概説チュートリアル
https://console.bluemix.net/docs/services/visual-recognition/index.html#-


[公式のドキュメント]

unity-sdk/Scripts/Services/VisualRecognition/v3 at develop · watson-developer-cloud/unity-sdk
https://github.com/watson-developer-cloud/unity-sdk/tree/develop/Scripts/Services/VisualRecognition/v3

アプリの作成手順

Visual Recognition を使った Unity アプリの作成手順を解説します。

基本的な共通で必要な作業はこちらの記事で解説しています。
こちらが未読の場合には先にそちらを確認し、 IBM Cloud アカウントの作成や IBM Watson Unity SDK のインストール作業などを済ましておいて下さい。

サーバ側の作業

まずはサーバ側の設定作業を行います。

こちらのページ経由でサーバにプロジェクトを作成します。
ページの右下に有る「作成」のボタンを押して、プロジェクトを作成して下さい。

新規資格情報を作成します。

デフォルトの状態のままで「追加」ボタンをクリック。

「資格情報の表示」をクリックして、展開。


後で使うのでここの情報をメモっておきます。
note の部分にはユーザへのメッセージが入る様です。「5分後に有効になります」などのメッセージが入っていたりしてました。
※キャプチャ画像の note は一度削除してから作り直したので異なるメッセージに成っています。

左側のタブから「管理」に切り替え、ツールを起動します。

ツールの初回起動時には API Key の入力が求められるので先程メモした中に有る api_key の値を入力します。


するとこの様な画面に切り替わります。ここでは画像解析の学習を行わせた分類器(Classifier)を作成します。新規に作成する為に「Create classifier」ボタンをクリックします。

学習用のデータを以下の様に設定します。画像データは IBM Watson Unity SDK をインストール済みの Unity のプロジェクトの場合、 Assets/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers に有ります。
ここでは giraffe_positive_examples.zip と negative_examples.zip を使って設定する事にします。

※学習データの zip ファイルは最低「正しいもの」2つ、もしくは「正しいもの」1つ、「間違っているもの」1つ準備する必要が有ります。

作成が完了するとこの様な表示に成ります。

赤枠の部分で画像ファイルを選択するとテストできます。分析したい画像を選択し、テストをしてみましょう。

ここでは Assets/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers フォルダに有る giraffe_to_classify.jpg と turtle_to_classify.jpg を使ってみます。


ちゃんと判定出来ている事が確認できます。

Unity での作業

サーバ側の作業が終わったので次に Unity 側の作業を行います。
Unity のプロジェクトを新規作成し、 IBM Watson Unity SDK を Import 。
Assets/Watson/Examples/ServiceExamples/Scripts/ExampleVisualRecognition.cs を開き、以下の部分を見つけます。

ここに先程メモした url と api_key の値を記述します。

public class ExampleVisualRecognition : MonoBehaviour
{
    private string _apikey = null;
    private string _url = null;

Scene に新規に GameObject を作成し、このファイルをアタッチし、実行して下さい。

すると 〜Attempting to get all classifiers というメッセージの後に以下の様なメッセージが表示されます。

{"classifiers":[{"classifier_id":"\u52d5\u7269_693641681","name":"\u52d5\u7269","status":"ready"}]}

ここで表示されているものは自作した分類器(Classifier)を全て取得する API のレスポンスです。
「classifier_id」が「\u52d5\u7269_693641681(動物_693641681)」、「name」が「\u52d5\u7269(動物)」で有る事が確認できます。

classifier_id は他の API で使用するのでここの値で有る事を覚えておいて下さい。

関連情報

[Watson] Visual Recognition Tool を利用して画像解析を試す - Qiita
https://qiita.com/y-some/items/6addf597a81a48f04d59

エディタ拡張でちゃんと Retina 対応する方法

こちらのプルリクによると EditorGUIUtility.pixelsPerPoint を使うのが良いみたいです。

Unity-Technologies / cinematic-image-effects / Pull request #17: [tcg] Retina support for Unity 5.4+ (color wheels). — Bitbucket
https://bitbucket.org/Unity-Technologies/cinematic-image-effects/pull-requests/17/tcg-retina-support-for-unity-54-color/diff

返す値が 2 なら Retina

Unity - Scripting API: EditorGUIUtility.pixelsPerPoint
https://docs.unity3d.com/ScriptReference/EditorGUIUtility-pixelsPerPoint.html

マウスの情報についてはこちら。

Unity - Scripting API: HandleUtility.WorldToGUIPoint
https://docs.unity3d.com/ScriptReference/HandleUtility.WorldToGUIPoint.html

Unity - Scripting API: HandleUtility.GUIPointToWorldRay
https://docs.unity3d.com/ScriptReference/HandleUtility.GUIPointToWorldRay.html

使用例1 - CustomEditor の OnSceneGUI()

CustomEditor の OnSceneGUI() で EditorGUIUtility.pixelsPerPoint を考慮しないで描画処理を記述すると Retina 対応のディスプレイではこの様な描画結果になります。

Scene View のサイズが 800x500 の時に 400x100 のボタンを描画したにも関わらず、横幅一杯のサイズのボタンが描画されています。

ちゃんと EditorGUIUtility.pixelsPerPoint を考慮したプログラムは以下の様になります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(OnSceneGUISample))]
public class OnSceneGUISampleEditor : Editor {
    Rect ScaledRect(Rect rect)
    {
        var s = EditorGUIUtility.pixelsPerPoint;
        rect.x /= s;
        rect.y /= s;
        rect.width /= s;
        rect.height /= s;
        return rect;
    }

    void OnSceneGUI()
    {
        var sceneCamera = SceneView.currentDrawingSceneView.camera;
        var cameraRect = sceneCamera.pixelRect;

        Handles.BeginGUI();
        Rect labelRect = ScaledRect(new Rect(5, 5, cameraRect.width-10, 40));
        GUI.Label(labelRect, string.Format("size:{0}x{1}", cameraRect.width, cameraRect.height));
        var buttonRect = ScaledRect(new Rect(0, 100, 400, 100));
        if (GUI.Button(buttonRect, "Test"))
        {
            Debug.Log("Push!");
        }
        Handles.EndGUI();
    }
}

この場合には正しく、画面の半分のサイズで描画されている事が確認できます。

使用例2 - クリックした位置に赤い SphereGizmo を表示

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

public class Test : MonoBehaviour {
#if UNITY_EDITOR
    bool debugClick = false;
    Vector2 debugClickPos;
#endif
    void Start()
    {
        // ここでは正しい値を返さない
        // Debug.Log(EditorGUIUtility.pixelsPerPoint);
    }
    void Update()
    {
        // ここでは正しい値を返さない
        // Debug.Log(EditorGUIUtility.pixelsPerPoint);
    }
#if UNITY_EDITOR
    void OnDrawGizmos()
    {
        // ここでは正しい値を返す
        // Debug.Log(EditorGUIUtility.pixelsPerPoint);

        if (Event.current.type == EventType.MouseUp)
        {
            var mousePosition = Event.current.mousePosition;
            var ray = HandleUtility.GUIPointToWorldRay(mousePosition);
            debugClickPos = ray.origin;
            debugClick = true;
        }

        if (debugClick) {
            Gizmos.color = Color.red;
            Gizmos.DrawWireSphere(debugClickPos, 0.5f);
        }
    }
#endif
}

関連情報

Scene ビューで Gizmo を使う - 強火で進め
http://d.hatena.ne.jp/nakamura001/20120929/1348925143

IBM Watson の Conversation を Unity から使う方法

Conversation は自然言語による会話を行う機能を提供するサービスです。

[サービス情報]

Conversation - IBM Cloud
https://console.bluemix.net/catalog/services/conversation

[公式のチュートリアル]

概説チュートリアル
https://console.bluemix.net/docs/services/conversation/getting-started.html#gettingstarted

[公式のドキュメント]

unity-sdk/Scripts/Services/Conversation/v1 at develop · watson-developer-cloud/unity-sdk
https://github.com/watson-developer-cloud/unity-sdk/tree/develop/Scripts/Services/Conversation/v1

Watson Conversation Service詳細資料
https://www-01.ibm.com/marketing/iwm/dre/signup?source=mrs-form-9715&S_PKG=ov54914

アプリの作成手順

Conversation を使った Unity アプリの作成手順を解説します。

基本的な共通で必要な作業はこちらの記事で解説しています。
こちらが未読の場合には先にそちらを確認し、 IBM Cloud アカウントの作成や IBM Watson Unity SDK のインストール作業などを済ましておいて下さい。

サーバ側の作業

まずはサーバ側の設定作業を行います。

こちらのページ経由でサーバにプロジェクトを作成します。
ページの右下に有る「作成」のボタンを押して、プロジェクトを作成して下さい。


次に「Launch tool」ボタンを押してツールを起動します。


「Create」ボタンをクリック。


「Title」と「Description」に適当なテキストを入力し、「Create」ボタンをクリック。

すると、この様な画面に切り替わります。ここで「Add Intent」をクリック。

Intent(Intents) にはユーザが行いたい行動を記述します。

以下の状態に成る様にテキストを追加後、「←」をクリックして戻ります。

次に Dialog を作成します。 Dialog タブをクリックした後に「Create」をクリック。

初期状態ではこの様に成っており、この2つの Node の間にノード(処理)を追加して行きます。

「ようこそ」の Node の「︙」をクリックした後に「Add node blow」をクリック。


If bot recognizes: にはこの Node がどの様な条件の時に処理が行われるかを記述します(要するにif文の条件の記述に当たります)。
今回は先程定義した「おみくじ」の Intent を使います。 # を入力すると Intent の一覧(まだ1つしか定義してないので1つしか出ないですが)が表示されるのでそこから「おみくじ」を選択。これで「おみくじ」が入力された時にこの Node の処理が実行されます。

次に条件が当てはまった時のレスポンス(返信)のメッセージを Then respond with: に記述します。
以下の状態に成る様にテキストを追加後、「✕」をクリックして閉じます。

ここで動作テストをします。右上の吹き出しアイコンをクリック。

「Enter something to test your bot」の部分に「おみくじ」と3回入力してみて下さい。
すると「大吉」「中吉」「吉」という順番でレスポンスが返ってきます。

上部の「Clear」ボタンを押すともう一度、最初から試せます。もう一度やっても「大吉」「中吉」「吉」の順番で表示される事が確認できます。

これではおみくじの面白さが無いのでランダムになる様に変更します。
「おみくじ」の Node をクリックして開き、「Set to Random」のリンクをクリック後、もう一度「おみくじ」と入力してみて下さい。すると今度は完全にランダムな結果が返ってきます。

「ようこそ」と「その他」の Node の記述についてもここで解説しておきます。
もし、途中で間違ってこれらの Node を削除しても、同様の記述をすれば復元出来ます。

「その他」の Node の処理がここで出てきてなかったので確認する事にします。
「Try it Out」のウィンドウを開いて「abc」と3回入力して下さい。

「abc」は「おみくじ」の条件に当てはらないので「その他」の Node の処理が実行されます。この Node ではレスポンスのテキストが2つ定義されているのでそのテキストが順番に表示されます。

次に Entity を作成します。「Entities」タブに切り替えて、「Add entity」をクリック。

以下の状態に成る様にテキストを追加後、「←」をクリックして閉じます。

「おみくじ」の下に Node を追加。

以下の状態に成る様にテキストを追加後、「✕」をクリックして閉じます。

「食事」まで確定した時にその先の流れを記述する為に、「食事」の 子 Node を作成。

食事 Node のレスポンス、「何が食べたいですか?」の返信が「カレー」だった時の処理を記述。 Entity は @ を記述すると一覧表示されます。 @ を入力後、「食べ物」を選択して下さい。

カレー Node と同じ階層に Node を追加し、カレー以外が入力された時の処理を記述。

@(食べ物) という記述で食べ物の Entity でマッチした食べ物が差し込まれます。ちなみに「@食べ物 美味しよね。」と Entity 名の後に空白を入れる場合には () は省略できます。

動作確認。

別のパターンでの動作確認。

牛めし」と入力したにも関わらず、「牛丼」として処理が行われている事が確認できます。
自然な会話になる様に「牛めし」と返す様に修正します。
この様な記述でユーザが入力した内容をそのまま返信のテキストに差し込めます。

修正されているか確認。

Intent と Entity の違い

ここで Intent と Entity の違いを解説しておきます。
ざっくり言うと Intent は設定したものから多少ずれている入力でも Watson 良い感じに判定して意味を理解してくれます。
Entity は厳密にマッチしていないとダメです。

例えば「食事」の Intent はこの様に設定されているにも関わらず、「めし食べたい」と入力しても同じニュアンスだと判断してくれます。

「食べ物」の Entity には「カレー」が含まれていますがひらがなで「かれー」と入力した時には「カレー」だと判断してくれません。

※ここで「おみくじ」はこんな記述だけで良かった事に気が付く(^_^;)

これで会話(bot)の作成は完成です。

諸々の情報を確認

後で Unity 側で使用する諸々の情報を確認しておきます。

こちらのいずれかをクリックして Workspace 一覧に戻ります。

「View Details」をクリックし、 Workspace ID をメモしておきます。

ダッシュボードのページに戻り、今回作成した Conversation をクリック。
※デフォルトの名前から変更していなければ「Conversation-」で始まるプロジェクト名のものです。

「サービス資格情報」のタブに切り替え、「資格情報の表示」をクリック。

Unity での作業

サーバ側の作業が終わったので次に Unity 側の作業を行います。
Unity のプロジェクトを新規作成し、 IBM Watson Unity SDK を Import 。

Assets/Watson/Examples/ServiceExamples/Scripts/ExampleConversation.cs を開き、以下の部分を見つけます。

ここに先程メモしたものを記述します。

public class ExampleConversation : MonoBehaviour
{
    private string _username = null;
    private string _password = null;
    private string _url = null;
    private string _workspaceId = null;

_questionArray の内容を今回想定しているものに変更。

    private string[] _questionArray = { "食事", "カレー" };

_conversation.Message() に指定してある最初に送信するメッセージを「おみくじ」に変更し、
AskQuestion() の数を今回のものに合うよに減らします。

Examples() を以下の様に変更して下さい。

    private IEnumerator Examples()
    {
        if (!_conversation.Message(OnMessage, OnFail, _workspaceId, "おみくじ"))
            Log.Debug("ExampleConversation.Message()", "Failed to message!");

        while (_waitingForResponse)
            yield return null;

        _waitingForResponse = true;
        _questionCount++;

        AskQuestion();
        while (_waitingForResponse)
            yield return null;

        _questionCount++;

        _waitingForResponse = true;

        AskQuestion();
        while (_waitingForResponse)
            yield return null;

        Log.Debug("ExampleConversation.Examples()", "Conversation examples complete.");
    }

Scene に新規に GameObject を作成し、このファイルをアタッチし、実行して下さい。
すると Console に会話のやり取りが表示されている事が確認できます。

今回は基本的な使い方しか解説していませんが Conversation もっともっと色々な機能が有ります。
全て解説していると膨大な量になるのでここでは解説しませんが他の機能についてもドキュメントを参考に使ってみて下さい。

関連情報

各種参考情報のリンク集
https://console.bluemix.net/docs/services/conversation/resources.html#-

Watson Conversation Service でチャットボットを開発-デモンストレーション

Watson Conversation の使い方を学ぶ
http://www.ibm.com/developerworks/jp/cognitive/library/cc-watson-chatbot-conversation/index.html

Conversation Car Dashboard デモの日本語版
https://github.com/makaishi2/car-dashboard-jp/blob/master/README.md

IBM Watson でコーディングのできないド素人がチャットボットを作ってみた - IBM THINK Watson - Japan
https://www.ibm.com/think/jp-ja/watson/chatbot-conversation-1/

Watson ConversationのTutorialを日本語でやってみた (前編) - Qiita
https://qiita.com/sukusuku_watson_editorial_room/items/2ab2b4738e31b276b91e

Watson ConversationのTutorialを日本語でやってみた (後編) - Qiita
https://qiita.com/sukusuku_watson_editorial_room/items/e3111d2ccce996db7feb#_reference-3c2d36bef8ac05a322c4

Oculus アプリで Unity の物理処理をネットワーク越しに同期を取る方法

Networked Physics in Virtual Reality: Networking a stack of cubes with Unity and PhysX | Oculus
https://developer.oculus.com/blog/networked-physics-in-virtual-reality-networking-a-stack-of-cubes-with-unity-and-physx/

IBM の Watson を Unity から使う方法

IBM の Watson を Unity から使う方法を解説します。

Watson は米国のクイズ番組に出て、クイズ王に勝った事で話題になった AI です。

クイズ王に勝ったコンピューター | 日経 xTECH(クロステック)
http://tech.nikkeibp.co.jp/it/pc/article/trend/20110418/1031323/

Watson では何が出来るかはこの辺りが参考になります。

IBM Watson: Watson とは? - Japan
https://www.ibm.com/watson/jp-ja/what-is-watson.html

GitHub に Unity で使う時のコードが公開されていますが Asset Store でも配布されているのでそちらの方がお手軽で良いでしょう。ドキュメント部分を参照する為に観るのは良いと思います。

watson-developer-cloud/unity-sdk: Unity SDK to use the IBM Watson services.
https://github.com/watson-developer-cloud/unity-sdk

なお、この SDK は現時点では Unity の WebGL ビルドには未対応です。

前準備

Watson のサービスを使用するには IBM Cloud というサービスのアカウントを作成する必要が有ります。

アカウントをまだ持っていない場合にはこちらのページからアカウント作成して下さい。

まずは試してみるという段階では無料で使えるライト(Lite)アカウントで問題有りません。その後、必要に応じて他のプランを検討しましょう。

ライトアカウントで出来る事についてはこちらを参照。

IBM Cloudライト・アカウント (Bluemix) - Japan
https://www.ibm.com/cloud-computing/jp/ja/bluemix/lite-account/

IBM Watson Unity SDK のインストール

Asset Store にて、 「IBM Watson Unity SDK」で検索してインストールして下さい。

IBM Watson Unity SDK - Asset Store
https://assetstore.unity.com/packages/tools/ai/ibm-watson-unity-sdk-108831

IBM Watson Unity SDK で利用可能なサービス一覧はこちら(GitHub の README.mdに記載)。一部、 Deprecated (非推奨)のサービスも有るみたいです。

こちらでは日本語で確認できます。
※あくまで、 Watson API の一覧なので IBM Watson Unity SDK で利用出来ないサービスも含まれている可能性が有ります。

IBM Watson APIs サービスカタログ - Japan
https://www.ibm.com/watson/jp-ja/developercloud/services-catalog.html

テキスト→音声変換サービスを使う

ここでは Text to Speech (テキスト→音声変換)サービスの使い方を解説します。

[デモページ]

Text to Speech Demo
https://text-to-speech-demo.ng.bluemix.net/

[サービス情報]

Text to Speech - IBM Cloud
https://console.bluemix.net/catalog/services/text-to-speech/

こちらのページ経由でサーバにプロジェクトを作成します。「Get started free」ボタンを押して、プロジェクトを作成して下さい。

Watson Text to Speech
https://www.ibm.com/watson/services/text-to-speech/

後で気がついたですが、サービス情報のページの右下に有る「作成」のボタンからも作成可能でした。

アカウント情報と Web API の URL を設定

IBM Watson Unity SDK のインストール済みの Unity エディタでの作業に戻ります。

Text to Speech のサンプルコードは以下のパスに存在します。

Assets/Watson/Examples/ServiceExamples/Scripts/ExampleTextToSpeech.cs

しかし、このプログラムには以下の様に username / password / url が記述されていません。

public class ExampleTextToSpeech : MonoBehaviour
{
    private string _username = null;
    private string _password = null;
    private string _url = null;

これらの情報を確認する為に IBM Cloud のページに戻ります。

まず、 こちらのページを開きます。



すると先程作成したプロジェクトが表示されるのでクリックします。



左側のメニューから「サービス資格情報」を選択した後に「資格情報を表示」をクリックします。



ここに記載されている情報を ExampleTextToSpeech.cs に記述します( ExampleTextToSpeech.cs 記載されているものと並び順が違うので注意!!)。

例えば以下の様な場合には

{
  "url": "https://stream.watsonplatform.net/text-to-speech/api",
  "username": "aaaaaaaaaaaaaaaaaaa",
  "password": "bbbbbbbbb"
}

この様に置き換えます。

public class ExampleTextToSpeech : MonoBehaviour
{
    private string _username = "aaaaaaaaaaaaaaaaaaa";
    private string _password = "bbbbbbbbb";
    private string _url = "https://stream.watsonplatform.net/text-to-speech/api";

Herarchy に GameObject を作成し、この ExampleTextToSpeech.cs を追加します。

これで作業は完了です。 Play ボタンを押すとプログラム中に記述したテキストが Watson で音声に変換され再生されます。

なお、途中までは上手くスピーチが再生されましたが途中で以下のエラーが発生しました。
ログを読むと「 Lite プランでは使えない」との事。サンプルの後の方の処理は Lite (無料)プランでは使えない様です。

[02/21/2018 09:55:16][RESTConnector.ProcessRequestQueue()][ERROR] URL: https://stream.watsonplatform.net/text-to-speech/api/v1/customizations, ErrorCode: 400, Error: 400 Bad Request, Response: {
   "code": 400,
   "code_description": "Bad Request",
   "error": "This feature is not available for the Bluemix Lite plan. Please upgrade to a paid plan to activate this feature: https://console.bluemix.net/catalog/services/text-to-speech"
}

(2018/03/15 追記)
日本語で喋らせたい場合にはこちらのページを参照下さい。

IBM Watson の Text to Speech で日本語で喋らせる方法 - 強火で進め
http://d.hatena.ne.jp/nakamura001/20180315/1521116773

(追記ここまで)

動作確認テクニック

こちらのサービスは curl を使ってサービスを使うことも可能です。
最終的な作品で curl を使ってアクセスする予定が無い場合でも動作確認などに使うと便利です。

curl でのアクセス方法はこちらのページが参考になります。

例として記述されているこちらのコードなどは

curl -X POST -u {username}:{password} \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--data "{\"text\":\"hello world\"}" \
--output hello_world.wav \
"https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize"

例えば自分の username が abc 、password が def の時には {username} と {password} の部分を以下の様に記述する事で実行できます。

curl -X POST -u abc:def \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--data "{\"text\":\"hello world\"}" \
--output hello_world.wav \
"https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize"

Text to Speech の使い方のドキュメントはこちらに有ります。

unity-sdk/Scripts/Services/TextToSpeech/v1 at develop · watson-developer-cloud/unity-sdk
https://github.com/watson-developer-cloud/unity-sdk/tree/develop/Scripts/Services/TextToSpeech/v1

他のサービスの使い方解説記事

Conversation(会話)
http://d.hatena.ne.jp/nakamura001/20180227/1519730520

Visual Recognition(画像解析)
http://d.hatena.ne.jp/nakamura001/20180306/1520316019

関連情報

このサービスで利用可能な SSML のエレメントはこちらで確認。

Using SSML
https://console.bluemix.net/docs/services/text-to-speech/SSML.html#ssml

「2D Game Kit」を Unity 2018 で実行するとエラー発生

こちらの「2D Game Kit」をUnity 2018 (現在ベータ版)で実行するとエラー発生が発生しました。
※後、初回の Import 時、エディタが落ちましたが Temp と Library フォルダを削除した後にプロジェクトを開き直すと大丈夫でした。

2D Game Kit - Asset Store
https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-game-kit-107098

2D Game Kit のご紹介:ドラッグアンドドロップで Unity を学ぼう – Unity Blog
https://blogs.unity3d.com/jp/2018/02/13/introducing-2d-game-kit-learn-unity-with-drag-and-drop/

エラーの内容はこちら

Assets/2DGamekit/Utilities/Cinemachine/PostFX/Editor/CinemachinePostProcessingEditor.cs(127,29): error CS0122: `UnityEditor.Rendering.PostProcessing.ProfileFactory' is inaccessible due to its protection level

調べてみると「Post Processing Stack」のバグらしい。v2 で直るとの事。

Inaccessible due to its protection level | Unity Community
https://forum.unity.com/threads/inaccessible-due-to-its-protection-level.508865/

という事で Asset Store で Post Processing Stack のページを開くと v2 は GitHub に有るよとの事。

Post Processing Stack - Asset Store
https://assetstore.unity.com/packages/essentials/post-processing-stack-83912

ここでそう言えば Unity 2018 なら Package Manager からもインストールできたはずだよな?と思い Package Manager を開いてみると現在のバージョンは 0.1.7 そして 0.1.8 にアップロード可能な状態でした。

そこでアップロード行った所、エラーが消えました。

※この様に 0.1.8 に成ればOK。
※ Postproccessing は Install のタブの方に有るのでタブを切り替えてから探して下さい。

しかし、 Start シーンを開いて実行してみるとタイトル画面で START をクリックした後に Zone1 の読み込みに失敗している様でした。

Build Settings の Scene In Build の中が空に成っていたので何か怪しいなと思ってはいたのですがここが壊れてたみたいです。

Unity 2017 で開いた場合にはこの様に成っていました。

Unity 2018 で開いたプロジェクトで同様の設定をした所、正常に動作しました。

※ Unity 2017.x だとすんなり動作するので素直に Unity 2017.x を使った方が楽ですw