CTR Pia
4.11.3
Game Communication Engine
|
The content of this document is highly confidential and should be handled accordingly.
The contents of this document cannot be duplicated, copied, reprinted, transferred, distributed, or loaned, in whole or in part, without the prior approval of Nintendo.
This document contains confidential and proprietary information of Nintendo and is also protected under the copyright laws of the United States and foreign countries. No part of this document may be released, distributed, transmitted, or reproduced in any form or by any electronic or mechanical means, including information storage and retrieval systems, without permission in writing from Nintendo.
For more information about using the Pia library, see the Programming Manual.
The Pia library is made up of several modules that implement P2P communication features. Each module is designed to minimize dependencies on code in other modules.
An overview of each module is provided below.
PiaCommon
module provides features, such as memory management, that are shared by all modules. This library provides features intended for reuse by other modules; only some of its features are used directly from applications.nn::pia::common
.PiaLocal
is a network management module that provides local P2P communication features. This module extends the UDS library in the SDK to provide more advanced functionality.LocalNetworkFactory
for local communication using a PiaSession
instance. PiaLocal
uses the SDK's UDS library. For this reason, you can achieve the same performance just by using PiaLocal
even if you are not using the UDS library directly. However, this is not compatible with UDS library receive-only child devices (spectators).nn::pia::local
.PiaInet
is a network management module that provides Internet P2P communication features. Use it in combination with NEX server services. It includes the following features. NexNetworkFactory
for Internet communication using a PiaSession
instance. nn::pia::inet
. PiaTransport
transport management module provides a variety of send and receive features. Use it in combination with PiaSession
. It includes the following features. UnreliableProtocol
that does not guarantee delivery of data. ReliableProtocol
guarantees delivery of data. ReliableBroadcastProtocol
that transfers data efficiently from a host to multiple clients. TransportAnalyzer
, which is used for analyzing game communication. nn::pia::transport
.PiaSession
is a session management module that manages gatherings of game participants (sessions). Sessions in PiaSession
are equivalent to the groups in the matchmaking sessions on the matchmaking server and the P2P mesh networks between stations using P2P communication. Creating and joining sessions is done by automatically performing matchmaking and creating and joining P2P mesh networks. (Matchmaking sessions and P2P mesh networks can also be managed separately.)nn::pia::session
. PiaSync
module provides features for synchronizing input (game communication that shares key input data between stations).SyncProtocol
for using PiaSession
to synchronize the input state. (You can add arbitrary data in addition to key input.) nn::pia::sync
.PiaClone
module provides features for synchronizing communication states (game communication that shares object states between stations).CloneProtocol
for managing the overall state synchronization. UnreliableCloneElement
and ReliableCloneElement
for sharing the state. EventCloneElement
for sending event notifications. SendClone
and ReceiveClone
for sending and receiving states. AtomicSharingClone
for obtaining exclusive rights (locking) to modify states between stations. SequentialSharingClone
for sending and receiving without restrictions on changing states. nn::pia::clone
.PiaReckoning
module provides features for interpolating states (such as position data) on PiaClone
using dead reckoning.ReckoningCloneElement
for interpolating states using dead reckoning. Simple3dReckoningStrategy
for predicting 3D position data. nn::pia::reckoning
.PiaChat
module provides voice chat functionality.nn::pia::chat
.
CTR-06-0241-001-AN