ゲームプラットフォームとしてのスマートTV

というわけで日本でもスマートTVプラットフォームが出揃うことになった(Roku以外)。当然全部買ってコードを書いてみるつもりだが、現状提供されているAPIやUIはかなり均質化しているのでプラットフォームを揃える必要性は今のところあまり感じていない。

"オマケ"の域を脱することができるのか

STBや類似デバイスでのゲームの歴史は古い。例えば、タイトーX-55(本来は通信カラオケ、1995年発売でサービスは2012年に終了)にもゲーム機能は提供されていた。

X-55は、音源チップのほかにも、スーパーファミコンメガドラのあいだぐらいのハードウェア性能があったので、カラオケ以外にもゲームも配信しよう!という企画だったのです。

(通信カラオケのBGMはストリーミングでなくMIDIなので音源はかなり豪華、CPU/メモリは020の1MiBほどと普通。)
他にも飛行機の機内エンタテイメントシステムにも大抵ゲームが付いてくるように、ゲームは色々なところに普及はしている。問題は、専用プラットフォームに比べてどうしても広報その他の面で弱く、なかなかベンダにとって魅力のあるプラットフォームになりづらい点がある。X-55はクレオパトラフォーチュンを生んだがこれは珍しいケースに思える。
... この状況は現代でもあまり代わっていない。

