In CTR-NEX 3.5 and later versions, only fast-build binaries are provided. Contact Nintendo if you need small-build binaries.
For a summary of changes from CTR-NEX 2.7.3, see document/manual/difference_from_nex_2_x.html
.
NetZ continues to be supported in current generation devices, but will be deprecated in the future. Please use the Pia library for new titles that are not sequel titles.
Bug Fixes
General
Additions and Changes
Matchmaking
MatchmakeExtensionClient::UpdateMatchmakeSession
, but it is now possible to change specifically from MATCHMAKE_SYSTEM_TYPE_ANYBODY
to MATCHMAKE_SYSTEM_TYPE_FRIEND
and vice versa. (Although this change was reported in the Revision History for NEX 3.8.1, that version did not actually incorporate this change.)Programming Manual
Web API
Additions and Changes
General
Matchmaking
MatchmakeSessionSearchCriteria
and running MatchmakeExtensionClient::AutoMatchmake
would allow you to join two matchmaking sessions matching the criteria. (Only on the server.)NotificationEvents::OwnershipChangeEvent
notification was sent to clients in an incorrect order if automatic ownership transfer on a matchmaking session occurred simultaneously with ownership transfer initiated by MatchmakeExtensionClient::UpdateGatheringOwnership
or MatchmakeExtensionClient::UpdateSessionHost
.MatchmakeSessionSearchCriteria::SetMatchmakeSystemType
was changed from const qUnsignedInt32
to MatchmakeSystemType
. This topic wasn't previously documented in the revision history or the reference manual, so it has been added.MatchmakeSessionSearchCriteria:::SetGameMode
was changed from const qUnsignedInt32
to qUnsignedInt32
. This topic wasn't previously documented in the revision history or the reference manual, so it has been added.Programming Manual
User Management
Matchmaking
Data Store
DataStoreClient::RateObjectWithPosting
and DataStoreClient::RateObjectWithPostings
.Additions and Changes
General
nex.h
on ARMCC 5.x. qResult::Trace
function public. This function can output the details of a qResult
object.Facade
NgsFacade::GetNgsBridge
function, which gets an NgsBridgeInterface
object for connecting to Pia.Matchmaking
MatchmakeExtensionClient::UpdateMatchmakeSession
function that can update just the specified matchmaking session parameters.MatchmakeExtensionClient::UpdateMatchmakeSession
.MatchmakeExtensionClient::BrowseMatchmakeSession
function that does not require a GatheringHolder
object.MATCHMAKE_SYSTEM_TYPE_ANYBODY
was specified as the first parameter in the MatchmakeSession::SetMatchmakeSystemType
function and the GatheringFlags::MigrateOwner
flag was set with the Gathering::SetFlag
function, participation in the matchmaking session was not automatically closed even if the owner left the session and ownership was transferred to another player. Now, you can set participation in a matchmaking session to be automatically closed in this case by specifying AnybodyParticipationPolicyArgument::CloseOnOwnerMigration
as the second parameter when calling the MatchmakeSession::SetMatchmakeSystemType
function.MessagingClient::SendChat
function from 16 to 32.MatchmakeSessionSearchCriteria::SetVacantOnly
function.MatchmakeExtensionClient::BrowseMatchmakeSession
and MatchmakeExtensionClient::AutoMatchmake
functions.MATCHMAKE_SYSTEM_TYPE_PERSISTENT_GATHERING
and set the ID of the persistent gathering to associate as the 0th attribute when registering a matchmaking session. In NEX 3.8 and later, when registering a persistent gathering matchmaking session, use the MatchmakeSession::SetReferPersistentGatheringId
function to set the ID of the persistent gathering to associate with the matchmaking session. To maintain compatibility, set the matchmaking system type to MATCHMAKE_SYSTEM_TYPE_PERSISTENT_GATHERING
and set the ID of the persistent gathering to associate as the 0th attribute. Specify INVALID_GATHERINGID
as the ID of the persistent gathering to associate to automatically set the 0th attribute of new matchmaking sessions to the ID of the persistent gathering to associate when they are registered on the server. Call the MatchmakeSession::SetReferPersistentGatheringId
function on matchmaking sessions retrieved from the server to get the ID of the associated persistent gathering. Persistent gathering matchmaking sessions are counted regardless of which approach you use.MATCHMAKE_SYSTEM_TYPE_OLV_COMMUNITY
and set the Miiverse Community ID as the 0th matchmaking session attribute, and then use both the MATCHMAKE_SYSTEM_TYPE_OLV_COMMUNITY
value and the 0th attribute value in the MatchmakeExtensionClient::BrowseMatchmakeSession
function to search by Community ID. In NEX 3.8 and later, set the Community ID to any of the attributes when registering the matchmaking session, and then search by that attribute using the MatchmakeExtensionClient::BrowseMatchmakeSession
function.MatchmakeRefereeStartRoundParam::SetPrincipalIds
function now returns QERROR(MatchmakeReferee, InvalidArgument)
rather than QERROR(PythonCore, Exception)
if duplicate principal IDs are specified.MatchmakeSessionSearchCriteria::SetMatchmakeSystemType
was changed from const qUnsignedInt32&
to MatchmakeSystemType
.MatchmakeSessionSearchCriteria:::SetGameMode
was changed from const qUnsignedInt32&
to qUnsignedInt32
.Data Stores
DataStoreDataCode
class for converting between data IDs and datacode strings that are more suitable for display in an application. For more information, see Displaying Data IDs.Programming Manual
General
IndependentServer::RequestAuthenticationToken
function.Matchmaking
MessagingClient::SendChat
function.NotificationEvents::MatchmakeSessionSystemPasswordSet
notification occurs.Data Store
Web API
Sample Demos
Bug Fixes
General
GlobalVariables::GetCount
function returned an invalid value if called while a NetZ
or NgsFacade
object was currently instantiated. This behavior is correct. Added a note that calling the function while a NetZ
or NgsFacade
object is currently instantiated is prohibited. In the Debug build, the library stops on an assert if the function is called in this state.nex.h
was included, an error would occur because undefined macros were specified as preprocessor branching conditions.P2P
Matchmaking
MatchmakeReferee
where after you called the MatchmakeRefereeClient::EndRound
or MatchmakeRefereeClient::EndRoundWithoutReport
function or were disconnected or logged out from the server, the MatchmakeRefereeClient::EndRound
and MatchmakeRefereeClient::EndRoundWithoutReport
functions would return QERROR(PythonCore, Exception)
if called again before the report for the round was completed. These functions now return QERROR(MatchmakeReferee, AlreadyExists)
when this occurs.Data Store
qResult::GetErrorName
function where the QREQULT_ERROR (DataStore, ValueNotEqual)
error could not be converted.Additions and Changes
General
<RendezVous/Services/Messaging.h>
when using the messaging feature, but that is no longer necessary.Programming Manual
Web API
QERROR(Core, InvalidArgument)
.nn::nex::MatchmakeSessionSearchCriteria
about when the settings are enabled that exclude closed sessions, sessions that are full, or password-protected sessions from matchmaking session searches.Sample Demos
TeamMatchmake
sample, which handles making teams with matchmaking.qNew
and qDelete
were used to use new
and delete
.Bug Fixes
Sample Demos
NEX_DEMO_VERIFY
macro so that the build no longer stops.Additions and Changes
General
NATTraversal.h
, DirectStream.h
, and HostMigration.h
do not have to be individually included. To use each function, include nex.h
.Facade
NgsFacade::IsConnected
(BackEndServices::IsConnected)
can now go offline when a network disconnect is detected in AC, other than when communication with the server is disrupted for a specified amount of time.NgsFacade::IsConnected
(BackEndServices::IsConnected)
was changed from qBool
to qResult
This value can be cast to a qBool
type for existing evaluations and assignments. The error value is QERROR(RendezVous, ConnectionDisconnected)
. ServiceClient::IsConnected
has been made private, as its functionality differs from NgsFacade::IsConnected
. Use the MatchMakingClient::GetSessionURLs
function instead.Core::SetTerminateImmediately
is now configured to configure force terminate mode when the network is disconnected by AC. It is also configured to automatically set to normal terminate mode when logging in to a game server.Matchmaking
NotificationEvents::GameServerMaintenance
) was changed from always being sent to no longer being sent by default. New matchmaking returns an error with or without the notification being sent. You can use the Web API to enable or disable notifications. For more information, see Handling Game Server Maintenance Notification Events.MatchMakingClient::UpdateSessionHost
to change the owner with the host information change. Previously, calling MatchMakingClient::UpdateSessionHost
when a gathering where the local station was not a participant returned QERROR(RendezVous, SessionVoid)
. This call now returns QERROR(RendezVous, PermissionDenied)
.MatchMakingClient::UpdateGatheringOwnership
, which changes the calling user to the owner.MatchmakeReferee
is now officially released. It is possible to submit a master ROM that includes this feature.MATCHMAKE_SELECTION_METHOD_SCORE_BASED
is now officially released. It is possible to submit a master ROM that includes this feature.MatchmakeExtensionClient::AutoMatchmake
, MatchmakeExtensionClient::CreateMatchmakeSession
, and MatchmakeExtensionClient::JoinMatchmakeSession
that take AutoMatchmakeParam
, CreateMatchmakeSessionParam
, JoinMatchmakeSessionParam
as arguments. These functions include all previous functionality.MatchmakeExtensionClient::AutoMatchmake
function previously ignored MatchmakeSessionSearchCriteria
after the third criteria, but has been changed so that it now returns QERROR(RendezVous, InvalidArgument)
.GatheringFlags::NotifyParticipationEventsToAllParticipants
option to send the notification to all participants of the matchmaking session. Added the (GatheringFlags::NotifyParticipationEventsToAllParticipantsReproducibly
) option to receive a join notification for all users already in the matchmaking session at the time of joining.GatheringFlags::MigrateOwner
was preserved when the owner called the MatchMakingClient::EndParticipation
function to leave. Now the matchmaking session is destroyed when the owner leaves. (This is the same behavior that occurs when logged out or disconnected from the game server.) If you want the matchmaking session to be preserved, specify GatheringFlags::MigrateOwner
so ownership migrates automatically. This change ensures that some participant in the matchmaking session always has ownership.NotificationEvents::GatheringUnregistered
notification is now sent to the owner when a gathering is destroyed. This notification was previously not sent to the owner.MatchMakingClient::UnregisterGathering
function returned QERROR(RendezVous, SessionVoid)
when it was called on a gathering where the local station is not the owner, but it now returns QERROR(RendezVous, PermissionDenied)
.Ranking
RankingClient::GetCachedTopXRanking
and RankingClient::GetCachedTopXRankings
to allow high frequency queries. Added RankingCachedResult::LocalUpdate
to update local scores in the cached top ranking. For more information, see Acquiring Cached Top Ranking.
P2P
RootTransport::SetPacketHistoryHistoryBundlingForcedRetransmitTimeout
and RootTransport::GetPacketHistoryHistoryBundlingForcedRetransmitTimeout
to RootTransport::SetPacketHistoryBundlingForcedRetransmitTimeout
, and RootTransport::GetPacketHistoryBundlingForcedRetransmitTimeout
. RootTransport::IsEnableDOPacketHistoryBundling
to configure DO history bundling, and RootTransport::EnableDOPacketHistoryBundling
to get the configuration.HostMigrationCallback::Unregister
was used to stop on assert when Register
had not been called on the specified gathering ID, but now the function ends successfully without doing anything.Programming Manual
General
QRESULT_SUCCESS
and QRESULT_ERROR
macros compared to QSUCCESS
and QERROR
.QRESULT_SUCCESS
and QRESULT_ERROR
to QSUCCESS
and QERROR
.QERROR(Core, GameServerMaintenance)
, and QERROR(RendezVous, GameServerMaintenance)
sections.Matchmaking
Data Store
NgsFacade
and NetZ object destruction, and corrected the sample code.Ranking
Web API
P2P
Bug Fixes
Matchmaking
MatchMakingClient::FindByID
has been changed so that an empty result is returned when INVALID_GATHERINGID
was searched when passed a gathering ID as an argument. It previously returned QERROR(PythonCore, Exception)
when INVALID_GATHERINGID
was searched.MatchmakeReferee
did not match the information sent from each client.MatchmakeExtensionClient::AutoMatchmake
that specified MatchmakeSessionSearchCriteria
so that the settings of MatchmakeSessionSearchCriteria::SetExcludeNonHostPid
are followed correctly, and matchmaking sessions without a defined host are not excluded. The function previously incorrectly excluded matchmaking sessions without a defined host.MatchMakingClient::EndParticipation
function previously returned QERROR(RendezVous, SessionVoid)
when it was called on a gathering where the local station is not a participant, but it now returns QERROR(RendezVous, PermissionDenied)
.MatchMakingClient::GetSessionURLs
function on a gathering where it was not a participant, but the function actually returned QERROR(RendezVous, SessionVoid)
. Revised the function to return QERROR(RendezVous, PermissionDenied)
instead.MatchMakingClient::MigrateGatheringOwnership
function previously returned QERROR(RendezVous, SessionVoid)
when called on a gathering where the local station was not the owner, but it now returns QERROR(RendezVous, PermissionDenied)
. Previously, the function returned QERROR(RendezVous, SessionVoid)
when an empty list was specified in lstPotentialOwnersID and the gathering had no participants, or when none of the users specified in lstPotentialOwnersID were participants in the gathering. The function now returns QERROR(RendezVous, NotParticipatedGathering)
. Previously, the function returned QERROR(RendezVous, SessionVoid)
when the user specified in lstPotentialOwnersID did not exist or was offline, but it now returns QERROR(RendezVous, UserIsOffline)
. Previously, ownership could be migrated to a user who was not a participant in the matchmaking session, but now ownership can only be migrated to participants.MatchmakeExtensionClient::CloseParticipation
, MatchmakeExtensionClient::OpenParticipation
, MatchmakeExtensionClient::UpdateApplicationBuffer
, MatchmakeExtensionClient::UpdatematchmakeSession
, MatchmakeExtensionClient::UpdateMatchmakeSessionAttribute
, and MatchmakeExtensionClient::UpdateProgressScore
APIs to return QERROR(RendezVous, PermissionDenied)
when they are called against a gathering where the local station was not the owner. These functions previously returned QERROR(RendezVous, SessionVoid)
.MatchmakeExtensionClient::JoinMatchmakeSession
function so that QERROR(RendezVous, SessionClosed)
is returned instead of QERROR(RendezVous, SessionVoid)
when the system attempts to join a matchmaking session that is closed. QERROR(RendezVous, NotFriend)
is now returned instead of QERROR(PythonCore, Exception)
when MATCHMAKE_SYSTEM_TYPE_FRIEND
is used and the local station attempts to join a matchmaking session where the owner is not a friend of the local user. QERROR(RendezVous, AlreadyParticipatedGathering)
is now returned when attempting to join a matchmake session that has already been joined. Prior to this change, the action succeeded and returned a ParticipationEvents::Participate
notification, or returned QERROR(RendezVous, SessionFull)
. However, this excludes the situation where JOIN_MATCHMAKE_SESSION_BEHAVIOR_IM_ALREADY_JOINED
is specified by JoinMatchmakeSessionParam::SetJoinMatchmakeSessionBehavior
to attempt joining a different user.P2P
Vsocket
library is now included.Session::SetDetectStationInconsitencyThresholdCount
from constantly being shown to no longer being displayed.Samples
General
QRESULT_SUCCESS
and QRESULT_ERROR
to QSUCCESS
and QERROR
.Matchmaking
AutoMatchmake
sample. The prior AutoMatch
sample is no longer public. This sample performs actions starting from AutoMatch make through P2P communication. Error handling and sequence processing is implemented in a manner very similar to a production application, and is provided in a form that is easy to integrate into an application.Additions and Changes
Matchmaking
MatchmakeSession::SetOption0Flag
, MatchmakeSession::ClearOption0Flag
, MatchmakeSession::GetOption0Flag
, and MatchmakeFlags::MatchmakeSessionOption0
to control the delay settings for auto-matchmaking. For more information, see Delaying the Creation of a New Matchmaking Session During Auto-Matchmaking.Bug Fixes
General
Data Store (Only on the Server)
created_after
, created_before
, updated_after
, or updated_before
, the search functioned as if the specified time was nine hours later than the time actually specified.Programming Manual
Matchmaking
GatheringFlags
enumerated type is now output under the GatheringFlags
namespace.( See GatheringFlags::GatheringFlags
.)QERROR(RendezVous, OutOfRatingRange)
error, and not the QERROR(Core, InvalidArgment)
error.Samples
Matchmaking
EndRound
function were inconsistent.P2P
Integration/DirectStream
referenced deallocated memory.Data Store
DataStoreApiChain
sample, which is in a form that is easy to incorporate into applications.Additions and Changes
General
SingleStepJob
class, which manages job execution. It is used in samples of the MatchmakeReferee
feature.OSDK_CLIENT
without needing to define macros in the compiler options.ThreadModeUnsafeUser
in Core::ThreadMode
.Facade
RendezVous::GetServerTime
equivalent to that in RendezVous::GetGameServerTime
.Utilities
UtilityClient
.UtilityClient
. For more information, see the NEX unique ID section of the programming manual.Matchmaking
RendezVousErrorCode::ErrorCode
enumerated type definitions for CommunityCreationMax
CommunityParticipationMax
. Use PersistentGatheringCreationMax
and PersistentGatheringParticipationMax
instead.MATCHMAKE_SELECTION_METHOD_SCORE_BASED
, which selects matchmaking sessions by calculating various scores, to MatchmakeSelectionMethod
. This feature is a beta version. It is prohibited to create master software that includes this feature.MatchmakeReferee
function, which records results fairly by summarizing match reports sent by clients and checking that they match. For more information, see the Using the MatchmakeReferee Feature section of the programming manual. This feature is a beta version. It is prohibited to create master software that includes this feature.QERROR(RendezVous, OutOfRatingRange)
is returned when an out of range value is set when using the range broadening matchmaking session selection method.Data Store
DataStoreClient::RateObjectsWithPosting
and DataStoreClient::RateObjectWithPosting
functions, which rate and initialize the data if there is no existing rating in a batch rating process.DataStoreClient::PostObject
function.DataStorePostParam::AddRatingSetting
and DataStorePostParam::ClearRatingSetting
functions for operation of rating slots.Ranking
RankingRankData::GetUpdateTime
function.update_time
field to the GetRankedScores
web API so that the update date and time can be retrieved.Programming Manual
General
ThreadModeUnsafeUser
to Thread Mode Settings.Matchmaking
QERROR(Core, InvalidArgment)
is not handled by the application, but the error is passed to the error/EULA applet.MatchmakeReferee
feature. For more information, see Using the MatchmakeReferee Feature.MATCHMAKE_SELECTION_METHOD_SCORE_BASED
. For more information, see Selecting the Matchmaking Session.Data Store
Web API
MATCHMAKE_SELECTION_METHOD_SCORE_BASED
. For more information, see API for Auto-Matchmaking by Scoring Feature.Bug Fixes
P2P
SYSTEMERROR_GEN_DUPLICATED_KEY
error is obtained from the SystemError::GetLast
function, even though Session::CreateSession
was successful.DirectStream::GetInstance
when NetZ had not been created.Samples
Matchmaking
MatchmakeReferee
feature.AutoMatch
so that the MatchmakeSessionSearchCriteria::SetVacantOnly
and MatchmakeExtensionClient::CloseParticipation
functions are now called, as in the recommended settings in Notes About Matchmaking Search.Ranking
RankingSimple
so that the update date and time are obtained using the RankingRankData::GetUpdateTime
function.Bug Fixes
Matchmaking (Only on the Server)
Additions and Changes (Only on the Server)
Matchmaking
Data Store
DataStorePermission
to DataStoreConstants::PERMISSION_PRIVATE
. Set them to PERMISSION_PUBLIC
explicitly by using the DataStorePostParam::SetAccessPermission
and DataStorePostParam::SetUpdatePermission
functions to set DataStoreConstants::PERMISSION_PUBLIC
.
DataStoreConstants::SEARCH_TYPE_OWN_PENDING
, DataStoreConstants::SEARCH_TYPE_OWN_REJECTED
, and DataStoreConstants::SEARCH_TYPE_OWN_ALL
to the DataStoreClient::SearchObject
function. This addition allows searches for data with the PENDING
or REJECTED
status within the data you have uploaded to a data store.Bug Fixes
General
Programming Manual
General
nn::nex::DateTime::FromEpochTime
.Additions and Changes
General
DateTime
to and from epoch time: DateTime::ToEpochTime
, DateTime::ToUnixEpochTime
, DateTime::FromEpochTime
, and DateTime::FromUnixEpochTime
.Facade
QERROR(Authentication, ClientVersionIsOld)
(qResult
value 0x8068000f
. Error code 006-0815
). This error is not defined in NEX 3.4 and earlier versions.NgsFacade::GetServerTime
function to the RendezVous::GetServerTime
function of the base class.NgsFacade::GetGameServerTime
function to get the time from the game server. This function is implemented as the RendezVous::GetGameServerTime
function of the base class.NgsFacade::IsConnected
function to return false
when called during the login process.Matchmaking
MatchmakeExtensionClient::JoinMatchmakeSession
function and the GatheringFlags::UseBlackList
function have been removed.Data Store
DataStoreClient::GetObject
and DataStoreClient::TouchObject
functions are called. For more information, see Updating Data Access Dates/Times and Counts in the NEX Programming Manual.DataStoreClient::RateObject
function.DataStoreClient::PostObject
function.NULL
as the default for the pResults parameter of the DataStoreClient::GetPersistenceInfo
and DataStoreClient::GetPasswordInfo
functions that have multiple targets.DataStoreClient::GetObject
and DataStoreClient::TouchObject
functions to no longer update the download count and reference date.Programming Manual
General
Facade
NgsFacade::GetServerTime
function gets the authentication server time. Also noted that the time cannot be obtained if the connection to the friend server is lost.Ranking
RankingClient::GetStats
function.Data Store
P2P
CallContext::GetOutcome
function when using the ConnectivityManager::StartNATSession
function.Bug Fixes
General
CallContext::Cancel
function was called for a CallContext
object set to CallContext::DeleteOnCompletion
.P2P
Data Store
DataStorePrepareGetParam::SetPersistenceTarget
function and then called the DataStoreClient::GetObject
function, the dataId parameter of the called DataStoreGetObjectEventListener::Begin
callback function back would always be DataStoreConstants::INVALID_DATAID
.Programming Manual
Independent server
Bug Fixes
Independent server
NgsFacade::LoginAndRequestAuthenticationToken
function was called with an expired authentication token.P2P
CallContext
was canceled and NgsFacade
was released immediately (within some 100 milliseconds) after calling the ConnectivityManager::StartNATSession
function.This update only affects the server.
Bug Fixes
Matchmaking
MatchmakeSessionSearchCriteria::SetVacantOnly
function was set to true
.Additions and Changes
General
DOID
, qResult
, and Holder
classes are now inherited from RootObject
.Core::IsUsingThreadAutoStack
function from true
to false
. If you think you will be using AutoStack
, configure Core::UseThreadAutoStack(true)
.virtual
declaration to the ServiceClient::Bind
and ServiceClient::Unbind
functions and the Bind
and Unbind
functions of their inherited classes.Matchmaking
MatchmakeSessionSearchCriteria::SetAttribute
function for specifying and searching multiple attribute values.Data Store
DataStoreClient::SearchObject
function. To use this feature, specify RESULTRANGE_ANY_OFFSET
as the offset for ResultRange
.DataStoreRatingLockInitParam::SetDaysAfterLock
function.P2P
SessionClock::SetSyncPulseSampleSize
function is no longer publicly available.VSocket
was separated off as libVSocket
. To use VSocket
, the library must be added.Programming Manual
General
Scheduler::Dispatch
function is called even when only server communication is taking place. Also added a description about the call interval for dispatches when only server communication is taking place.RootObject
and that there are exceptions. Noted in the function references for EndPointInfoInterface
, SubStreamIDDefine
, and ErrorCodeConverter
that they do not inherit from RootObject
.Core
class are created and destroyed.IndependentServer
.Facade
NgsFacade::Login
function.Matchmaking
MatchmakeSystemType
enumerated type.MatchmakeSessionSearchCriteria::SetMatchmakeSystemType
function. MATCHMAKE_SELECTION_METHOD_NEAREST_NEIGHBOR
is specified with the MatchmakeSessionSearchCriteria::SetSelectionMethod
function.MatchmakeExtensionClient::AddToBlackList
function.NotificationEvents::ForceDisconnectAllPrincipalsEvent
.Data Store
DataStoreClient::ChangeMeta
function.useInternalBuffer=true
is specified in the DataStoreClient::PostObject
function and the DataStoreClient::UpdateObject
function.P2P
Station::SetLocalPlayerName
function.StreamSettings::GetKeepAliveTimeout
and StreamSettings::SetKeepAliveTimeout
functions and the StreamSettings::GetMaxSilenceTime
and StreamSettings::SetMaxSilenceTime
functions in Detecting Lost Stations and the function references.Debugging Helpers
Debug
sample or create a dedicated application based on this sample.Bug Fixes
General
MatchmakeExtensionClient
, DataStoreClient
, RankingClient
, or MessagingClient
was created before NgsFacade
in thread-unsafe operations.Matchmaking
MatchmakeExtensionClient::BrowseMatchmakeSession
function even though nothing was specified for the matchmaking system type or the 0th attribute value.MatchMakingClient::UpdateSessionHost
function to return QERROR(RendezVous, SessionVoid)
when a nonexistent gathering has been specified.MatchMakingClient::FindById
function to return QERROR(RendezVous, SessionVoid)
when a nonexistent gathering has been specified.P2P
VSocket
even though in fact packets had been received.VersionMismatch
in DOCoreErrorCode::ErrorCode
.NetZ::Terminate
function was run after a wireless disconnect during station join processing.Data Store
DataStoreRatingLockInitParam::SetDaysAfterLock
function.Additions and Changes
P2P
Ranking
RankingClient::GetRankingByPIDList
function, which gets the ranking list that has the specified principal ID as the population.RankingClient::GetRankingByUniqueIdList
function, which gets the ranking list that has the specified NEX unique ID as the population.Matchmaking
Messaging
BinaryMessage
class to store binary messages, and added support for sending binary messages with the MessagingClient::SendInstant
and MessagingClient::SendChat
functions.MessagingClient::SendChat
in a community (persistent gathering) is now possible with up to 16 participants.Data Store
DataStoreClient::ChangeMeta
function.Sample Demos
PersistentGathering
sample as a sample of a persistent gathering.Messaging
sample.Programming Manual
P2P
ErrorCode::PacketBufferFull
to TransportErrorCode::ErrorCode
.PacketBufferFull
error is thrown when the packet buffer runs out of space during direct streaming.QRESULT_ERROR(Transport, PacketBufferFull)
to the return values for DirectStream::Send
, DirectStream::SendReliable
, DirectStream::SendUnreliable
, DirectStream::SendAll
, DirectStream::SendUnreliableAll
, DirectTransport::SendReliable
, DirectTransport::SendUnreliable
, DirectTransport::SendUnreliableAll
, DirectTransport::SendReliableAll
, and DuplicatedObject::Update
.ErrorPacketBufferFull
to DOCallContext::Outcome
.UserMessage::GetRecipientID
.DOCallContext::GetOutcome
and DOCallContext::GetOutcomeString
functions public.Data::DynamicCast
function, which handles dynamic casting to derived classes of the Data
class.DataStoreConstants::ComparisonFlag
enumerated type.ValueNotEqual
to DataStoreErrorCode::ErrorCode
.PersistentGathering
class.MatchmakeExtensionClient::CreatePersistentGathering
, MatchmakeExtensionClient::UpdatePersistentGathering
, MatchmakeExtensionClient::JoinPersistentGathering
, MatchmakeExtensionClient::FindPersistentGatheringByGatheringId
, MatchmakeExtensionClient::FindOfficialPersistentGathering
, MatchmakeExtensionClient::FindPersistentGatheringByParticipant
, MatchmakeExtensionClient::GatheringIdToPersistentGatheringCode
, MatchmakeExtensionClient::PersistentGatheringCodeToGatheringId
, MatchmakeExtensionClient::IsValidPersistentGatheringCode
, MatchmakeExtensionClient::SetPersistentGatheringCodeKey
, and MatchmakeExtensionClient::ClearPersistentGatheringCodeKey
. INVALID_PERSISTENT_GATHERING_CODE
, PERSISTENT_GATHERING_CREATION_MAX
, PERSISTENT_GATHERING_PARTICIPATION_MAX
, and PERSISTENT_GATHERING_CHAT_PARTICIPANTS_MAX
.PacketBufferManager
class.PersistentGatheringType
namespace.NoPersistentParticipation
and AllowNoParticipant
to GatheringFlags
.SessionClock::SetMinimumNbSyncPulse
and SessionClock::SetSyncPulseDelay
were made private because of implementation changes.RankingClient::GetRankingByPIDList
and RankingClient::GetRankingByUniqueIdList
.Bug Fixes
Facade
IndependentServer::AUTH_TOKEN_SIZE
) in the IndependentServer::RequestAuthenticationToken
and NgsFacade::LoginAndRequestAuthenticationToken
functions.Matchmaking
Bug Fixes
General
ErrorCodeConverter::ConvertToNetworkErrorCode(qUnsignedInt32 last)
, which was mistakenly deleted in version 3.2.0.Additions and Changes
P2P
VSocket
library, which is a socket-like library, to provide simple packet sending and receiving functionality without depending on Net-Z and without controlling the session after NAT traversal. For more information, see Appendix: VSocket.ConnectivityManager::StartNATSession
function, this name resolution is now done in a separate thread. Made RootTransport::SetUpDefaultNATCheckServer
private so that blocking can be avoided as standard practice.DirectStream::SendReliable
, DirectStream::SendUnreliable
, and DirectStream::SendUnreliableAll
to the DirectStream
class.StationID
take the same value as ConnectionID
by changing to the use of the DOHandle::GetValue
function for the duplicated object, rather than using the duplicated object ID (the DOID
) , and changed to using just StationID
as the station identifier, rather than having two identifiers (StationID
and ConnectionID
). Using ConnectionID
as the station identifier is not recommended. Also, made it so that the Station::GetConenctionID
function returns a qUnsignedInt32
StationID
, rather than a qUnsignedInt32
ConnectionID
. To get the same value as before for the StationID
, call the DOHandle::GetDOID
function for the duplicated object handle of the station.
Station::ConvertStationIDToDOHandle
function to get the DOHandle
from the StationID
.Station::ConvertDOHandleToStationID
function to get the DOHandle
from the StationID
.Station::ConvertDOHandleToDOID
function to get the DOID
from the DOHandle
.EndPointInfo
. (Previously it was called the PRUDPAnalyzeInfo
structure.) Also, changed the member function names.Station::GetPRUDPEndPoint
function that gets PRUDPEndPoint
from Station
has been made a private function. You can get the EndPointInfo
structure using the EndPointInfoInterface::GetEndPointInfo
function via the Station::GetEndPointInfoInterface
function.Session::JoinSession
function that pass only the URL object and not the URL list now only can be used with local communication. When these methods are used with something other than local communications, they either throw an assertion or fail.Station::KickStation
and Station::KickMe
functions can now be used to kick specified stations out of sessions. When a station leaves a session due to the operation of these APIs, the Session::CheckGameIsOver
function returns true
.Messaging
UserMessage::GetRecipientID
and UserMessage::GetRecipientType
functions have been made public functions.Matchmaking
HostMigrationCallback::SessionHostIsOrphan
function no longer decides that the local host is isolated when it is the only station. To determine isolation based on the same conditions as before, you must now check whether there is only one station at the same time that you call HostMigrationCallback::SessionHostIsOrphan
to run its check.
HostMigrationExtension::Register
function in local communication by calling the HostMigrationExtension::Disable
function.
Sample Demos
ConnectionID
now use StationID
.EndPointInfoInterface::GetEndPointInfo
function to the AutoMatch
sample demo.AutoMatch
and DDLBasic
sample demos, reliable data is now sent in a different, specified substream than the system substream.AutoMatch
sample demo, the places that used std::map
now use qMap
.DirectStream
sample, the places using the non-recommended functions Session::RegisterStationEventCallback
and Session::UnregisterStationEventCallback
were changed to use the Station::RegisterOperationEndCallback
function.DirectStream
sample where the participating stations were not displayed correctly after creating and joining a session and then creating another session.DeadReckoning
sample so that the dead reckoning method cannot be changed with the Y Button from a station that is not the session master.Programming Manual
General
Time
class function Time::GetTime
and operator overloads to the function reference.StringStream
class for handling string streams to the function reference.SystemClock
class that you need to be careful about performance when you make frequent calls to the default time provider to get the time.P2P
Station::GetConnectionID
and Station::ConvertConnectionIDToDOHandle
functions. In their places, use Station::GetStationID
and Station::ConvertStationIDToDOHandle
.Station::ConvertDOHandleToID
function. In its place, use the Station::ConvertDOHandleToStationID
.StationID
type is now used in the following functions: Station::GetConnectionID
, Station::ConvertConnectionIDToDOHandle
, Station::ConvertDOHandleToID
, DirectStream::Send
, DirectStream::Data, DirectTransport::SendUnreliable
, and DirectTransport::SendReliable
.MatchMakingClient::GetSessionURLs
function is passed directly to the Session::JoinSession
without any processing.BundlingPolicy::SetMaximumBundleSize
function. Also, made BundlingPolicy::SetMaximumBundleSize
a private function. QSUCCEEDED
macro or to qBool
to determine whether the CallContext::GetOutcome
function returned a successful result for the call context.Matchmaking
MatchmakeExtensionClient::CreateMatchmakeSession
and MatchmakeExtensionClient::JoinMatchmakeSession
functions.MatchmakeExtensionClient::AutoMatchmake
function stated that you cannot use the maximum number of participants as a search condition. This statement was deleted because actually you can.MessagingClient::SendInstant
and MessagingClient::SendChat
functions when it was actually an in parameter.Bug Fixes
ErrorCodeConverter::ConvertToNetworkErrorCode
function would return the wrong values when converting some qResult
values to network error codes for user support.P2P
nn::nex::NetZ::SetDOClassInitializationCallback
is not used (such as when there are three or more connected devices and you are not using the host migration extension), stations were being recognized only as parents when two or more children joined. For the workaround to this problem when using version 3.0.1, see the Readme.CallContext::GetOutcome
function to return QSUCCESS(DOCore,Success)
rather than QSUCCESS(Core,Success)
when a context call specified with OneWayCall
succeeds.Session::GameOver
function.Facade
BackEndServices::IsConnected
and ServiceClient::IsConnected
functions.Sample Demos
AutoMatchmake
and DDLBasic
.Revision History
Additions and Changes
General
ThreadModeSafeTransportBuffer
.TransportBufferThread
are no longer created to keep down consumption of stack memory.qResult::GetErrorName
function used to convert qResult
error codes into strings for debugging.Matchmaking
RootTransport::SetUpDefaultNATCheckServer
function, which is used by applications to resolve the names of NAT-type-detection server addresses at any timing. By calling this function after creating a NgsFacade
object but before asynchronous execution of the ConnectivityManager::StartNATSession
function, the Scheduler::Dispatch
function no longer exceeds the timeout and blocks during asynchronous execution of the ConnectivityManager::StartNATSession
function.P2P
SelectionIteratorTemplate
copy constructor. Also, Station::SelectionIterator
now executes faster because its operations are cached.StreamSettings::SetEncryptionKey
and StreamSettings::IsEncryptionRequired
cannot be modified any time before NetZ::Terminate
completes execution. Also, when a change is made between when the Session::JoinSession
or Session::CreateSession
function is called and the NetZ::Terminate
function completes, execution either stops on an assertion or the change fails.DuplicatedObject::Update
function now returns QRESULT_ERROR(Transport, ReliableSendBufferFull)
when the send buffer is full or QRESULT_ERROR(DOCore, InvalidRole)
if it is called by a station other than the duplication master.DirectStream
when the network topology is NetworkTopology::Peer2Peer
.Station::GetApprovedStationNum
function that returns the number of stations approved to join a session has been added.Session::CreateSession
and Session::JoinSession
functions no longer signal SYSTEMERROR_GEN_CTR_ERROR
. They have been changed to return an assert error or false
. With this change, SYSTEMERROR_GEN_CTR_ERROR
and the SystemError::GetLastCtr
function have been made private.SelectionIterator
constructor is executed in thread-safe mode, an assert error is now generated if execution of the Scheduler::GetInstance
function, followed by the SystemLock
function, does not result in locking the system. Note that an error occurs when Station::SelectionIterator
is executed in thread-safe mode.DirectStream::Send
function now returns QRESULT_ERROR(Transport, InvalidStation)
when the station that data is being sent to does not exist.Data Store
static
object was defined in DataStoreConstants
,consuming a lot of memory.Sample Demos
AutoMatch
sample demo was changed to use the Station::GetApprovedStationNum
function to find the maximum number of stations that can join a session.AutoMatch
sample now checks network connectivity.AutoMatch
and DDLBasic
have been removed.Programming Manual
Asynchronous Processing Errors
for general features.DirectStream
when the network topology is NetworkTopology::Peer2Peer
has been added to documentation under the title Maximum Transmission Unit.MatchmakeExtensionClient::AutoMatchmake
function stated that searches cannot be made based on the maximum number of participants, but CTR_NEX 2.0 has been revised to allow such searches. This statement was deleted.Core::SetTerminateImmediately
function is used has been added to NEX Initialization and Finalization. This was also added to the API reference.NetZ::SetTerminateImmediately
function is used has been added to NetZ Forced Termination Mode. This was also added to the API reference.Bug Fixes
P2P
Station::GetApprovedStationNum
member function. For information about using this function, see the AutoMatch
sample.PRUDPAnalyzeInfo
, the count for the number of received pings included ACK packets. Revised that information so that ACK packets are no longer included in the count.Additions and Changes
General
Sample Demos
MultiUnitHeap
sample. A multi-unit heap, which consists of multiple unit heaps, can speed up memory allocation and deallocation. Use multiple unit heaps to speed up the memory allocator.Programming Manual
Bug Fixes
Matchmaking
Additions and Changes
General
Stream::GetSettings
function so that users can get a reference to the duplicated object settings without passing any arguments. Consequently, made Stream::type
private.EventLog::LogLevel
was erroneously stated to be Always
in the API reference. Corrected this to Info
.Data Store
DataStoreClient::GetRating
function that specify a single data ID.Reset
and Trace
member functions to DataStoreGetMetaParam
and other parameter type classes.IsValid
member function to the DataStoreMetaInfo
, DataStorePersistenceInfo
, and DataStorePasswordInfo
classes.DataStoreRatingInitParam::SetLock
function that takes an instance of the DataStoreRatingLockInitParam
class as an argument, and deprecated existing functions with this name.P2P
:Core::SetTransportBufferThreadMode
function for safety because the system caused heavy load if :Core::TransportBufferThreadSingle
was specified in this function.nn::nex::
namespace to SESSION_ROLE_UNDEFINED
, SESSION_ROLE_MASTER
, and SESSION_ROLE_DUPLICA
, which can be obtained by using the Session::GetRole
function.RootTransport::GetRoutingLimit
and RootTransport::SetRoutingLimit
functions for getting and setting the communication routing limit by means of the session master.Session::GameOver
and Session::DestroySession
functions now automatically set true
in the NetZ::SetTerminateImmediately
function.Session::GameOver
function to avoid fault processing did not call the leave-session callback for that station. The function was changed so that the callback is now called.Sample Demos
AutoMatch
.SESSION_ROLE_MASTER
to nn::nex::SESSION_ROLE_MASTER
.Programming Manual
Session::GameOver
and Session::DestroySession
functions automatically set true
in the NetZ::SetTerminateImmediately
function.MemoryManager::SetBasicMemoryFunctions
function.Bug Fixes
Matchmaking
ConnectivityManager::StartNATSession
function repeatedly retried when DNS name resolution failed on the NAT type detection server. This name resolution process sometimes caused ConnectivityManager::StartNATSession
to block far beyond the timeout specified by the Scheduler::Dispatch
function while working asynchronously.P2P
ConnectivityManager::StopNATSession
function was not called when shutting down NEX.Additions and Changes
General
:Core::UseThreads
, :Core::UseTransportBufferThread
, and :Core::SelectThreadSafeExecution
. Always use the Core::SetThreadMode
function to set the threading mode.Core::SetTerminateImmediately
was changed from a static function to a member function of the Core
class. (It is invoked as nn::nex::Core::GetInstance()->SetTerminateImmediately(true);
.) It is no longer necessary to return to normal termination mode after specifying forced termination mode. This function can only be used when tearing down NEX completely when shutting down, in sleep, or when not connected to the network. If it is true
when the Session::JoinSession
or Session::CreateSession
function is called, an Assert
check forcibly terminates, causing the call to fail.For more information about speeding up NetZ finalization, see Finalizing NetZ in the programming manual and the NetZ::SetTerminateImmediately
function documentation.
Facade
NgsFacade::Login
function returned an error of 106-0303 (invalid user name) if the user created a network account but never subsequently connected to the friend server.Matchmaking
MatchmakeExtensionClient::AutoMatchmake
, MatchmakeExtensionClient::CreateMatchmakeSession
, and MatchmakeExtensionClient::JoinMatchmakeSession
) now return a unique peer-to-peer communication key for each matchmaking session. For the MatchmakeExtensionClient::AutoMatchmake
function, the communicate key is set in a MatchmakeSession
instance that is passed in as an out parameter. It is set to an out parameter in the MatchmakeExtensionClient::CreateMatchmakeSession
and MatchmakeExtensionClient::JoinMatchmakeSession
functions. Revised the samples and other references in accordance with this change.MatchmakeExtensionClient::BrowseMatchmakeSession
function that returns the URL of the matchmaking session host with the search result.GatheringURLs
class, used by the MatchmakeExtensionClient::BrowseMatchmakeSession
function that was mentioned previously.MatchmakeExtensionClient::AutoMatchmake
function that takes a list of candidate matchmaking session IDs, and tries joining each item in the list in turn. If it cannot join any of the candidates, it then creates a matchmaking session.Data Store
DataStoreChangeMetaParam::SetDeletePermission
to DataStoreChangeMetaParam::SetUpdatePermission
, and DataStorePreparePostParam::SetDeletePermission
to DataStorePreparePostParam::SetUpdatePermission
. Also added a password mechanism for accessing and updating, allowing users without pre-assigned privileges to perform operations. For more information, see Privileges and Passwords in the programming manual.DataStoreClient::GetObject
function that uses a buffer to get the data size.DataStoreClient::GetMeta
function that allows multiple DataStoreGetMetaParam
instances to be specified and retrieved with a single call.Ranking
RankingScoreData::SetUpdateMode
function for specifying score update mode when uploading scores. For more information, see the Registering Scores section in the programming manual.:RankingOrderParam::SetOrderBy
function. When retrieving rankings in earlier versions, it was necessary to call the :RankingOrderParam::SetOrderBy
function to specify the same value as the sorting order specified by the RankingScoreData::SetOrderBy
function when the score was uploaded. It is no longer necessary to specify the sorting order when getting rankings; instead, the server returns a ranking list that is in the order that was specified when the score was uploaded.RankingConstants::MAX_RANGE_RANKING_ORDER
, which represents the maximum ranking value that can be retrieved in a range ranking; and RankingConstants::MAX_ACCURATE_ORDER
, which represents the maximum ranking value for an accurate rank calculation.Utilities
DebugClient::GetApiCallSummary
function to the DebugClient
class to check for adherence to the guidelines regarding the frequency of calls made by the client to API functions that initiate server communication. For more information, see Retrieving the API Call Log in the programming manual.DebugClient::GetApiCalls
function to return QERROR(RendezVous, InvalidConfiguration)
when the feature for recoding the API call log is disabled.:APICallData:
class to ApiCallData
, and renamed the :DebugClient::GetAPICalls
function to DebugClient::GetApiCalls
.libJugemDebugClient.a
is no longer included in the package, because debugging helper features cannot be included in retail ROM builds.qMap
and qSet
container classes that use the NEX allocator.P2P
Session::CreateSession
or Session::JoinSession
function without specifying a shared session key, execution halts with an assertion. For more information about how to specify this key, see Checking for Packet Tampering in P2P Communication in the programming manual.
StreamSettings::SetAdditionalSignatureKey
method for specifying the gathering ID as an additional signature key, because it has weaker security than the new method that was just implemented.Arcfour
common-key algorithm is now available for P2P communication. For more information, see P2P Session Encryption in the programming manual.RootTransport::GetTerminateDOCoreTimeout
and RootTransport::SetTerminateDOCoreTimeout
functions from the API.NetZ::SetTerminateImmediately
and NetZ::GetTerminateImmediately
functions to the API for speeding up NetZ termination processing. For more information, see Finalizing NetZ in the programming manual.Sample Demos
GameID
used in the sample demos was changed to the ID for the CTR-NEX 3.0.0 RC4 sample demo server. This ID is not compatible with RC3 game servers. You will not be able to use the sample demo server for RC3 in the next release of the library.AutoMatch
of using the shared session key from the game server as a signature key for encrypted P2P communications. NetZTerminateErrorHandle
sample demo.RankingSimple
so that it does not ordinarily get a NEX unique ID. If you want to use NEX unique IDs to register scores at a more precise level than the principal ID, enable the RANKING_DEMO_USE_NEX_UNIQUE_ID
macro.DataStore
sample. Also modified the sample to enable the use of HTTPS, and added NSSL initialization.Bug Fixes
Common
Assert
statement halted execution in debug builds if the close-socket process returned an error (such as when the cable was unplugged from the USB LAN adapter).Facade
NgsFacade
destructor was called while logged in to the game server.Ranking
RankingErrors.h
was not included.Utilities
NgsFacade::TestConnectivity
function were not added to the API call log.Data Store
DataStoreClient::PostObject
function.P2P
DuplicatedObject::Create
and DuplicatedObject::Publish
functions to 500 milliseconds to handle rare instances in which these functions did not return if communication with the host was poor when joining, or if communication with the host was lost immediately after joining. Consequently, modified the API so that a timeout can be specified in the version of the DuplicatedObject::Create
function with no parameters. For more information, see the function reference.DuplicatedObject::Create
and DuplicatedObject::Publish
functions to deal with rare failure of these functions to return. Consequently, modified the API so that a timeout can be specified in the version of the DuplicatedObject::Create
function with no parameters. For more information, see the function reference.NetZ::Terminate
function. A memory leak sometimes occurred if the NetZ::Terminate
function took a long time to complete (more than about 20 seconds). Prevented the memory leak by ending the function after five seconds.DirectStream::Send
function with a return type of qBool
in the function reference.Programming Manual
ThreadModeSafeTransportBuffer
with the NEX API.
NetZ::Terminate
function.NetZ::Terminate
, and described duplicated object destruction and forced termination mode.NetZ::Terminate
function from the Error Handling section.NetZ::Terminate
function from the Memory Management section.NetZ::Terminate
function from the description of the NetZ::~NetZ
function in the function reference, and moved it to the description of NetZ::Terminate
. Also explained that duplicated objects were destroyed even if references to them remained.ReliableSendBufferFull
error when using reliable communication. Documented DirectStream::Send
in the function reference. The application must resend when it receives a ReliableSendBufferFull
error, because it is not a fatal error.DirectStream::GetReceivedData
in the function reference.Reference Manual
Additions and Changes
General
nn_fp.a
(the friend presence library) and nn_ac.a
(the AC library).nn::ac::Initialize
before using the NEX library.OSSetThreadName
using a name that starts with "NEX."Facade
NgsFacade::Login
function on the second and subsequent logins. However, if the NEX library has been finalized (by calling the GlobalVariables::ReleaseInstance
function), the effect is lost and logging in is not any faster.
NgsFacade::Login
function now returns QRESULT_ERROR(FPD,NotInitialized)
. Data Store
MemoryManager::SetBasicMemoryFunctions
function had to be thread-safe. That requirement no longer exists, and you can now also use a memory allocator that is not thread-safe.qUnsignedInt32
to qUnsignedInt64
.const
reference instead.DataStoreSearchParam::SetResultRange
function now returns an error if a value greater than 100 is set for the maximum.DataStoreClient::UpdateObject
function is called.DataStoreClient::ChangeMeta
function can now make updates to the current time of the update time.GetStatus
, GetReferredTime
, and GetExpireTime
functions to the DataStoreMetaInfo
class so that you can get information from the client about the status of data, the last time it was referenced, and its expiration date.DataStoreConstants::DATA_FLAG_PERIOD_FROM_LAST_REFERRED
is specified. For more information about changing timestamp values and the number of references when using the API, see Figure 7.2 in the programming manual.Ranking
qUnsignedInt32
to qUnsignedInt64
.Utilities
Base64
conversion functions String::ByteArrayToBase64
and String::Base64ToByteArray
.DebugClient::SetExcludeJoinedMatchmakeSession
function, which can remove the restriction of the MatchmakeExtensionClient::AutoMatchmake
function that excludes participation in matchmaking sessions that were joined in the past.OutputFormat
class for adding the date and time, the session time, and other information to the output log.P2P
Station::SetLocalPlayerName
function, and get the names and IDs for the stations by using the Station::GetPlayerName
function and the Station::GetPrincipalID
function.
UnreliableVoiceData
type communications for direct streaming has been abandoned.StationOperation
for detecting the entrance and exit of all stations from sessions.
Station::RegisterOperationBeginCallback
and Station::RegisterOperationEndCallback
functions to use this class.AutoMatch
sample.Session::RegisterOperationBeginCallback
and Session::RegisterOperationEndCallback
, which cannot detect all stations, are no longer publicly available.Sample Demos
GameID
used in the sample demos was changed to the ID for the CTR-NEX 3.0.0 RC3 sample demo server. The RC3 and RC2 game servers are not compatible. In the next release you will no longer be able to use the RC2 sample demo server.Station::SetLocalPlayerName
function is used to specify the player name. The account ID is used for the player name.NetZ::GetFatalError
function is used directly rather than using a wrapper function.AutoMatch
sample: Added examples of using the functions Station::RegisterOperationBeginCallback
and Station::RegisterOperationEndCallback
.RankingSimple
sample: Changed so when an asynchronous process issued to communicate with the server fails, the process now ends at that point and the program quits.Bug Fixes
UtilityClient::IsValidNexUniqueId
function was not correctly determining the NEX unique ID.AutoMatch
and other samples, in which the CheckJoiningProcesses
function registered by Session::RegisterJoinApprovalCallback
used the wrong criteria for comparing the number of stations, with the result that under high loss-rate conditions where it was easy for a session to disconnect from the game server, more than the specified number of players would be connected sometimes. The relation condition was changed to uiPlayerCount < MATCHMAKE_MAX_PARTICIPANTS
. (Previously, it was uiPlayerCount <= MATCHMAKE_MAX_PARTICIPANTS
.) For more information, see the AutoMatch
sample and the Session::RegisterJoinApprovalCallback
function. Also, in AutoMatch
, the connection with the game server is now checked during peer-to-peer communications.
NetZ::Terminate
function. In the next version, the process will be designed so that the NetZ::Terminate
function does not fail.Programming Manual
DebugClient
features.Known Bugs
Session::RegisterOperationBeginCallback
and Session::RegisterOperationEndCallback
cannot detect all stations. Because of this bug, these functions are not recommended for now. Use the Session::RegisterStationEventCallback
function instead. Note, however, that there is a problem with packets sometimes arriving from stations before they have participated in the session. Versions of APIs that correct the problems of the Session::RegisterOperationBeginCallback
and Session::RegisterOperationEndCallback
functions will be provided in a future release after CTR-NEX 3.0.0 RC2.Additions and Changes
General
UTF-8
(with BOM). However, the DDL files and the files automatically generated by the DDL compiler are still Shift-JIS
.Facade
NgsFacade::GetServerTime
function.NgsFacade::Login
function now returns the correct error codes (102-XXX) for the authentication process that occurs during asynchronous processing.Matchmaking
MatchmakeSessionSearchCriteria
how to select which matchmaking session to join when multiple matchmaking sessions satisfy the search criteria. For more information, see the reference manual.Ranking
qVector<qByte>
. The type has been changed for the arguments or the returns values of the RankingClient::UploadCommonData
, RankingClient::GetCommonData
, and RankingRankData::GetCommonData
functions.RankingResult::GetRankDataList
function has been changed to const qVector<RankingRankData>
.Utilities
DebugClient
class for recording to the server a log of the APIs called when communicating with the server, and for referencing that call log. For more information, see the programming manual.P2P
Scheduler::Dispatch
function now returns the remaining number of unprocessed jobs. For more information, see the function reference.Sample Demos
GameID
used in the sample demos has been changed to the ID for the CTR-NEX 3.0.0 RC2 sample demo server. The RC2 and RC1 game servers are not compatible. In the next release you will no longer be able to use the RC1 sample demo server.Automatch
sample where received packets were getting destroyed because DirectStream::Enable
was running late.RankingSimple
sample where there were memory leaks when the call to the UtilityClient::AcquireNexUniqueId
function failed.DebugClient
.Bug Fixes
DEFAULT_BUFFER_SIZE
definition name for Buffer.h
and the INVALID_HANDLE_VALUE
definition name for Defs.h
that were defined in preprocessor define
statements were too general in nature and could duplicate definition names used in the application.Programming Manual
Additions and Changes
P2P
NetZ::Terminate
function failed and memory leaks occurred, the specifications now require that the NetZ::Terminate
function is always executed before the NetZ destructor is executed. For more information, see NetZTerminateErrorHandle
in the sample demo. This bug is scheduled for correction.nn::nex::MultiUnitHeap
.SystemError::SetErrorHandlingFunction
function has been discontinued, and instead errors are obtained by using the NetZ::GetFatalError
function. For more information, see the reference documentation.DirectStream
and DirectTransport
communications is up to 1250 bytes.AutoMatch
sample to strengthen signatures in P2P communications.StationEventCallback
is no longer recommended. Use the Session::RegisterOperationEndCallback
function instead.
StationEventCallback
will remain to preserve compatibility, but its use is not recommended. StationEvent::Leaved
, StationEvent::Left
, and StationEvent::None
have been eliminated.
Session::LeaveSession
function has been renamed to Session::DestroySession
and the function reference has been revised.
StreamBundling
for the bundling of packets at the stream level, and BundlingPolicy
for bundling in units of duplicated objects. These functions are configured to perform bundling on each call of the Scheduler::Dispatch
function, so that the sending of packets is not delayed until the next call of the Scheduler::Dispatch
function.
Matchmaking
HostMigrationCallback
constructor. Normally you specify the MatchMakingClient::StaticUpdateSessionHost
function.MatchMakingClient::FindByID
, MatchmakeExtensionClient::BrowseMatchmakeSession
, and MatchmakeExtensionClient::GetPlayingSession
can now search for up to 100 matches. If a value greater than 100 is specified for the ID list size or the ResultRange
size passed to the arguments, the asynchronous process returns an error (QRESULT_ERROR(Core,InvalidArgment)
) even if there are 100 or fewer matches to the search conditions.Ranking
Sample Demos
NgsFacade::Login
function.AutoMatch
sample so that it uses DirectStream
.HostMigrationCallBack
constructor specification change in the AutoMatch
sample.NetZTerminateErrorHandle
sample. Sometimes memory leaks occur when the NetZ::Terminate
function fails, and this must be handled by the application until the problem is fixed in NEX. This sample provides an example of that handling.Bug Fixes
Session::JoinSession
function failed if a client let too much time pass before actually starting peer-to-peer communications after executing the ConnectivityManager::StartNATSession
function.
Programming Manual
Reference Manual
Bug Fixes
ThreadModeSafeUser
, ThreadModeSafeTransportBuffer
, or ThreadModeInternal
, the library halted on an assertion when NAT traversal was performed.Additions and Changes
General
TransportThread
-related settings is no longer publicly available. Use TransportBuffer
.TransportBufferThreadMode
has been set to TransportBufferThreadMulti
for better performance. In accordance with this change, the APIs for configuring settings related to TransportBufferThreadMode
and TransportBufferThreadSingle
are no longer publicly available.Core::SetTransportBufferThreadCoreNo
can now be used. For more information, see the function reference.GetRequiredMemSize
function requires more memory when there are large numbers of any of the following sounds.
CallContext::GetOutcome
function.Matchmaking
Session::JoinSession
function when the communication partner cannot communicate at the time of a NAT transversal.Ranking
UtilityClient
for issuing and checking NEX unique IDs.RankingClient::GetApproxOrder
function for estimating the ranking order based on scores.RankingClient::GetStats
function for getting statistical values for individual categories such as total score and average score.RankingClient::GetApproxOrder
function and the RankingClient::GetStats
function to the RankingSimple
sample demo.Bug Fixes
ErrorUtil.h
, the header for unavailable features, was included in the package. It has been removed.Additions and Changes
CONFIDENTIAL