Applications that use Internet communication must comply with all the guidelines listed in this chapter.
6.1.1 Development Environment (Libraries and Restrictions on Their Use)
It is prohibited to use your own independent network libraries or the SSL, HTTP, or socket libraries included in the CTR-SDK. It is also prohibited to use any functions that are not documented in the CTR-NEX, CTR-Pia, or CTR-SDK Function Reference Manuals.
This is prohibited because Nintendo checks CTR-NEX and CTR-Pia for compatibility with the system, security, and other factors before providing them to developers. These guarantees cannot be maintained if developers communicate with a server independently or use an independent network library.
However, if you wish to use features not provided by CTR-NEX or CTR-Pia (features not documented in their Function Reference Manuals), or if you want to use the CTR-SDK's SSL, HTTP, or socket libraries (to communicate with an independent server or for some other reason), your request may be approved pending a review of your plans and specifications. Consult with support@noa.com if you are considering any plans similar to those described here.
Since you must use the following socket library initialization/finalization functions in order to use NEX or Pia, they are exempt from this section.
- nn::socket::Initialize function
- nn::socket::GetRequiredMemorySize function
- nn::socket::Finalize function
Likewise, since you must use the following http library initialization/finalization functions in order to use the NEX storage server or Miiverse, they are exempt from this section.
-
nn :: http :: Initialize function
-
nn :: http :: Finalize function
Use the most up-to-date library versions possible. They are available from Nintendo Developer Portal.
6.1.1.1 Checking the Development Environment
Guideline Item |
Applications must not use the following libraries or functions in the development environment.
|
---|---|
Software to Be Tested |
Applications that support Internet communication. |
Test Method |
Check the source code. |
Pass/Fail Determination |
Passes if only functions documented in the CTR-NEX or CTR-Pia Function Reference Manuals are used, and furthermore, the CTR-SDK ssl, http, and socket libraries, private functions, and independent network libraries are not used.
Note: It is acceptable to use the following initialization and finalization functions from the http library when using NEX storage features or Miiverse.
|
6.1.2 Connection Environment (Verification on Recommended Hardware)
A list of verified Internet connection devices is available on Nintendo's home page.
- URL for List of Verified Internet Connection Devices
http://wifi.nintendo.co.jp/information/router/index.html
No required guideline items.
6.1.3 Supporting the EULA During Internet Communication
Users must agree to the Nintendo 3DS Service User Agreement (the “EULA”) in order to use Internet communication on a Nintendo 3DS system.
Note that a user may be required to agree to the EULA more than once. Specifically, a user must agree to the EULA again when the EULA's major version changes, when the Nintendo 3DS system's country setting changes, and when the Nintendo 3DS is initialized (system memory is formatted). Once the user has agreed to the EULA, the state of the EULA does not change while an application is running.
Users do not need to agree to the EULA in order to use local communication.
■ When Wireless Features Are Required
Users must agree to the EULA in order to use the Internet browser and other applications that require Internet communication features or rely heavily on them for gameplay. If your application falls into this category, Nintendo recommends setting the AgreeEula flag in the BSF file to True when you use ctr_makebanner to create the banner file for your application. If you set the AgreeEula flag to True, starting the application from the HOME Menu causes the system to check the EULA agreement status. If the user has not accepted the EULA, the system automatically begins the agreement procedure. The application will not start until the user agrees to the EULA.
■ Support for When the User Has Not Agreed to the EULA
The EULA agreement state can be verified by using the nn::cfg::CTR::IsAgreedEula function. If the user has not agreed to the EULA when CTR-NEX is used for Internet communication, the library returns an error meaning that the user has not agreed to the EULA. (The return value differs depending on the function used.)
If it is determined that the user has not agreed to the EULA, either start the EULA agreement sequence using the error/EULA applet, or display a predetermined error message. When starting the EULA agreement sequence, be sure to consider the possibility that the user will not agree to the EULA. It is acceptable to display a predetermined error message when the user does not agree to the EULA in the EULA agreement sequence.
Display error 003-0399 for the predetermined error message. Comply with section 6.3.1 Displaying Errors During Internet Communication when displaying the error. If possible, for the user’s convenience, determine whether the user has agreed to the EULA before Internet communication starts and, if the user has not agreed to the EULA, start the EULA agreement sequence.
Except for the EC library in the SDK, CTR-SDK and CTR-NEX functions will never return the error code 003-0399.
If the nn::cfg::CTR::IsAgreedEula function was used beforehand to obtain whether the user has agreed to the EULA, it is acceptable to simply handle the situation by displaying the message for error code 003-0399 from the Error Code List.
If using SpotPass, see section 6.14.8 Complying with the EULA During SpotPass Communication.
6.1.3.1 Handling Internet Communication When the User Has Not Agreed to the EULA
Guideline Item |
The application must either invoke the EULA agreement sequence or display a predetermined error message if the user attempts to start Internet communication without having agreed to the EULA. |
---|---|
Software to Be Tested |
Applications that support Internet communication. |
Exceptions |
When using SpotPass. |
Test Method |
Start Internet communication on a system on which the EULA has not been agreed to. |
Pass/Fail Determination |
Passes if the attempt to start Internet communication is handled in either of the following ways.
|
6.1.4 Internet Communication-Related Parental Controls
There are various Parental Controls items covering use of Internet communication features. Each restricts a specific feature available to applications, so take care to restrict the correct features, while avoiding restricting those that should not be restricted.
- Online Interaction
If this has been restricted by Parental Controls, the login process to the friend server (the call to nn::friends::Login) returns an error indicating that this is the case.
If your application is an independent server title that exchanges data with other players, your application must either check for this Parental Controls restriction or use the PIN code to temporarily lift it.
For specific methods of handling this, see the descriptions of getting authentication tokens (nn::nex::IndependentServer::RequestAuthenticationToken function) and getting service tokens (nn::act::applet::AcquireIndependentServiceToken and nn::act::applet::AcquireIndependentServiceTokenV2 functions).
If an error occurs, get the error code and handle it in compliance with section 6.3.1 Displaying Errors During Internet Communication. - Friend Registration
If this has been restricted by Parental Controls, then friends library functions related to registering friends return an error indicating that this is the case. If an error occurs, use the nn::friends::CTR::ResultToErrorCode function to get the error code, and then handle it in compliance with section 6.3.1 Displaying Errors During Internet Communication. - Miiverse
This Parental Controls item allows the user to choose one of three levels of restriction: "Restrict Viewing & Posting," "Restrict Posting," or "Do Not Restrict."
If the user has selected "Restrict Viewing & Posting," the nn::olv::Initialize function returns an error indicating that this item is restricted by Parental Controls. If the user has selected "Restrict Posting," the nn::olv::Upload* functions return an error with the same meaning.
If an error occurs, use the nn::olv::GetErrorCode function to get the error code, and then handle it in compliance with section 6.3.1 Displaying Errors During Internet Communication.
- It is acceptable for your application to not display a message if your application handles restriction of Miiverse by Parental Controls by never displaying Miiverse-related options to the user at all, or by disabling such options so that the user cannot select them.
If your application uses the nn::cfg::CTR::IsRestrict* functions and determines beforehand that a feature is restricted by the Online Interaction, Friend Registration, or Miiverse items of Parental Controls, handle the error in compliance with section 6.3.1 Displaying Errors During Internet Communication even if no communication is currently occurring. Alternatively, display the following or an equivalent message: "<Feature name> is restricted by Parental Controls."
- Sharing Images / Audio / Video / Long Text Data
This Parental Controls item restricts the sending and receiving of data that might contain personal information, such as photographs, other images, audio, video, or long text. See volume 7 UGC for details. Note that this only restricts the sending and receiving of data that might contain personal information, and as such, this does not restrict the sending and receiving of any data not created by the user. For example, this does not restrict the sending and receiving of screenshots taken by an application. - Viewing Distributed Videos
This Parental Controls item restricts viewing of distributed videos not approved for all ages. As stated here, the term "distributed videos" refers to video content which is distributed via video-on-demand services or similar services, and which is not subject to software ratings. Note that using Nintendo eShop to distribute a patch that includes video is not restricted by this Parental Controls item.
Because no library function returns an error when this item is restricted, it is the application's responsibility to check the status of System Settings and handle this setting appropriately. Specifically, if the application is able to play distributed videos that are not approved for all ages and the Parental Controls item Viewing Distributed Videos is restricted, the application must display "The viewing of distributed videos has been restricted by Parental Controls" or a similar message before playing videos not approved for all ages, and must restrict playback of such videos.
Nintendo does not specify what method you must use to restrict the feature. You could restrict playback by simply not playing videos not approved for all ages, by not allowing the user to proceed to the video playback screen for any videos, or by some other method. Use a method appropriate to the design of your application.
Nintendo plans to provide a function in future CTR-SDK versions to obtain whether Viewing Distributed Videos is restricted or not. If you need such a feature before then, please contact Nintendo at support@noa.com.
6.1.4.1 Handling of Parental Controls Item 'Online Interaction'
Guideline Item |
Independent server titles must check Parental Controls when getting an authentication token. |
---|---|
Software to Be Tested |
Applications that use independent servers. |
Exceptions |
|
Test Method |
|
Pass/Fail Determination |
Passes if the application displays the error in compliance with section 6.3.1 Displaying Errors During Internet Communication. |
6.1.4.2 Handling of Parental Controls Item 'Viewing Distributed Videos'
Guideline Item |
When Viewing Distributed Videos is restricted in Parental Controls, applications must display "The viewing of distributed videos has been restricted by Parental Controls" or a similar message at some point before playing videos not approved for all ages, and must then restrict playback of such videos. |
---|---|
Software to Be Tested |
Applications that allow playback of distributed videos not approved for all ages. |
Test Method |
|
Pass/Fail Determination |
Passes if the application displays "The viewing of distributed videos has been restricted by Parental Controls" or a similar message at some point before playing the video not approved for all ages, and then restricts playback of the video. |
6.1.5 Displaying the Signal Strength
Nintendo 3DS applications do not need to provide their own feature for displaying the signal strength. Users can look at the HOME Menu and wireless LED at any time to check the signal strength and wireless communication status. You can use the signal-strength icons provided by Nintendo, or applications that display a signal strength icon can use their own unique way of conveying this information.
No required guideline items.
6.1.6 Internet Communication With Non-Nintendo Platforms
Applications must not communicate either directly or indirectly (for example, via a server) with a non-Nintendo platform.
If you have such plans, please contact Nintendo at support@noa.com.
6.1.6.1 Prohibition of Direct or Indirect Internet Communication with Non-Nintendo Platforms
Guideline Item |
The application must not communicate either directly or indirectly with non-Nintendo platforms. |
---|---|
Software to Be Tested |
Applications that support Internet communication. |
Test Method |
Check the following.
|
Pass/Fail Determination |
Passes if the following two conditions are met.
|
6.1.7 Internet Communication With Applications from Other Companies
Applications must not communicate either directly or indirectly (for example, via a server) with other companies' applications.
If you have such plans, please contact Nintendo at support@noa.com.
6.1.7.1 Prohibition of Direct or Indirect Internet Communication with Other Companies' Applications
Guideline Item |
Applications must not communicate either directly or indirectly with other companies' applications. |
---|---|
Software to Be Tested |
Applications that support Internet communication. |
Test Method |
Check the following.
|
Pass/Fail Determination |
Passes if the following two conditions are met.
|