Top/Devel/OculusRift/OculusStoreでの配布方法

OculusStoreでの配布方法 の変更点はてなブックマーク


#ref(head_mount_display.png,around,right,30%);

この記事は、[[Oculus Rift Advent Calendar 2016>http://qiita.com/advent-calendar/2016/oculus-rift]] の18日目の記事です。

~

前日は[[ゆーとVR>http://qiita.com/yutoVR]]さんの、[[ハンドコントローラーでVR日本語入力>http://qiita.com/yutoVR/items/a80bd382f9b52b786a8a]]でした。~
文字入力は色んなアイディアが出てきていて面白いです!

~

~

どうも、VRアプリ開発と電子工作をしている[[きゅーこん>About]]と申します。

さて、この記事では、自作VRアプリのOculus Storeでの配布について、~
拙作の[[Ultra Sushi-Go-Round>Devel/OculusRift/Ultra-Sushi-Go-Round]]の場合のスクリーンショットを交えて書いていきます。

#clear
*はじめに
**自作VRアプリの配布方法
#ref(nimotsu_ukewatashi.png,around,right,60%);
自作VRアプリ、皆さんはどうやって配布していますか?

~

ZIPファイルで配布しても良いのですが、
>
ZIPファイルをダウンロードする~
→ZIPファイルを展開する~
→[[Oculusソフトウェアで、[Unknown Sources]をオンにする>https://support.oculus.com/878170922281071]]~
→アプリを起動する~
<
というのは、意外とハードルが高い気がします。~
また、新しいバージョンをリリースした場合は、再度ダウンロードしてもらう必要があります。

~

では、Oculus Storeでの配布はどうでしょう。

~

Oculus Storeでの配布の場合、[Unknown Sources]を有効にする必要もありませんし、~
バージョンアップもユーザー側のOculusソフトウェアが自動的に行うので、とっても楽チンです。


**Oculus Storeでの配布までのステップと本記事の対象
#ref(zei_shinkoku.png,around,right,60%);
Oculus Storeでの配布までのステップですが、~
アプリの情報を登録し、アプリのバイナリをアップロードすると、配布・販売のための審査を申請できます。

審査を通ると、配布が開始されるという流れです。

~

バイナリについては、[[リリースチャンネル>https://developer3.oculus.com/documentation/publish/latest/concepts/publish-release-channels/]]というものでテストの段階毎に管理していきます。

リリースチャンネルは4段階用意されています。
+ALPHA (アルファ)
+BETA (ベータ)
+RC ([[リリース候補>https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E5%80%99%E8%A3%9C%E7%89%88]])
+STORE (ストア申請用)

~

最後のSTOREにバイナリをアップロードすると審査を申請できますが、~
今回は、ファーストステップとして、~
アルファ版としてテストプレイヤーを募集・追加できるところまでを解説します。~
(というか私自身そこまでしか進んでいない (^^; )

~

なお、[[年末年始は審査を休止する>https://www.facebook.com/groups/1535715303335703/permalink/1812955768944987/]]ようですが、本記事の範囲では問題ありません。

~

さて、それでは手順を見ていきましょう。


*アプリの追加
#ref(dashboard_whats_the_name.png,right,around,nothumb,30%)
+[[ダッシュボード>https://dashboard.oculus.com/]]を開き、ログインする。
+[Create New App]をクリックする。
+[Select a Platform]で、[Oculus Rift]をクリックする。
+[What’s the name of your Rift app?]で、アプリの名称を入力し、[Save and Continue]をクリックする。&br;※.アルファベットかつググラビリティが高いと良い。
#clear

*アプリの各種情報の入力
+[Submission Info]タブをクリックする。
+[Edit]ボタンをクリックする。

**アプリの仕様の入力
#ref(dashboard_specs.png,right,around,nothumb,30%)
+[App Specifications]にて、下記項目を入力する。
|>|項目|備考|h
|What is the app Category?|アプリのカテゴリー||
|How comfortable is this app to use?]|快適性|VR酔い度を入力する。&br;※.ジェットコースター系アプリなど[[視覚誘導性自己移動感覚(ベクション)>https://ja.wikipedia.org/wiki/%E8%A6%96%E8%A6%9A%E8%AA%98%E5%B0%8E%E6%80%A7%E8%87%AA%E5%B7%B1%E9%81%8B%E5%8B%95%E6%84%9F%E8%A6%9A]]を発生させるものは、"あまり快適ではない"を選ぶべきかと思います。|
|Is an Internet Connection Required?|インターネットへの接続が必要か||
|Recommended Professor&br;Recommend Memory&br;Recommend Graphic Card|推奨CPU&br;推奨メモリ量&br;推奨ビデオカード|通常は[[Oculus Rift CV1の推奨スペック>https://www3.oculus.com/en-us/rift/#pc-specification]]を入力する。&br;&br;2016.12.18 23:20追記:&br;Recommended Memory欄は数字のみを入力し、"GB"や"or more"といったような数字以外の文字を記入しないよう注意。|
|Please list the required input devices for this app]&br;[Please list the Supported input devices for this app|必須入力デバイス&br;対応入力デバイス|逆にこの欄を見てから、Oculus Remoteに対応しようとか考えるのもアリかも。|
|What is the Play Area type|プレイエリアのタイプ|MOVEMENTとNO MOVEMENTが選択できるようだが、現時点では入力できず。|
|Please list the supported player modes for this app.|プレイヤーモード|現時点では入力できず。|
|Please list the supported tracking modes for this app.|トラッキングモード|現時点では入力できず。|
|How many users can play this app?|プレイ可能人数||
|Pick up to 5 genres|ジャンル||
|Rating Board|年齢制限|年齢制限について選択する。Gear VR用のアプリの場合は、GRAC(※)の年齢カテゴリも選択する必要がある。&br;※.GRACはGame Rating and Administration Committee(ゲーム物管理委員会)の略称で、&br;韓国の青少年保護法に基づき設置されているコンピュータゲームの公的倫理審査機関。|
|What languages and locales does your app support?|対応言語|テキストボックスに打ち込むと追加することができる。削除は×ボタンで可能。|
+[Save and Continue]ボタンをクリックする。
#clear

**アプリの情報の入力
#ref(dashboard_about.png,right,around,nothumb,30%)
+[About This App]にて、下記項目を入力する。
|>|項目|備考|h
|Do you have a web site for this app?|アプリ用ウェブサイトのURL||
|Who is the publisher?|製作者/会社||
|Privacy Policy URL|プライバシーポリシーのURL|1から書くのは辛いので、例文やジェネレータを使うと便利。&br;ただし、ジェネレータは、生成後の結果を見るのが有料だったり、メアドを求めるやつが多い。&br;私の場合は、それらがない下記ジェネレータでそれぞれ生成してマージ、外部リンクの注意を追記した。&br;-[[Privacy Policy Online &#187; Privacy policy generator>http://www.privacypolicyonline.com/]]&br;-[[Privacy Policy Generator &#8226; NO HIDDEN COSTS &#8226; 100% FREE>http://termsandconditionstemplate.com/privacy-policy-generator/]]&br;できたのは[[これ>http://cubic9.com/PrivacyPolicy/]]。|
|Terms of Service URL|サービス利用規約のURL|私の場合は、[[Privacy Policy Online &#187; Terms of Service Generator>http://www.privacypolicyonline.com/terms-of-service-generator/]]で生成し、一部を書き換えた。&br;できたのは[[これ>http://cubic9.com/TermsOfService/]]。|
|Contact Email|連絡先メールアドレス|Oculus Storeの運用者が連絡する際に利用するもので、公開はされない。|
+[Save and Continue]ボタンをクリックする。
#clear

**翻訳の入力
#ref(dashboard_translations.png,right,around,nothumb,30%)
+[Translations]にて、下記項目を入力する。
|>|項目|備考|h
|What's the name of your app?|アプリ名||
|Short Description|概要説明|Oculus Storeの他のアプリを参考に書くとよい。&br;&br;私が英文を書く場合は、[[Google翻訳>https://translate.google.co.jp/]]を英→日モードにして、英文を書いていきます。&br;書いていくと随時日本語に翻訳されますが、その際違和感がなければ、簡潔な文になっていると判断できます。&br;英単語は[[アルク>http://www.alc.co.jp/]]で調べます。&br;書きあがったら、[[Ginger>http://www.getginger.jp/]]でスペルミスなどを校正して完了です。|
|Full Description|詳細説明||
|Search Keywords|検索キーワード||
+日本語などを追加する場合は[Manage Language]をクリックして追加し、同様に上記項目を入力する。
+[Save and Continue]ボタンをクリックする。
#clear

**画像と映像のアップロード
#ref(dashboard_assets.png,right,around,nothumb,30%)
+[Assets]にて、画像と映像をアップロードしていく。~
結構細かい規定があるのでAsset GuidelinesのPDFを参照すること。~
比率の異なる複数のサイズの画像を作らないといけないのでなかなか大変だが、~
テキストロゴと背景(3000x1440px以上)を別に用意しておくと組み立てやすい。
|>|>|>|項目|必須/任意|サイズ|備考|h
|>|>|Logo|ロゴ|必須|横幅は最大9000px、高さは固定1440px||
|>|>|Icon|アイコン|必須|512x512px||
|Store Cover Art|ストアでの表紙画像|Landscape|横長|必須|2560x1440px (16:9)|下から25%の部分に重要な要素を入れないこと。|
|~|~|Square|四角|必須|1440x1440px (1:1)|下から25%の部分に重要な要素を入れないこと。|
|~|~|Portrait|横長|必須|1008x1440px (7:10)|下から25%の部分に重要な要素を入れないこと。|
|~|~|VR Landscape|VRでの横長|必須|1080x360px (3:1)||
|Product Detail Page (PDP) Art|製品詳細ページ画像|Hero Art|製品詳細ページの表紙画像|必須|3000x900px (10:3)|左右それぞれ23%の部分に重要な要素を入れないこと。|
|~|~|Screenshots|スクリーンショット|必須|2560x1440px (16:9)|通常モニタサイズを超えるスクリーンショットを撮影できないが、Unity製アプリであれば&br;[[【Unity】ディスプレイより大きくてサイズが指定された解像度のスクリーンショットを撮影する - テラシュールブログ>http://tsubakit1.hateblo.jp/entry/2015/06/26/003654]]の方法で撮影できる|
|~|~|Screenshots|スクリーンショット|必須|2560x1440px (16:9)|通常モニタサイズを超えるスクリーンショットを撮影できないが、方法はある。&br;Unity製アプリであれば&br;[[【Unity】ディスプレイより大きくてサイズが指定された解像度のスクリーンショットを撮影する - テラシュールブログ>http://tsubakit1.hateblo.jp/entry/2015/06/26/003654]]の方法で撮影できる。&br;&br;2016.12.18 23:40追記:&br;Unreal Engine 4 であれば&br;[[【UE4】高解像度なスクリーンショットを撮る - 大福未来研究所>http://dfkfuturelab.hatenablog.com/entry/2016/12/18/201102]]の方法で撮影できるらしい。|
|>|>|Video|ビデオ|任意|最低1080p 〜最大2k|最大2分。MP4/H.264/AACでエンコードすること。&br;&br;私の場合は、負荷をあまりかけずに録画して、無劣化で編集したかったので、&br;[[NVIDIA Share(旧ShadowPlay)>https://youtu.be/SfqGDEPqQ0k?t=2m]]で録画して、[[Avidemux>http://www.gigafree.net/media/me/avidemux.html]]で編集しました。|
+[Save and Continue]ボタンをクリックする。
#clear

**希望小売価格の入力
#ref(dashboard_pricing.png,right,around,nothumb,30%)
+[Pricing & Distribution]にて、下記項目を入力する。~
MSRPとはManufacturer's Suggested Retail Priceの略で、メーカー希望小売価格を示す。~
なお、売上を受け取る場合は、ダッシュボードのホームに戻り、[Payment Info]を登録する必要があるはず。~
|>|項目|備考|h
|MSRP Currency|希望小売価格の通貨||
|MSRP Amount|希望小売価格の金額|審査時にOculus VR側から推奨価格が提示される可能性があるとのこと。|
+[Save and Continue]ボタンをクリックする。
#clear

*アプリのバイナリの管理
**アプリのバイナリのアップロード
#ref(dashboard_builds.png,right,around,nothumb,30%)
+[Builds]タブをクリックする。
+[Upload Build]ボタンをクリックする。
+[Upload new binary to the ALPHA channel]にて、[Choose file]ボタンをクリックする。
+ファイル選択ダイアログにて、バイナリが圧縮されたZIPファイルを選択する。
+下記項目を入力する。
|>|項目|備考|h
|Version|バージョン||
|Launch File|起動ファイル|アプリ起動時に実行するexeファイルへのパスを指定する。|
|Launch Parameters|起動パラメータ|前項目の起動引数。必要なければ入力しなくてよい。|
|2D mode (non-VR)|2Dモード|非VRモードの有無|
|Launch File (2D mode)|起動ファイル||
|Launch Parameters (2D mode)|起動パラメータ||
|Redistributables|再頒布可能|実行時にC++の再頒布可能パッケージなどの各種ランタイムが必要であれば選択する。|
|Firewall Exceptions|ファイアウォール例外|ファイアウォールの例外として設定する必要がある場合は有効にする。&br;拙作の[[Mikujalus>Devel/OculusRift/Mikujalus]]などでは必要なはず。|
|Minimum Windows Version Required|最低限必要なWindowsのバージョン|2016.12.18 23:20追記:&br;アップロード時、最低OSバージョンを8や10にすると、それに満たないOSではダウンロードすら出来なくなる&br;(つまり、ここのOS指定は「推奨」ではなく「必須」を意味する)事に注意。|
+[Upload]ボタンをクリックする。
#clear
#ref(dashboard_builds2.png,right,around,nothumb,30%)
#clear


**テストユーザーの追加
#ref(dashboard_add_user.png,right,around,nothumb,30%)
+[Build]タブをクリックする。
+[Subscribed Users]の右側の"+"ボタンをクリックする。
+[Add users by unsername...]にカンマ区切りでテストユーザーのOculus IDを入力する。
+[I agree...]を有効にする。
+[Add Users]ボタンをクリックする。

~

ユーザー側に招待が飛ぶので、承認されるとアプリのダウンロードが開始されます。

~


これで完了です!お疲れさまでした! :)

#clear

*おわりに
今回はアルファ版の配信方法までを解説しました。

~

以降は[Actions]で他のチャンネルにコピーし、最終的にSTOREにコピー
((直接STOREにアップロードすることもできます))した後に、~
審査を申請することになります。

~

もし審査に落ちてしまっても、~
「[[審査の結果として、Storeには掲載されないがキーの発行は可能、という状態になる事もあります。>https://www.facebook.com/groups/1535715303335703/permalink/1799043777002853/]]」とのことなので、~
申請してみる価値はありそうです。~
("キー"はOculus Keysという機能で発行可能なダウンロード用のコードで、Store外での販売もできる。詳細は[[公式>https://developer3.oculus.com/documentation/platform/latest/concepts/dg-cc-keys/]]参照。)

~

いいVRアプリを作って、世界中の方に体験してもらいましょう! :)

~

~
P.S. ~
[[Ultra Sushi-Go-Round>Devel/OculusRift/Ultra-Sushi-Go-Round]]のテストをしてもよいという方がいらっしゃったらOculus IDを[[DMにてご連絡ください。>https://twitter.com/cubic9com]]~
(今のところそこそこ酔います。全然いいアプリじゃないじゃん! (^^; )

~
~

明日(12/19)は、[[n_ryota>http://qiita.com/nryota]]さんの「Oculus TouchでUnityちゃんの指を動かして遊ぼう」です。~
楽しみです!

*参考
-[[アプリ配信ガイド(PDF)>http://static.oculus.com/documentation/pdfs/ja-jp/publish/latest/publish.pdf]]
-[[Publishing Guide - Developer Center &#8212; Documentation and SDKs | Oculus>https://developer3.oculus.com/documentation/publish/latest/]]

*Amazon
#amazon(B01DHKBVQQ,left)
#amazon(B01AJDQB6E,left)
#amazon(B01AJDQ5AQ,left)
#amazon(B01LXP26V0,left)
#amazon(B00WMCTJW4,left)
#amazon(4798137464,left)
#amazon(B012VRQX4G,left)
#amazon(4081022283,left)
差分 一覧