Happy My Life

日常とか技術とか

Nintendo SwitchとUE4のムフフな話

裏UE4 Advent Calenderの24日目です。昨日は、Kaaaaiさんのよく使われる処理をUnrealC++で書いてみようの巻。でした。

今日はクリスマスイブですね。クリスマスといえば、Nintendo 3DSが飛ぶように売れる時期でもあります。ということで、ここでは来年のクリスマス商戦の中心にいるであろうNintendo SwitchとUE4との話を書いていきます(やや強引な導入)。

最初に一言

私はEpicGamesJapan、任天堂の中の人ではないですし、Nintendo Switch向けのソフト開発にも関与してません(というか、関与してたら、とてもじゃないがこんなエントリー書かない)。

ということで、このエントリーに書かれている事は、ネット等で公開されている情報をベースにした話ですので、事実と異なる可能性があります。

別の言い方をすると「話半分に聞いておいてね。何か役立つ情報があるかもよ?」という感じなので、そのあたり、よろしくお願いします。

Nintendo Switchとは

いまさらなので、説明を省略します。「Nintendo Switchなんて初めて知った!」って方は、以下の公式動画を観てください。

ここのエントリーをわざわざ見に来るということは、そんな普通のNintendo Switchの情報を探しに来た訳じゃないと思うので、開発寄りな話をしていきます。

最初にUE4とNintendo Switch(コードネーム NX)との関連性が表に出てきたのは、私が記憶している限りは、ドラゴンクエストXIの制作発表時だった気がします。このとき、

  • PS4版(3D)と3DS版(2D)を開発中
  • PS4版はUnreal Engine 4を使って開発中

と発表されました。そして最後に。

  • NX(Nintendo Switch)でも発売する

という発表がありました。

ここから導き出されるのは、ただ一つ。「UE4はNXにも対応するのでは?」。そして、後日、UE4もNintendo Switchをサポートすることが発表されました

Nintendo Switchのハードウェアスペック

Nintendo Switchが正式に発表されて間もなく、NVIDIAからNintendo SwitchにはTegraが採用されました、と正式アナウンスがありました。

Nintendo Switchに搭載されるSoC(CPU、GPU、周辺機器制御回路が1チップ化されたもの)はTegraシリーズで確定です。NVIDIAが設計したSoCなので、GPUの性能が他に比べると圧倒的な性能となることは予想がつきます。

一口にTegraシリーズといっても様々な種類があり、どの型番(具体的には、Tegra X1、Tegra P1のいずれか)が採用されたか、までは分かりません。確実なのはCPUはARMv8(64bitアーキテクチャなCPU)ベースとなることですかね。

ただ気になるのは、Nintendo Switchに搭載されるのは、流通するTegra X1、Tegra P1そのままではなく、WikipediaによるとTegra P1のカスタム品では?と書かれています…。あと、西川善司の3DGE:次世代機「Nintendo Switch」についての答え合わせをしつつ,追加でいろいろ想像してみるでも、Tegraのカスタムに言及されています。

もし、Tegra P1ベースであれば、GPUはPascalベース(つまり、NVIDIA 1080と同じ技術)となるため、これまでのTegraと比較しても、さらなるグラフィック性能の向上が見込めます。

サポートしているグラフィックスAPI

Nitendo SwitchのOSは、公式にはNintendo OSとなっていますが(NVIDIAのこれまでの流れを鑑みるとLinuxベースなOSだと予想していますが、正解は発売されてからのお楽しみ)、グラフィックスAPIについては、OpenGL 4.5、OpenGL ES、Vulkanに対応しているという情報がgamasutraに書かれていました

ここで登場したVulkanってのは、OpenGLの後継となる、オープンなグラフィックスAPIです(OpenGLとの互換性はありません)。

NVIDIAのSoCなので早々にVulkanに対応していても、とくに不思議はないですね。実際に、khronos groupのサイトにはNintendo SwitchがVulkan APIの認証に合格していることが書かれています。

UE4での対応は?

ちゃくちゃくとは進んでいると思われます。

Nintendo SwitchのC/C++コンパイラはclangのカスタムだろうし、OSはLinuxベースの何かでしょうから、UE4におけるNintendo Switch対応は、Linux + αな感じで対応できるのでは?と予想しています。なので、Nintendo Switch向けの大きな変更がはいっていないのではないか、と。

据置型ゲーム機(と言って良いのか?)ですので、そのなかでも重要な要素を占めるのがグラフィックスAPI廻りです。

まず、UE4はOpenGL、OpenGL ESには既に対応済みです。で、気になるのが、UE4におけるVulkanへの対応です。

ちなみにVulkanを有効化するメリットとして、OpenGLよりも高FPSで表示できるようになる点です。こは、Vulkanの設計自体がOpenGLよりハードウェアのパフォーマンスを引き出しやすくしているためです。

4.14.1の段階で、まだ試験的実装です。4.14.0 previewの頃から、Vulkan対応したアプリをAndroid Nで動作するか試してきました。検証の結果、4.14.0ではビルドできるものの実行ができませんでした(画面が真っ黒)が、4.14.1では空のプロジェクトをそのままビルド、実行したら動作しました。ですので、UE4でも、少しづつですがVulkanでの実装されてことがわかりました。

余談ですが、C/C++からVulkanを呼びだして使いこなすのはかなり難易度高いです。正直言うと、EpicGamesの凄腕プログラマーが実装したコードよりも、もっとよいコードを書ける気がしません。ですので、Vulkanを使いたいときは素直にゲームエンジンを使った方が幸せになれる気がします。

ですので、Nintendo Switchは、OpenGLベースで開発されるでしょうが、徐々にVulkanへと移行することでしょう。そのためにも、Vulkanの概要程度は知っておくとよいことがあるかもしれません。

ということで、今回のエントリーはここまでにしたいと思います。

こんな情報がどこで役に立つのかは不明ですが、将来Nintendo Switch向けの開発を行う事があれば、ひょっとして役に立つのではないかと思います(笑)。

最後に

開催まで一週間を切ったコミックマーケット91の1日目にサークル参加します。場所は西む01bです。同人ソフト等もある、いわゆる技術島と言われる場所です。

新刊は、UE4の内部解説などを書いた「Dive to Unreal Engine Vol.2」です。詳細は告知サイトを参照してください。

ちなみに本エントリーで取り上げたVulkanについても、UE4内部でどのように扱われているのか、といった話も取り上げていますので、気になる方はコミケ会場で入手してください。

明日(最終日)は、housakusleepingさんの「Child Actor Templates か アニメーション的な何か」です。