Hosting a Game / Session (P2PNAT)

The EOSCore:: Plugin enables you to host / connect to game sessions using P2PNAT (nat traversal/nat punchthrough) without the need to configure firewalls.

REQUIREMENTS

CREATING

You can use the default CreateSsession node in UE4 to create a default EOS Session!

You can also create sessions with custom Session Name using the “CreateEOSSession” node

It’s as simple as that!

Connecting to a Game / Session (P2PNAT)

The EOSCore:: Plugin enables you to host / connect to game sessions using P2PNAT (nat traversal/nat punchthrough) without the need to configure firewalls.

REQUIREMENTS

CONNECTING

The address format for connecting to a EOS Session is; “eoscore.user_product_id

An example:

open "eoscore.abc123123123123"

Or you can join via JoinSession node if you have a valid search result (from using FindSessions node)

It’s as simple as that!

EOSCore:: Online Subsystem

DefaultEngine.ini (1.8.0 and above, ue 4.25+)

[OnlineSubsystem]
DefaultPlatformService=EOS

[/Script/OnlineSubsystemEOS.NetDriverEOS]
NetConnectionClassName="OnlineSubsystemEOS.NetConnectionEOS"
bIsUsingP2PSockets=true

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOS.NetDriverEOS",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

DefaultEngine.ini (Legacy pre v1.8.0)

[OnlineSubsystem]
DefaultPlatformService=EOSCore

[/Script/OnlineSubsystemEOSCore.EOSNetDriver]
NetConnectionClassName="OnlineSubsystemEOSCore.EOSNetConnection"

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEOSCore.EOSNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[EOSCore]
bEnabled=true
bDebugging=true
bAutoLogin=false
ProductId=xxx
SandboxId=xxx
DeploymentId=xxx
ClientId=xxx
ClientSecret=xxx
ProductName=EOSCore Product
ProductVersion=1.0

EOSCore:: 1.4

General

  • Updated EOS SDK to 1.7.0
  • EOSCore:: will now compile for Linux.
    Linux functionality is untested

Lobby

  • Fixed missing AddNotify IDs not being set properly
  • New function: EOSLobbyAddNotifyLobbyInviteAccepted
  • New function: EOSLobbyRemoveNotifyLobbyInviteAccepted
  • New delegate: OnLobbyInviteAcceptedCallbackInfo

P2P

  • EOSP2PSendPacket now supports optional reliability and optional ordering. Ordered packets are only ordered relative to other ordered packets. Ordered packets are always reliable.
  • New function: EOS_SetRelayControl and EOS_GetRelayControl to control usage of P2P relay servers. Relay servers can now be:Disabled: Relay servers will not be used for P2P connections.
  • New function: EOS_SetPortRange and EOS_GetPortRange to control what network ports are preferred by P2P.

EOS SDK 1.7.0 Changelog

Authentication

  • New: EOS_Auth_Login for External Accounts
    • Added type EOS_LCT_ExternalAuth to EOS_ELoginCredentialType.
    • Added ExternalType to EOS_Auth_Credentials data structure.
    • Added support for authentication with external Encrypted Steam App Ticket. This integrates with Epic’s Account Portal and, after success, links the Steam account to the specified Epic Account.

Core

  • Failed HTTP requests have been changed to use exponential backoff when retrying.
  • Added more error logging during EOS_Initialize for several cases that return EOS_UnexpectedError
  • Bug Fix: EOS_EpicAccountId_FromString and EOS_ProductUserId_FromString properly handle UTF8 character input. Proper identifiers do not include anything other than basic ANSI but this prevents any issues in the future.

iOS Mobile

  • The SDK is now available on iOS platforms for iOS11+
  • iOS projects that embed the SDK need to have bitcode disabled and must run on a physical iOS device. Simulator functionality is under investigation.
  • Added EOS_Connect_Login support for EOS_ECT_APPLE_ID_TOKEN, using the native “Sign in with Apple” API to provide a JWT Token in exchange for access (Requires iOS13+).
  • Added EOS_Auth_Login support for EOS_LCT_AccountPortal on iOS. This is a web authentication session login via the Epic Account Portal, which supports many authentication services.
  • Added the ability for the SDK to Load, Save and Delete items in the iOS Keychain on device. This is handled automatically for the dev during login. This persistent authentication can be deleted at any time when required by the dev.
  • Added an additional login sample that demonstrates:
    • Logging into the EOS Auth Interface using the Account Portal
    • Auto login with any previously persisted secure credentials in the Keychain
    • Logout flows and Keychain credential removal
    • Optionally demonstrates iOS “Sign in with Apple” for logging into the EOS Connect Interface (See sample documentation on how to enable this feature).

Leaderboards

  • Bug Fix: Leaderboard interface will now properly return EOS_NotFound when retrieving data for a leaderboard that doesn’t exist.

Lobbies

  • Added the presence concept to lobbies and integrated into the Social Overlay.
  • Added some improvements to lobby recovery during backend service deployments. Clients will try to recover if lobby information becomes out of sync during that time.

P2P

  • NewEOS_P2P_SendPacket now supports optional reliability and optional ordering. Ordered packets are only ordered relative to other ordered packets. Ordered packets are always reliable.
  • New: Added functions EOS_SetRelayControl and EOS_GetRelayControl to control usage of P2P relay servers. Relay servers can now be:
    • Disabled: Relay servers will not be used for P2P connections.
    • Allowed: if direct connection fails relays will be used.
    • Forced: Relays will always be used for P2P connections.
  • New: Added functions EOS_SetPortRange and EOS_GetPortRange to control what network ports are preferred by P2P.

Samples

  • New: Added Steam Authentication Support
    • Added Steam build targets to each config for AuthAndFriends project. The Steam version is set up to include Steam SDK headers, links with the Steam SDK library and copies over required Steam SDK files to the sample Bin folder pre-build. The Steamworks SDK must be downloaded by the developer.
    • Build will copy steam_appid.txt from the root of the project once it exists there.
    • Added SteamManager to manage Steam Init, Requesting Steam Encrypted App Ticket and invoking login with received App Ticket as a string to EOS_Auth_Login.
    • After user info is retrieved, the Steam DisplayName is displayed in the output console to verify external user info is correct via FUsers::GetExternalAccountDisplayName().
  • Bug Fix: Fixed some sample crashes which could occur while logged in and closing the sample.
  • Bug Fix: Lobby sample to now properly disconnects on “unexpected disconnect” message from SDK

Session Based Matchmaking

  • Bug FixEOS_Sessions_CreateSessionModification and EOS_Sessions_UpdateSessionModification will now properly null out the out parameter on failure.
  • Bug FixEOS_Sessions_CreateSessionModification properly checks that a user is logged in before succeeding if not creating sessions as a dedicated server.

Social Overlay

  • Achievements have been enabled and are now displayed in the overlay. Older versions of the SDKs will not show achievements and require the upgrade.
  • Bug Fix: Fixed a localization issue that caused missing text in Achievement notifications for locales other than English
  • Delay the initial Social Overlay startup until the EOS SDK knows rather all associated overlay features are available for the client credentials. This will allow removing the Achievements tab from the Social Overlay on games that do not currently use the EOS Service.
  • Bug Fix: Improved handling of Social Overlay UI interactions when dealing with backend service calls with a EOS_EResult that will retry (determined by EOS_EResult_IsOperationComplete returning EOS_FALSE).