任天堂は CTR の本体システム開発当初から、カードアプリとして開発されたソフトがそのままニンテンドーeショップでも販売できるようにすることを目指してきました。このため、CTR-SDK はカードアプリとダウンロードアプリでコードを書き分ける必要性を極力排除してデザインされており、ガイドラインにおいてもアプリケーションへの要請事項は可能な限りカードアプリとダウンロードアプリで共通になっています。
この章では、同一のアプリケーションをカードアプリとダウンロードアプリの両方で販売できるようにする(併売対応する)ための手順を、新規に開発するカードアプリを併売対応するケースと、発売済みのカードアプリをダウンロードアプリとして販売するケースに分けて説明します。また、アプリケーションの修正が必要になった場合の手順も説明します。
ダウンロードアプリ (cia) としてマスター提出した場合は、後からカードアプリとして販売を依頼することが出来ません。併売をご検討の場合はカードアプリ (cci) としてマスター提出するようにお願いします。
8.1. 新規に開発するカードアプリを併売対応するケース
ダウンロード版との併売に対応したカードアプリの新規開発は、基本的に通常のカードアプリを開発する場合と同じ手順で行います。ここでは、開発手順の中で留意すべき情報を説明します。
8.1.1. 企画段階
同一タイトルのカードアプリとダウンロードアプリは「販路の異なる同一の商品」という扱いです。カードアプリとダウンロードアプリで挙動が異なることがないようにしてください。
カードアプリとダウンロードアプリで挙動に違いを出したい場合は、弊社窓口までご相談ください。
また、許可を得て挙動に違いをつける場合は、マスター提出時のチェックシートの「弊社承認仕様」に挙動の違いを具体的に記載する必要があります。
8.1.2. 取得する製品コードとユニーク ID
併売対応のアプリケーションでは、カードアプリ用の製品コードとユニーク ID をカードアプリとダウンロードアプリの両方で使用します。パッケージ販売用とダウンロード販売用の 2 種類の製品コードおよびユニーク ID を取得しないように注意してください。
例: カードアプリ用の製品コード「CTR-P-AAAJ(JPN)」を取得した場合は、ダウンロードアプリの製品コードも「CTR-P-AAAJ」としてください。ダウンロードアプリを意味する「CTR-N-AAAJ」は使用しません。
なお、製品コードに限り、実際の商品を管理する場合などに、ダウンロード版の製品コードを読み替えて(上記の例の場合は「CTR-N-AAAJ」と読み替えて)運用しますが、ソフト制作とマスター提出に関しては、「同じ製品コードとユニーク ID」と考えていただいて問題ありません。
8.1.3. 電子取扱説明書
必ず、カードアプリとダウンロード共通の電子取扱説明書を添付してください。
電子取扱説明書の作成には、「電子説明書制作マニュアル Part2:テンプレート編集」の最新版を使用してください。
8.1.4. セーブデータ、追加データ
1 台の本体で同一タイトルのパッケージ版とダウンロード版をプレイした場合、セーブデータについてはそれぞれ個別のデータ(パッケージ版はゲームカード内のバックアップメモリ、ダウンロード版は SD カード)にアクセスしますが、追加データ(拡張セーブデータ)については、双方が共通(同一)の追加データにアクセスすることになります。この状況にアプリケーションがどのように対応すべきかは、以下のように考えてください。
上述の状況は、同一タイトルの複数のゲームカードを 1 台の本体でプレイした場合にも発生します。ダウンロード販売に対応するかどうかに関わらず、カードアプリはこの状況で致命的な不具合が発生しないよう対応しているはずですので、これができていれば、ダウンロード販売のために追加で対応すべきことはありません。
「パッケージ版を所持していたユーザーが後日ダウンロード版を購入した際に、セーブデータを移行できる」といった特別な対応をアプリケーションで行う必要はありませんが、もしパッケージ版同士でデータ移行する機能などを実装している場合は、同等のサービスがパッケージ版とダウンロード版の間でも享受できることを確認してください。
8.1.5. セーブデータの巻き戻しについて
カードアプリの場合はユーザーの操作でセーブデータを以前の状態に巻き戻すということはできませんが、ダウンロードアプリの場合は PC を用いれば簡単に実現できてしまいます。セーブデータを保存したいタイミングで SD カードの内容すべてを PC にバックアップし、ゲームを進めたあとに PC にバックアップしたデータを SD カードに書き戻すことで、巻き戻しを実現できます。
SetSaveDataSecureValue()
と VerifySaveDataSecureValue()
(または VerifySaveDataSecureValueLoosely()
)を用いることで、アプリケーションはセーブデータが巻き戻されたことを検出できます。カードアプリから呼ばれた場合、SetSaveDataSecureValue()
は何も行わず、VerifySaveDataSecureValue()
と VerifySaveDataSecureValueLoosely()
は常に true
を返します。つまり、カードアプリとして動作する場合は何も起こりませんので、これらの関数はダウンロード販売に対応したカードアプリでも使用することができます。
ゲームの企画上、セーブデータの巻き戻しがゲームバランス等に致命的な影響を与える場合は、これらの関数の使用をご検討ください。ただし、「巻き戻りを検出した際はセーブデータ全体を使えないようにする」というように、ユーザーに対して致命的なペナルティを設ける場合は以下のケースも想定されますので、ユーザーへの伝え方とサポート対応も十分に考慮の上、アプリケーションの仕様を決定してください。
- 巻き戻しに対してペナルティがあることを知らずに、データを PC にバックアップし、SD カードにある最新の
SetSaveDataSecureValue()
で記録した値に対応したデータを削除してしまった場合
ほかのゲームソフト(巻き戻し対策をしていないダウンロードアプリ)ではこのような操作を行っても問題が生じないため、やってはいけないことと認識されないまま、データを失ってしまう危険性があります。
- 本体修理で、SD カードのセーブデータはそのまま使えるよう救済できたが、本体保存メモリ内のデータは救済できなかった場合
SetSaveDataSecureValue()
で記録した値が失われ、セーブデータ内の値との整合性が取れなくなります。このような状況では、VerifySaveDataSecureValue()
を用いていた場合はペナルティが発動してしまいますが、VerifySaveDataSecureValueLoosely()
を用いていた場合はtrue
を返しますので、修理前に SD カードに入っていたセーブデータを使用することができます。ただし、修理前の SD カードに入っていたセーブデータが巻き戻しされたデータである可能性はありますので、企画の面からこれが許容できるかを判断してください。
8.1.6. ゲーム内の表記、表示
ゲーム中のテキストメッセージや権利表記などは、ユーザーがカードアプリまたはダウンロードアプリのどちらで遊んでいても問題のないものにしてください。
以下は、カードアプリとダウンロードアプリの違いを考慮すべきゲーム内メッセージの一例です。
- 記録媒体の違い
カードアプリでは、ゲームカードにソフトとセーブデータが保存されています。
ダウンロードアプリでは、SD カードにソフトとセーブデータが保存されています。
ゲーム内メッセージの良い例と悪い例:
×:「セーブ中です。ゲームカードを抜かないでね。」
○:「セーブ中です。ゲームカード/SDカードを抜かないでね。」
○:「セーブ中です。カードを抜かないでね。」
- 同梱印刷物の有無
カードアプリには操作説明シートなどの印刷物が付属していますが、 ダウンロードアプリにはこれらの印刷物が付属していません。
ゲーム内メッセージの良い例・悪い例:
×:「操作方法は付属の操作説明シートを見てね。」
○:「操作方法は電子説明書を見てね。」
○:「操作方法はゲーム内のヘルプを見てね。」
なお、ダウンロードアプリの場合とカードアプリの場合とを区別してユーザーに情報を伝えたい場合は、
ダウンロードアプリ → ダウンロード版
カードアプリ → パッケージ版
のように、ユーザー向け用語を使用してください。
8.1.7. ダウンロードプレイ
3DS のダウンロードプレイでは、親機側がカードアプリの場合はダウンロードプレイのシーケンス内でローカル通信を経由した本体更新(DUP)が行われますが、親機側がダウンロードアプリの場合は DUP ができない仕様となっています。そのため、子機側本体のファームウェアバージョンが要求されるバージョンよりも古い場合、事前に本体更新がなされている必要があります。
このことをユーザーに適切に伝えるために、以下のいずれかの方法を実施してください。
- ダウンロードプレイの親機となる場合、子機を受け付けている間またはそれ以前のタイミングで、以下のメッセージを表示する。
「通信相手側に『本体の更新が必要です』と表示された場合は、ダウンロードプレイで遊ぶことができません。
通信相手側は『キャンセル』を選び、『本体設定』から本体の更新をしてください。『OK』を選んでも本体は更新されません。」
上記メッセージが長すぎて表示できない場合は、最低限「システムバージョンが古い本体とはダウンロードプレイできない」旨を表示してください。
メッセージは、nn::dlp::Server(WithName)::Initialize()
の引数pNotice
にtrue
がセットされていた場合のみ表示してください。引数pNotice
がfalse
となるのは、自身がカードアプリで DUP が可能な場合か、将来のシステムアップデートでダウンロードアプリでも DUP が可能になった場合です。
- 電子取扱説明書で、子機の本体更新が必要になる場合があることを説明する。
「電子説明書制作マニュアル Part2:テンプレート編集」に参考文例が入っています。
8.1.8. メディアへのアクセス速度
一般的に、記録メディアのアクセス速度に依存した実装を行うべきではないことはガイドラインの「ファイルシステム」にも記載されていますが、開発中のカードアプリをダウンロードアプリとして動作させた際に、ROM やセーブデータへのアクセス速度に差があることに留意してください。
ROM データのリード速度にはゲームカードと SD カードとの間で顕著な差はありませんが、ゲームカードのバックアップメモリに比べ、ダウンロードアプリのセーブデータへのリードおよびライトは格段に速くなります。
アクセス速度についての詳細な情報については、「3DS パフォーマンス TIPS」を参照してください。
ROM データへのアクセスと追加データ(SD カード)へのアクセスを同時に行っている場合、カードアプリではアクセス先がそれぞれ別のメディアになりますが、ダウンロードアプリではアクセス先が共に SD カードになるため、同じ処理にかかる時間などに違いが出る可能性がありますのでご注意ください。
ファイルアクセスの優先度を設定することができます(「3DS プログラミングマニュアル - システム編」の「アクセス優先度の設定」参照)。たとえば、SD カードにあるストリーミングデータに対して高い優先度を設定しておかないと、カードアプリでは問題ないがダウンロードアプリではストリーミングが滞るといったことが起こる可能性があります。
8.1.9. アプリバイナリの生成(ビルド)
マスター提出時に CCI ファイル(カードアプリ用バイナリ)のみを提出いただく形となりますので、これまでのカードアプリと同じようにビルドを行ってください。
ダウンロードアプリとしての動作確認は、CCI ファイルを CIA ファイルに変換したものを SD カードにインポートして行ってください。
CCI ファイルを CIA ファイルに変換するには makecia で -cci オプションを使用してください。
変換された CIA ファイルが正しく CCI ファイルから生成されたものかを確認するには MasterEditor を使用します。具体的には、CCI ファイルと CIA ファイルの対応する CXI タブと CFA タブ(複数ある場合はすべて)にある、「ハッシュ値(CRC32)」欄の「コンテンツ全体」の値がそれぞれ等しいかどうかで確認します。
8.1.10. デバッグ
カードアプリとダウンロードアプリの両方でデバッグを行ってください。今までのデバッグ量の倍のデバッグを行っていただく必要はなく、デバッグに使用する本体のうちの何割かでダウンロードアプリのデバッグを行うようにしてください。
1 つの本体でカードアプリとダウンロードアプリの両方が動作するケースも、カードアプリのデバッグで複数のカードが 1 つの本体で動作することを確認するのと同様にデバッグしてください。
デバッグの際には、開発実機に同梱されている SD カードまたは任天堂純正の SD カードでの確認を必ず行ってください。
ガイドラインの「ファイルシステム」内にある「各メディアへのアクセス速度」を参照してください。
8.1.10.1. セーブデータの流用
CTR-SDK に付属している SaveDataFiler を使用することで、カードアプリのセーブデータを SD カードに書き出し、それをダウンロード版で読み込むことができます。
8.1.11. マスター提出
マスターデータ提出の手順は通常のカードアプリと変わりません。カードアプリとダウンロードアプリで同一のマスターデータ(CCI ファイル)を提出してください。ダウンロード販売用に CIA ファイルを別途提出する必要もありませんし、パッケージ版とダウンロード版それぞれで提出パッケージを作成する必要もありません。
提出の際は、CTR MasterEditor を用いて、「アプリの用途」に「一般販売」を選択し、「カード販売する」と「ダウンロード販売する」の両方にチェックを入れてダウンロード販売対応である旨を明示してください。なお、併売可能なアプリケーションとして提出するが、直ちにカード生産を行わずにダウンロード販売を先行したい場合は、あらかじめ弊社窓口にご連絡ください。
弊社の許可を得てカードアプリとダウンロードアプリで挙動に違いをつけた場合は、提出するチェックシートの「弊社承認仕様」の欄に挙動の違いを具体的に記載してください。
8.2. 発売済みのカードアプリをダウンロードアプリとして販売するケース
すでに発売されているカードアプリをダウンロード版との併売に対応させるには、多くの場合、電子取扱説明書を新規に追加するだけで済む可能性があります。ここでは、開発手順の中で留意すべき情報を説明します。
8.2.1. SDK バージョン
カードアプリとして提出していたマスター ROM をダウンロードソフトとして使用する場合、もしくは、変更が電子取扱説明書の追加または差し替えのみの場合は、現時点での「マスター提出可能な SDK バージョンについて」のルールは不問になります。つまり、SDK のバージョンは当時のままで問題ありません。
何らかの変更を行ったためにリビルドする必要がある場合は、弊社窓口までご相談ください。ただし、変更内容が以下の場合は、SDK バージョンは当時のままで問題ありません。
- 一部のメッセージ・表示の変更などの軽微な修正
- 既にリリースされているパッチと同内容のリマスター
なお、変更を加えてリビルドを行った場合は必ず、ロットチェックに合格した前回バージョンとの違いを具体的に記載した変更履歴を提出してください。
8.2.2. 電子取扱説明書
原則として、「電子説明書制作マニュアル Part2:テンプレート編集」の最新版に記載されている即時対応が必要な項目に対応している必要があります。必要に応じて説明書を新規作成または改訂し、「CTR ROM エディタ」を用いて、発売済みのバイナリに添付または差し替えを行ってください。説明書の添付により ROM サイズがアプリケーションの使用可能な領域サイズを超過してしまう場合は、メディアサイズも合わせて変更してください。
電子取扱説明書 | 必要な変更 |
---|---|
なし | 電子取扱説明書を新規に作成し、添付してください。 |
あり | 移行期間を問わず、全体の差し替えは不要です。発売当時の該当するバージョン以降の、即時対応が必要な箇所のみ差し替えてください。 |
現在、「電子取扱説明書制作マニュアル」は「CTR 電子説明書テンプレート集」に同梱されており、名称が「電子説明書制作マニュアル」に変更されています。
8.2.3. セーブデータの互換性について
併売対応時にアプリケーションの修正を行う場合や、カードアプリとして販売されているバージョンが改訂により複数存在する場合は、以下の点に注意してください。
販売されたカードアプリのいずれかのバージョンと、配信されるダウンロードアプリの間でセーブデータに互換性がない場合、セーブデータ移動ツールで移動したセーブデータが使用できないという致命的な問題が生じてしまいます。これに該当する場合は必ず弊社窓口までご連絡ください。セーブデータ移動ツールによって当該ソフトのセーブデータが移動できないように、弊社にて対応します。
8.2.4. セーブデータの巻き戻しについて
「8.1.5. セーブデータの巻き戻しについて」で説明した通り、ダウンロードアプリでは、ユーザーが PC を用いて SD カードのデータを操作することで、カードアプリのときには発生しなかったセーブデータの巻き戻りを起こすことができます。セーブデータの巻き戻りが生じてもゲームバランスが破綻しないか、企画の面から確認してください。
8.2.5. ゲーム内の表記、表示
ゲーム中のテキストメッセージや権利表記などが、ダウンロード販売する際に問題ないかを確認してください。
アプリケーションに変更がない場合、表記・表示に問題がないかの確認を改めて弊社が行うことはありません。
8.2.6. ダウンロードプレイ
ダウンロードプレイの挙動は「8.1.7. ダウンロードプレイ」で説明しています。ダウンロードプレイに対応したアプリが、8.1.7 項に記載されているメッセージ表示を行っていない場合は、電子取扱説明書への記載で対応してください。
8.2.7. 動作確認
ダウンロードアプリとして SD カードから実行した場合でも、不具合などが起こらないことを確認してください。
「8.1.4. セーブデータ、追加データ」、「8.1.8. メディアへのアクセス速度」、「8.1.9. アプリバイナリの生成(ビルド)」に記載されている点にも留意してください。
8.2.8. マスター提出
「CTR マスターROM提出手順書」にのっとり、電子取扱説明書が添付された CCI ファイルを再提出してください。
提出の際は、CTR MasterEditor を用いて、「アプリの用途」に「一般販売」を選択し、「カード販売する」と「ダウンロード販売する」の両方にチェックを入れてダウンロード販売対応である旨を明示してください。
必要な提出物と付与すべきバージョンは下表の通りです。
提出物 | バージョン | |||||
---|---|---|---|---|---|---|
マスターデータ 提出確認書 |
マスター ROM |
チェック シート |
変更履歴 | リマスター バージョン |
提出 バージョン |
|
マスター ROM データが前回提出時と全く同一の場合 | 必要 | 不要 | 不要 (*1) | 不要 | 前回と同じ | 前回と同じ |
説明書の追加または差し替えのみの場合 | 必要 | 必要 | 不要 (*1) | 必要 | 前回と同じ | 前回 + 1 |
アプリが変更されている場合 | 必要 | 必要 | 必要 | 必要 | 前回 + 1 | 0 |
(*1) カードアプリとダウンロードアプリで挙動に違いをつけていて、前回の提出書類にその旨が記載されていない場合は、「弊社承認仕様」の欄に挙動の違いを具体的に記載してチェックシートを提出してください。また、以下に該当するタイトルで前回の提出書類にその旨が記載されていない場合は、チェックシートを再提出してください。
- セーブデータ巻き戻し防止支援関数を使用するタイトル
- ほかのアプリケーションのセーブデータにアクセスするタイトル
提出物の作成には、基本的に最新バージョンの MasterEditor およびチェックシートエディターを使用してください。
ただし、最新バージョンの MasterEditor を使用すると以下のことが原因でエラーが発生することがあります。このエラーは、修正によるリビルドを行っていないのであれば無視してもかまいません。
- 長いタイトル、短いタイトル、パブリッシャー名について、値が設定されている項目と設定されていない項目が混在している。
8.3. アプリケーションの修正が必要になった場合
パッケージ版とダウンロード版の併売に対応したアプリケーションに対して、修正を行った場合に必要な手順を説明します。
修正は、基本的にはパッチによる対応を推奨します。詳しくは「3DS オーバービュー」の「パッチとは」を参照してください。
擬似クライアントを利用するタイトルを修正する場合は、リマスターバージョンの異なる擬似クライアントが DLP サーバーに接続する場合について配慮する必要があります。
詳しくは「パッチマニュアル」の「疑似クライアント機能」を参照してください。
8.3.1. 配信開始後に修正が必要になった場合
原則として、パッチを作成して提出してください。改訂版は提出不要です。
カードの再生産予定があり、修正内容を適用した改訂版を生産したい場合に限り、改訂版を提出してください。このときマスター提出確認書の「アプリの用途」欄は「カード販売する」のみにチェックを入れてください。このマスター ROM はカード生産用にのみ使用され、ニンテンドーeショップでは配信されません。
修正が必要なほとんどの場合をパッチで対応できますが、パッチで対応できないケースが生じた場合は、併売用として改訂版を提出してください。このときマスター提出確認書の「アプリの用途」欄は「カード販売する」と「ダウンロード販売する」の両方にチェックを入れてください。
説明書の改訂やダウンロードプレイの子機プログラムの修正もパッチで対応できます。
8.3.2. 発売済み、かつパッチをリリース済みのカードアプリを配信する場合
パッチ未適用の内容(カードで販売されているものと同内容)にて、「8.2. 発売済みのカードアプリをダウンロードアプリとして販売するケース」に記載されている手順に沿って併売対応し、再提出いただいて問題ありません。ただし、ダウンロードアプリにパッチを適用した場合でも正しく動作することを確認してください。
改訂版を提出いただいても問題ありません。