RokuにはUbiのJustDanceによく似たゲーム( http://www.dancepartygame.com/ )が配信されている - このようなゲームが重要なモーションコントロールのユーザだろう - が、例えばTVトリビアクイズのようなRokuのもつ番組データベースを活用した"Rokuならでは"のゲームは存在しない(ゲームAPIから番組DBにアクセスできない)。

今のところプラットフォームを差別化できそうなのはソーシャル機能くらいしかない。Rokuはこの点をほぼ欠いているが、他のプラットフォームはベースとなるプラットフォームのソーシャル機能をそのまま備えている。
また、現状ではスマートTV独占のゲームは殆ど例がない。Amazonは自社のゲームスタジオ( https://games.amazon.com/ )でSev Zeroを開発し、Fire TVに独占供給している。

ハードウェアとヒューマンインターフェース

基本的には、各社ともに横並びとなっている。FireとRokuにはstick型のデバイスが提供されており、これは通常の箱型のデバイスに比べてスペックが劣る。Appleはstickデバイスを提供せず、GoogleはChromeCastの形でアプリケーションプラットフォームは提供していない。

プラットフォーム (PS4) (XboxOne) AppleTV Nexus Player 新FireTV FireTV Stick Roku3
CPU amd64 x8 amd64 x8 ARMv8 x2 i386 x4 ARMv8 x4 ARMv7 x2 おそらくARMv6 x2
GPU AMD GCN(DX12) AMD GCN(DX12) PowerVR GX6450 PowerVR G6430 PowerVR GX6250 VideoCore4 おそらくVideoCore4
モーションコントローラ パッド、別売 なし 標準 なし なし なし 標準
パーソナルオーディオ 標準 + パッドスピーカ 標準 なし なし パッド側、APIなし なし リモコン側、APIなし
オーディオ出力 7.1ch 7.1ch ? 7.1ch Dolby APIをサポート、7.1ch 7.1ch ?

RokuはBroadcomチップセットを引き続き採用していると伝えられるので、Raspberry Piと同様のARMv6 + VideoCore4の組合せと考えられる。
FireTVはリリースされた全ての世代でSoCが異なり、それによってGPUも異なる。
Roku以外ではパッドが標準化されているのは良いニュースと言える。PS4のようにモーションコントロールを含んでいるものは無いが、基本的に各社ともXInput準拠の

  1. デジタル方向キー
  2. アナログスティック2本(ボタンなし)
  3. LRボタン
  4. LRアナログトリガ
  5. デジタルボタン x4
  6. "戻る"ボタン

は備えていることになる。FireTVにはコントローラバンドルが有るが、他のプラットフォームでは別売となっている。RokuとAppleTVにはモーションコントローラが同梱されているが、モーションコントローラはこれらの標準ボタンを備えていない。
FireTVとFireTV stickの差はかなり絶妙で、Amazonが提供する独占ゲームであるSev Zeroは、FireTV stickでは動作しない。新FireTVのページでは、Dolby AtmosやDolbyのバーチャルサラウンドをサポートしていることになっているが、FireTV stickにはその記述が無い。Kindle Fire時代はDolbyデベロッパサイト( http://developer.dolby.com/ )に独自の項目が存在したが、現在Fire Tabletの最下位機種はDolby Audio APIをサポートしていないのもあってか、DolbyのサイトにはFireの記述は無い。
FireTVのDolby AtmosはEC3_JOCと書かれているので、Dolby Digital Plus上のJoint Object Codingでエンコードされたサブセット版(〜16objects - AC-4提案の通りとすれば)ということになる。例えば、FireTVをAtmos対応のアンプに繋いだとしても、家庭用Atmosのフルスペックを活用できないと見られる。(サンプルストリームがDolbyのサイトにある - http://developer.dolby.com/support.aspx )
今のところ、AppleTVやAndroidTVでのサラウンドサウンドのサポート状況はあまり明確でない。全てのサラウンド出力はHDMIで行われる。旧FireTVはS/PDIFを持っているが、live encodingが行えない。
(PS4以外の)全てのプラットフォームが、スマートフォンをコントローラとして使用することを一応サポートしている。いわゆるコンパニオンアプリも全てのプラットフォームでサポートされているため、ローカル非対称マルチプレイゲームを実装できる。
AndroidTVは実際のTVに内蔵されているものやNVIDIA Shieldのような独立コンソールなど様々な実装がある。特にNVIDIA ShieldはNexus Playerよりも強力なSoCとHDD、ファンを備えている。

NVIDIAは、ShieldとAppleTV、Roku、NexusPlayer、FireTVとの比較表を作っている。旧AppleTVのベンチマークをどうやったのかとか、FireTVの720pクラウドゲーミングが何を指しているのかは謎だが4K 60fpsの出力はできるという点は際立っている。

パブリッシング

AmazonのストアでFire Tablet用のゲームを買ったけど動かなかった:

同じ問題はサブミッションプロセスを共有しているFireTVでも起こり得る。(このゲームの場合はパブリッシュ時にUnity Web Player版をパッケージしてしまっている)
パブリッシングに対する立場は既存のゲーム機とスマートTVで大きく異なる。ゲーム機はどちらかというと旧世代的、保守的なモデルであり、スマートTVは現状TVのための専用のサブミッションプロセスを事実上持っていない

プラットフォーム XboxOne、PS4 AppleTV AndroidTV FireTV
レーティング 強制 自主 自主(IARC) 自主
サブミッション リージョン別(PS4) グローバル グローバル グローバル
パレンタルコントロール システムグローバル + アカウント固有、UGC制御 システムグローバル?、アカウント固有 アプリ起動制御のみ、システムグローバル
ベータ版 通常アプリ同様 原則禁止、TestFlightは別審査 システムサポートなし システムサポートなし

ゲーム機ではレーティングのないゲームをパブリッシュすることはできない(XBLIGやPSMを除く)。このため、各リージョンのレーティング機関でレーティングを付与される必要がある。
TVで動作するアプリケーションは本質的にマルチユーザアプリケーションであり、スマートフォンのシステムデザインは様々な面で良く適合しない。ユーザはその成長レベルに合わせて規制レベルも調整されるため、アプリケーションが実装すべき規制も、ゲームにローカルで参加しているユーザの最も低いレベルに合わせる必要がある。
例えば、ゲーム機では一般的にUGC(User-Generated Contents - ゲーム製作者ではなくエンドユーザが作成したコンテンツをゲームに導入すること)を禁止できる(e.g. https://twitter.com/reneiyu/status/609997059916042240 )が、マルチプレイヤーアプリケーションでこのような規制を実装するのはそれなりに難しい(途中参加のようなケースをハンドルする必要があるため)。
スマートTVではスマートフォン同様のポリシが適用され、ポリシはおおむね公開されている:

これらのポリシではマルチプレイヤ時の機能性について特に規定していない。
レーティングはプラットフォーム毎に扱いが異なる。Google PlayではIARCを採用しているので、質問票に回答する形の自主審査( https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Rating_Your_Content )となる。