Feat: Addresses Issue #44 by adding support for crossplay between Steam and Epic
This is a large revision for our server browser and match making system that we hope to eventually release as a stand alone game menu and server browser system like we did for Unreal 4. There were a lot of improvements including a friends only option and the ability to password the listen server. This isn't a secure authentication mechanism. It's a simple one that is designed to stop average users from joining a server they aren't invited to. We weren't able to make Unreal 5.1 work with crossplay while also offering the option for Steam users to optionally link their accounts to Epic. So, in this release, we are defaulting Steam users to unlinked accounts. This removes the ability for Steam users to join their friends and it also removes Steam friends lists. We hope to fix this in the future by offering optionally linked accounts by migrating to Unreal 5.3 which hopefully offers more fine tuning of the crossplay features.
This commit is contained in:
parent
1f7c1c238d
commit
cfffa2be20
45 changed files with 628 additions and 180 deletions
|
|
@ -19,10 +19,6 @@
|
||||||
"Name": "AdvancedSteamSessions",
|
"Name": "AdvancedSteamSessions",
|
||||||
"Enabled": true
|
"Enabled": true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"Name": "GitSourceControl",
|
|
||||||
"Enabled": true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"Name": "LoadingScreen",
|
"Name": "LoadingScreen",
|
||||||
"Enabled": true
|
"Enabled": true
|
||||||
|
|
@ -70,6 +66,18 @@
|
||||||
{
|
{
|
||||||
"Name": "WebBrowserWidget",
|
"Name": "WebBrowserWidget",
|
||||||
"Enabled": true
|
"Enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "OnlineServicesEOS",
|
||||||
|
"Enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "OnlineSubsystemEOS",
|
||||||
|
"Enabled": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "SteamSockets",
|
||||||
|
"Enabled": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
[/Script/UnrealEd.AnalyticsPrivacySettings]
|
||||||
|
bSendUsageData=False
|
||||||
|
|
||||||
[UnrealEd.SimpleMap]
|
[UnrealEd.SimpleMap]
|
||||||
|
|
||||||
[EditoronlyBP]
|
[EditoronlyBP]
|
||||||
|
|
|
||||||
|
|
@ -29,34 +29,6 @@ PktLoss=0
|
||||||
PktOrder=0
|
PktOrder=0
|
||||||
PktDup=0
|
PktDup=0
|
||||||
|
|
||||||
[/Script/Engine.GameEngine]
|
|
||||||
!NetDriverDefinitions=ClearArray
|
|
||||||
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
|
||||||
|
|
||||||
|
|
||||||
[OnlineSubsystem]
|
|
||||||
DefaultPlatformService=Steam
|
|
||||||
PollingIntervalInMs=20
|
|
||||||
bHasVoiceEnabled=false
|
|
||||||
|
|
||||||
|
|
||||||
[OnlineSubsystemSteam]
|
|
||||||
bEnabled=true
|
|
||||||
SteamDevAppId=4020030
|
|
||||||
GameServerQueryPort=27015
|
|
||||||
bRelaunchInSteam=false
|
|
||||||
GameVersion=1.0
|
|
||||||
bVACEnabled=1
|
|
||||||
bAllowP2PPacketRelay=true
|
|
||||||
P2PConnectionTimeout=90
|
|
||||||
|
|
||||||
|
|
||||||
[/Script/OnlineSubsystemSteam.SteamNetDriver]
|
|
||||||
NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"
|
|
||||||
|
|
||||||
[Voice]
|
|
||||||
bEnabled=false
|
|
||||||
|
|
||||||
[/Script/Engine.StreamingSettings]
|
[/Script/Engine.StreamingSettings]
|
||||||
s.EventDrivenLoaderEnabled=True
|
s.EventDrivenLoaderEnabled=True
|
||||||
s.AsyncLoadingThreadEnabled=True
|
s.AsyncLoadingThreadEnabled=True
|
||||||
|
|
@ -215,3 +187,122 @@ ConnectionType=USBOnly
|
||||||
bUseManualIPAddress=False
|
bUseManualIPAddress=False
|
||||||
ManualIPAddress=
|
ManualIPAddress=
|
||||||
|
|
||||||
|
;=============================================================================
|
||||||
|
; Enabling this section will make the logs "noisy" for troubleshooting.
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
;[Core.Log]
|
||||||
|
;LogOnline=VeryVerbose
|
||||||
|
;LogOnlineSessions=VeryVerbose
|
||||||
|
;LogOnlineIdentity=Verbose
|
||||||
|
;LogOnlineSubsystemEOS=Verbose
|
||||||
|
;LogEOS=VeryVerbose
|
||||||
|
;LogEOSSDK=VeryVerbose
|
||||||
|
;LogEOSAuth=Verbose
|
||||||
|
;LogEOSConnect=Verbose
|
||||||
|
|
||||||
|
;#########################################################################################################################
|
||||||
|
; The OnlineSubsystem config in /Config/DefaultEngine.ini goes below here.
|
||||||
|
; When packaging for crossplay using EOSPlus, paste OnlineSubsystemEOSPlus(Steam/Epic).ini below and make sure to add the artifacts.
|
||||||
|
; Note: Do not use OnlineSubsystemEOS.ini for EOSPlus. use OnlineSubsystemEOSPlusEpic.ini.
|
||||||
|
; When packaging for Steam without crossplay, paste OnlineSubsystemSteam.ini below.
|
||||||
|
; When packaging for EOS without crossplay, paste OnlineSubsystemEOS.ini below and make sure to add the artifacts.
|
||||||
|
;#########################################################################################################################
|
||||||
|
|
||||||
|
;=============================================================================
|
||||||
|
; EOSPlus Online Subsystem For Epic EOS. (Tested as of 02-2026)
|
||||||
|
; Note: If you do not add the Artifacts and Product Settings, this config defaults as if it's LAN without EOSPlus or EOS.
|
||||||
|
; The easiest method for packaging and testing is to use the OnlineSubsystemSteam.ini config since Steam allows use of their server lists without a login.
|
||||||
|
; Paste this to the bottom of DefaultEngine.ini when packaging an EOSPlus Epic EOS build of the game.
|
||||||
|
; !!! IMPORTANT !!!! Make sure to paste in the settings for the Epic Product Settings and Artifacts Section and
|
||||||
|
; !!! IMPORTANT !!!! DELETE them when you are done. Do not commit them! They are secrets.
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
[/Script/Engine.Engine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[/Script/Engine.GameEngine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[Voice]
|
||||||
|
bEnabled=false
|
||||||
|
|
||||||
|
[OnlineSubsystem]
|
||||||
|
DefaultPlatformService=EOS
|
||||||
|
NativePlatformService=EOS
|
||||||
|
|
||||||
|
[OnlineSubsystemEOS]
|
||||||
|
; Setting this to bEnabled=True and [/Script/OnlineSubsystemEOS.EOSSettings] bUseEAS=False,
|
||||||
|
; then Login User Auth Type "" "AccountPortal" or "External_Auth_Steam" sets the crossplay UniqueNetID.
|
||||||
|
; Server hosting then works. The UniqueNetID is set to the Local Computer Account if Steam is not running.
|
||||||
|
bEnabled=True
|
||||||
|
bEnableOverlay=True
|
||||||
|
; Allow fallbacks to relays if direct P2P fails. Added for testing NAT punchthrough on hotspots.
|
||||||
|
; This may increase latency. Use the console command Net.EOS.DumpICEStats to log and see if it says "Relay" vs "Host" or "Srflx"
|
||||||
|
; bUseRelay=True
|
||||||
|
; Force relays for all P2P connections. This will introduce latency. Double check if this is true. It's not verified.
|
||||||
|
; bUseP2PRelay=true or bForceRelay=true
|
||||||
|
; Before shipping, make sure to zero out this section below here and do not commit it. It's a secret.
|
||||||
|
; Start of the Epic Product Settings Section
|
||||||
|
|
||||||
|
; End of the Epic Product Settings Section
|
||||||
|
|
||||||
|
[OnlineSubsystemEOSPlus]
|
||||||
|
bEnabled=true
|
||||||
|
;bUseLobbies=false
|
||||||
|
|
||||||
|
[OnlineSubsystemSteam]
|
||||||
|
bEnabled=False
|
||||||
|
bUseSteamNetworking=False
|
||||||
|
|
||||||
|
[/Script/SocketSubsystemEOS.NetDriverEOSBase]
|
||||||
|
bIsUsingP2PSockets=true
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
|
||||||
|
+CompatibleUniqueNetIdTypes=EOS
|
||||||
|
+CompatibleUniqueNetIdTypes=EOSPlus
|
||||||
|
+CompatibleUniqueNetIdTypes=Steam
|
||||||
|
MappedUniqueNetIdTypes=(("EOSPlus","EOS"),("EOSPlus","Steam"))
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineSessionClient]
|
||||||
|
bAllowJoinInProgress=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
||||||
|
; How long to wait for the very first packet response. (Default is usually 60.0)
|
||||||
|
InitialConnectTimeout=20.0
|
||||||
|
; How long to wait for a connection that was previously working but went silent.
|
||||||
|
ConnectionTimeout=20.0
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemEOS.EOSSettings]
|
||||||
|
; If bUseEAS=True, then Login User Auth Type "AccountPortal" or "External_Auth_Steam"
|
||||||
|
; opens the Epic linking page instead of setting the crossplay UniqueNetID. "" Is untested.
|
||||||
|
; bUseEAS=False gives Steam users a crossplay UniqueNetID but they cannot trigger the linking overlay.
|
||||||
|
bUseEAS=True
|
||||||
|
bUseEOSConnect=True
|
||||||
|
bUseEOSSessions=True
|
||||||
|
bMirrorPresenceToEAS=True
|
||||||
|
bMirrorStatsToEOS=False
|
||||||
|
bMirrorAchievementsToEOS=False
|
||||||
|
bEnableOverlay=True
|
||||||
|
bEnableSocialOverlay=True
|
||||||
|
bEnableEditorOverlay=True
|
||||||
|
DefaultArtifactName="Cardinal Fall"
|
||||||
|
bShouldEnforceBeingLaunchedByEGS=False
|
||||||
|
TitleStorageReadChunkLength=0
|
||||||
|
CacheDir=CacheDir
|
||||||
|
TickBudgetInMilliseconds=0
|
||||||
|
; Before shipping, make sure to add the "Artifacts" section below here and do not commit it. It's a secret.
|
||||||
|
; Use either the Dev Sandbox (for internal testing) or the Live Sandbox (for releases)
|
||||||
|
; Start of the Artifacts Section
|
||||||
|
|
||||||
|
; End of the Artifacts Section
|
||||||
|
|
||||||
|
;#########################################################################################################################
|
||||||
|
; The OnlineSubsystem config in /Config/DefaultEngine.ini goes above here.
|
||||||
|
; Do Not Commit Anything Listed Below Here.
|
||||||
|
; The lines below were likely added by the editor.
|
||||||
|
; Put them in their proper place above before making a commit.
|
||||||
|
;#########################################################################################################################
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ ProjectName=Cardinal Fall
|
||||||
CompanyName=Metahusk
|
CompanyName=Metahusk
|
||||||
Homepage="http://metahusk.com"
|
Homepage="http://metahusk.com"
|
||||||
Description=An Unreal Engine 4 Community Developed Game By Metahusk
|
Description=An Unreal Engine 4 Community Developed Game By Metahusk
|
||||||
ProjectVersion=0.0.0.5
|
ProjectVersion=0.1.5.3
|
||||||
CopyrightNotice=All Rights Reserved
|
CopyrightNotice=All Rights Reserved
|
||||||
ProjectDisplayedTitle=NSLOCTEXT("", "1106FCE8431748B3C91F6E83F252772B", "Cardinal Fall")
|
ProjectDisplayedTitle=NSLOCTEXT("", "1106FCE8431748B3C91F6E83F252772B", "Cardinal Fall")
|
||||||
|
|
||||||
|
|
@ -33,8 +33,8 @@ IncludeDebugFiles=False
|
||||||
BlueprintNativizationMethod=Disabled
|
BlueprintNativizationMethod=Disabled
|
||||||
bIncludeNativizedAssetsInProjectGeneration=False
|
bIncludeNativizedAssetsInProjectGeneration=False
|
||||||
bExcludeMonolithicEngineHeadersInNativizedCode=False
|
bExcludeMonolithicEngineHeadersInNativizedCode=False
|
||||||
UsePakFile=True
|
UsePakFile=False
|
||||||
bUseIoStore=False
|
bUseIoStore=True
|
||||||
bUseZenStore=False
|
bUseZenStore=False
|
||||||
bMakeBinaryConfig=False
|
bMakeBinaryConfig=False
|
||||||
bGenerateChunks=False
|
bGenerateChunks=False
|
||||||
|
|
|
||||||
65
Config/OnlineSubsystemEOS.ini
Normal file
65
Config/OnlineSubsystemEOS.ini
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
;==========================================================
|
||||||
|
; EOS Online Subsystem. Use the OnlineSubsystemEOSPlusEpic.ini config for crossplay. (Tested as of 02-2026)
|
||||||
|
; For use on the bottom of DefaultEngine.ini when packaging an Epic Store build of the game WITHOUT crossplay.
|
||||||
|
; !!! IMPORTANT !!!! Make sure to paste in the settings for the Artifacts and Product Settings section and DELETE them when you are done. They are secrets.
|
||||||
|
; Do not commit the changes to DefaultEngine.ini and delete it when you're done. This ini is a secret.
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[/Script/Engine.Engine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[/Script/Engine.GameEngine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[Voice]
|
||||||
|
bEnabled=False
|
||||||
|
|
||||||
|
[OnlineSubsystem]
|
||||||
|
DefaultPlatformService=EOS
|
||||||
|
|
||||||
|
[OnlineSubsystemEOS]
|
||||||
|
bEnabled=True
|
||||||
|
; Allow fallbacks to relays if direct P2P fails. Added for testing NAT punchthrough on hotspots.
|
||||||
|
; This may increase latency. Use the console command Net.EOS.DumpICEStats to log and see if it says "Relay" vs "Host" or "Srflx"
|
||||||
|
; bUseRelay=True
|
||||||
|
; Force relays for all P2P connections. This will introduce latency. Double check if this is true. It's not verified.
|
||||||
|
; bUseP2PRelay=true or bForceRelay=true
|
||||||
|
; Before shipping, make sure to zero out this section below here and do not commit it. It's a secret.
|
||||||
|
; Start of the Epic Product Settings Section
|
||||||
|
|
||||||
|
; End of the Epic Product Settings Section
|
||||||
|
|
||||||
|
[/Script/SocketSubsystemEOS.NetDriverEOSBase]
|
||||||
|
bIsUsingP2PSockets=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineSessionClient]
|
||||||
|
bAllowJoinInProgress=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
||||||
|
; How long to wait for the VERY FIRST packet response (Default is usually 60.0)
|
||||||
|
InitialConnectTimeout=20.0
|
||||||
|
; How long to wait for a connection that was previously working but went silent
|
||||||
|
ConnectionTimeout=20.0
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemEOS.EOSSettings]
|
||||||
|
bUseEAS=True
|
||||||
|
bUseEOSConnect=True
|
||||||
|
bUseEOSSessions=True
|
||||||
|
bMirrorPresenceToEAS=True
|
||||||
|
bMirrorStatsToEOS=False
|
||||||
|
bMirrorAchievementsToEOS=False
|
||||||
|
bEnableOverlay=True
|
||||||
|
bEnableSocialOverlay=True
|
||||||
|
bEnableEditorOverlay=True
|
||||||
|
DefaultArtifactName="Cardinal Fall"
|
||||||
|
bShouldEnforceBeingLaunchedByEGS=False
|
||||||
|
TitleStorageReadChunkLength=0
|
||||||
|
CacheDir=CacheDir
|
||||||
|
TickBudgetInMilliseconds=0
|
||||||
|
; Before shipping, make sure to add the "Artifacts" section below here and do not commit it. It's a secret.
|
||||||
|
; Use either the Dev Sandbox (for internal testing) or the Live Sandbox (for releases)
|
||||||
|
; Start of the Artifacts Section
|
||||||
|
|
||||||
|
; End of the Artifacts Section
|
||||||
89
Config/OnlineSubsystemEOSPlusEpic.ini
Normal file
89
Config/OnlineSubsystemEOSPlusEpic.ini
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
;=============================================================================
|
||||||
|
; EOSPlus Online Subsystem For Epic EOS. (Tested as of 02-2026)
|
||||||
|
; Note: If you do not have the Artifacts and Product Settings, this config defaults as if it's LAN without EOSPlus or EOS.
|
||||||
|
; The easiest method for packaging and testing is to use the OnlineSubsystemSteam.ini config since Steam allows use of their server lists without a login.
|
||||||
|
; Paste this to the bottom of DefaultEngine.ini when packaging an EOSPlus Epic EOS build of the game.
|
||||||
|
; !!! IMPORTANT !!!! Make sure to paste in the settings for the Epic Product Settings and Artifacts Section and
|
||||||
|
; !!! IMPORTANT !!!! DELETE them when you are done. Do not commit them! They are secrets.
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
[/Script/Engine.Engine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[/Script/Engine.GameEngine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[Voice]
|
||||||
|
bEnabled=false
|
||||||
|
|
||||||
|
[OnlineSubsystem]
|
||||||
|
DefaultPlatformService=EOS
|
||||||
|
NativePlatformService=EOS
|
||||||
|
|
||||||
|
[OnlineSubsystemEOS]
|
||||||
|
; Setting this to bEnabled=True and [/Script/OnlineSubsystemEOS.EOSSettings] bUseEAS=False,
|
||||||
|
; then Login User Auth Type "" "AccountPortal" or "External_Auth_Steam" sets the crossplay UniqueNetID.
|
||||||
|
; Server hosting then works. The UniqueNetID is set to the Local Computer Account if Steam is not running.
|
||||||
|
bEnabled=True
|
||||||
|
bEnableOverlay=True
|
||||||
|
; Allow fallbacks to relays if direct P2P fails. Added for testing NAT punchthrough on hotspots.
|
||||||
|
; This may increase latency. Use the console command Net.EOS.DumpICEStats to log and see if it says "Relay" vs "Host" or "Srflx"
|
||||||
|
; bUseRelay=True
|
||||||
|
; Force relays for all P2P connections. This will introduce latency. Double check if this is true. It's not verified.
|
||||||
|
; bUseP2PRelay=true or bForceRelay=true
|
||||||
|
; Before shipping, make sure to zero out this section below here and do not commit it. It's a secret.
|
||||||
|
; Start of the Epic Product Settings Section
|
||||||
|
|
||||||
|
; End of the Epic Product Settings Section
|
||||||
|
|
||||||
|
[OnlineSubsystemEOSPlus]
|
||||||
|
bEnabled=true
|
||||||
|
;bUseLobbies=false
|
||||||
|
|
||||||
|
[OnlineSubsystemSteam]
|
||||||
|
bEnabled=False
|
||||||
|
bUseSteamNetworking=False
|
||||||
|
|
||||||
|
[/Script/SocketSubsystemEOS.NetDriverEOSBase]
|
||||||
|
bIsUsingP2PSockets=true
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
|
||||||
|
+CompatibleUniqueNetIdTypes=EOS
|
||||||
|
+CompatibleUniqueNetIdTypes=EOSPlus
|
||||||
|
+CompatibleUniqueNetIdTypes=Steam
|
||||||
|
MappedUniqueNetIdTypes=(("EOSPlus","EOS"),("EOSPlus","Steam"))
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineSessionClient]
|
||||||
|
bAllowJoinInProgress=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
||||||
|
; How long to wait for the very first packet response. (Default is usually 60.0)
|
||||||
|
InitialConnectTimeout=20.0
|
||||||
|
; How long to wait for a connection that was previously working but went silent.
|
||||||
|
ConnectionTimeout=20.0
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemEOS.EOSSettings]
|
||||||
|
; If bUseEAS=True, then Login User Auth Type "AccountPortal" or "External_Auth_Steam"
|
||||||
|
; opens the Epic linking page instead of setting the crossplay UniqueNetID. "" Is untested.
|
||||||
|
; bUseEAS=False gives Steam users a crossplay UniqueNetID but they cannot trigger the linking overlay.
|
||||||
|
bUseEAS=True
|
||||||
|
bUseEOSConnect=True
|
||||||
|
bUseEOSSessions=True
|
||||||
|
bMirrorPresenceToEAS=True
|
||||||
|
bMirrorStatsToEOS=False
|
||||||
|
bMirrorAchievementsToEOS=False
|
||||||
|
bEnableOverlay=True
|
||||||
|
bEnableSocialOverlay=True
|
||||||
|
bEnableEditorOverlay=True
|
||||||
|
DefaultArtifactName="Cardinal Fall"
|
||||||
|
bShouldEnforceBeingLaunchedByEGS=False
|
||||||
|
TitleStorageReadChunkLength=0
|
||||||
|
CacheDir=CacheDir
|
||||||
|
TickBudgetInMilliseconds=0
|
||||||
|
; Before shipping, make sure to add the "Artifacts" section below here and do not commit it. It's a secret.
|
||||||
|
; Use either the Dev Sandbox (for internal testing) or the Live Sandbox (for releases)
|
||||||
|
; Start of the Artifacts Section
|
||||||
|
|
||||||
|
; End of the Artifacts Section
|
||||||
96
Config/OnlineSubsystemEOSPlusSteam.ini
Normal file
96
Config/OnlineSubsystemEOSPlusSteam.ini
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
;=============================================================================
|
||||||
|
; EOSPlus Online Subsystem For Steam. (Tested as of 02-2026)
|
||||||
|
; Note: If you do not add the Artifacts and Product Settings, this config defaults as if it's Steam without EOSPlus, but it doesn't have the correct Steam config.
|
||||||
|
; The easiest method for packaging and testing is to use the OnlineSubsystemSteam.ini config since Steam allows use of their server lists without a login.
|
||||||
|
; Paste this to the bottom of DefaultEngine.ini when packaging an EOSPlus Steam build of the game.
|
||||||
|
; !!! IMPORTANT !!!! Make sure to paste in the settings for the Epic Product Settings and Artifacts Section and
|
||||||
|
; !!! IMPORTANT !!!! DELETE them when you are done. Do not commit them! They are secrets.
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
;=============================================================================
|
||||||
|
; Make sure to use the Steam VDF install scripts for the bootstrapper
|
||||||
|
; https://docs.redpoint.games/docs/setup/platforms/steam/
|
||||||
|
;=============================================================================
|
||||||
|
|
||||||
|
[/Script/Engine.Engine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[/Script/Engine.GameEngine]
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SocketSubsystemEOS.NetDriverEOSBase",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[Voice]
|
||||||
|
bEnabled=False
|
||||||
|
|
||||||
|
[OnlineSubsystem]
|
||||||
|
DefaultPlatformService=EOSPlus
|
||||||
|
NativePlatformService=Steam
|
||||||
|
|
||||||
|
[OnlineSubsystemEOS]
|
||||||
|
; Setting this to bEnabled=True and [/Script/OnlineSubsystemEOS.EOSSettings] bUseEAS=False,
|
||||||
|
; then Login User Auth Type "" "AccountPortal" or "External_Auth_Steam" sets the crossplay UniqueNetID.
|
||||||
|
; Server hosting then works. The UniqueNetID is set to the Local Computer Account if Steam is not running.
|
||||||
|
bEnabled=True
|
||||||
|
bEnableOverlay=False
|
||||||
|
; Allow fallback to relay if direct P2P fails. Added for testing NAT punchthrough on hotspots.
|
||||||
|
; This may increase latency. Use the console command Net.EOS.DumpICEStats to log and see if it says "Relay" vs "Host" or "Srflx"
|
||||||
|
; bUseRelay=True
|
||||||
|
; Force relays for all P2P connections. This will introduce latency. Double check if this is true. It's not verified.
|
||||||
|
; bUseP2PRelay=true or bForceRelay=true
|
||||||
|
; Before shipping, make sure to zero out this section below here and do not commit it. It's a secret.
|
||||||
|
; Start of the Epic Product Settings Section
|
||||||
|
|
||||||
|
; End of the Epic Product Settings Section
|
||||||
|
|
||||||
|
[OnlineSubsystemEOSPlus]
|
||||||
|
bEnabled=True
|
||||||
|
|
||||||
|
[OnlineSubsystemSteam]
|
||||||
|
bEnabled=True
|
||||||
|
SteamDevAppId=4020030
|
||||||
|
GameVersion=0.1.5.3
|
||||||
|
; For EOSPlus, make sure to turn this off.
|
||||||
|
bUseSteamNetworking=False
|
||||||
|
|
||||||
|
[/Script/SocketSubsystemEOS.NetDriverEOSBase]
|
||||||
|
bIsUsingP2PSockets=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl]
|
||||||
|
+CompatibleUniqueNetIdTypes=EOS
|
||||||
|
+CompatibleUniqueNetIdTypes=EOSPlus
|
||||||
|
+CompatibleUniqueNetIdTypes=Steam
|
||||||
|
MappedUniqueNetIdTypes=(("EOSPlus","EOS"),("EOSPlus","Steam"))
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.OnlineSessionClient]
|
||||||
|
bAllowJoinInProgress=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
||||||
|
; How long to wait for the very first packet response. (Default is usually 60.0)
|
||||||
|
InitialConnectTimeout=20.0
|
||||||
|
; How long to wait for a connection that was previously working but went silent.
|
||||||
|
ConnectionTimeout=20.0
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemEOS.EOSSettings]
|
||||||
|
; If bUseEAS=True, then Login User Auth Type "AccountPortal" or "External_Auth_Steam"
|
||||||
|
; opens the Epic linking page instead of setting the crossplay UniqueNetID. "" Is untested.
|
||||||
|
; bUseEAS=False gives Steam users a crossplay UniqueNetID but they cannot trigger the linking overlay.
|
||||||
|
bUseEAS=False
|
||||||
|
bUseEOSConnect=True
|
||||||
|
bUseEOSSessions=True
|
||||||
|
bMirrorPresenceToEAS=False
|
||||||
|
bMirrorStatsToEOS=False
|
||||||
|
bMirrorAchievementsToEOS=False
|
||||||
|
bEnableOverlay=False
|
||||||
|
bEnableSocialOverlay=False
|
||||||
|
bEnableEditorOverlay=False
|
||||||
|
DefaultArtifactName="Cardinal Fall"
|
||||||
|
bShouldEnforceBeingLaunchedByEGS=False
|
||||||
|
TitleStorageReadChunkLength=0
|
||||||
|
CacheDir=CacheDir
|
||||||
|
TickBudgetInMilliseconds=0
|
||||||
|
; Before shipping, make sure to add the "Artifacts" section below here and do not commit it. It's a secret.
|
||||||
|
; Use either the Dev Sandbox (for internal testing) or the Live Sandbox (for releases)
|
||||||
|
; Start of the Artifacts Section
|
||||||
|
|
||||||
|
; End of the Artifacts Section
|
||||||
42
Config/OnlineSubsystemSteam.ini
Normal file
42
Config/OnlineSubsystemSteam.ini
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
;==========================================================
|
||||||
|
; Steam Online Subsystem. Use the OnlineSubsystemEOSPlusSteam.ini config for crossplay. (Tested as of 02-2026)
|
||||||
|
; Paste this to the bottom of DefaultEngine.ini when packaging an Steam build of the game WITHOUT crossplay.
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[/Script/Engine.GameEngine]
|
||||||
|
; Using Steam Sockets because it fixes the ping 9999 issue.
|
||||||
|
!NetDriverDefinitions=ClearArray
|
||||||
|
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
|
||||||
|
|
||||||
|
[OnlineSubsystem]
|
||||||
|
DefaultPlatformService=Steam
|
||||||
|
PollingIntervalInMs=20
|
||||||
|
bHasVoiceEnabled=False
|
||||||
|
|
||||||
|
[OnlineSubsystemSteam]
|
||||||
|
bEnabled=True
|
||||||
|
SteamDevAppId=4020030
|
||||||
|
GameServerQueryPort=27015
|
||||||
|
bRelaunchInSteam=False
|
||||||
|
GameVersion=0.1.5.3
|
||||||
|
bVACEnabled=1
|
||||||
|
bAllowP2PPacketRelay=True
|
||||||
|
P2PConnectionTimeout=90
|
||||||
|
;When not using lobbies, this makes a listen server visible in the global Steam server browser. Only tested with steam sockets.
|
||||||
|
bInitServerOnClient=True
|
||||||
|
|
||||||
|
[/Script/OnlineSubsystemSteam.SteamNetDriver]
|
||||||
|
; Using Steam Sockets because it fixes the ping 9999 issue.
|
||||||
|
NetConnectionClassName="SteamSockets.SteamSocketsNetConnection"
|
||||||
|
|
||||||
|
[Voice]
|
||||||
|
bEnabled=False
|
||||||
|
|
||||||
|
;A fix for Steam sockets not joining from the public list, but able to join from the friends list on Unreal 5.1.
|
||||||
|
[ConsoleVariables]
|
||||||
|
; Forces the correct protocol (in case this is a problem)
|
||||||
|
net.CurrentHandshakeVersion=2
|
||||||
|
net.MinHandshakeVersion=2
|
||||||
|
; Disables the buggy security checks in 5.1 (the failed security check stopped clients from joining public servers)
|
||||||
|
net.VerifyNetSessionID=0
|
||||||
|
net.VerifyNetClientID=0
|
||||||
BIN
Content/Cardinal/Blueprints/BP_AdminSpectator.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/Blueprints/BP_AdminSpectator.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/Blueprints/BP_GameMode.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/Blueprints/BP_GameMode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/Blueprints/BP_GameState.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/Blueprints/BP_GameState.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/Blueprints/BP_PlayerController.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/Blueprints/BP_PlayerController.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/Blueprints/BP_StaticSpectator.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/Blueprints/BP_StaticSpectator.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_GameInstance.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/BP_GameInstance.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuController.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuController.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuGameMode.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuGameMode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuPlayerState.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuPlayerState.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuStaticSpectator.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Cardinal/MainMenu/Blueprints/BP_MenuStaticSpectator.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/BP_StaticMenuSpectator.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/BP_StaticMenuSpectator.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/Enum_GameModes.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/Enum_GameModes.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/Saves/BP_HostSettingsSave.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/Saves/BP_HostSettingsSave.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/FriendsLine.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/FriendsLine.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/JoiningServerPopup.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/JoiningServerPopup.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/LinkingEpicPopup.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/LinkingEpicPopup.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/PasswordPopup.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/PasswordPopup.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/RadioButtonsLine.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/RadioButtonsLine.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/ServerLine.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Elements/ServerLine.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/InGameMenu.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/InGameMenu.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/MainMenu.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/MainMenu.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/FriendsList.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/FriendsList.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/HostGame.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/HostGame.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/OfflinePlay.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/OfflinePlay.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/SavedGames.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/SavedGames.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/ServerList.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/PlayGamePanels/ServerList.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Submenus/PlayGameSubMenu.uasset
(Stored with Git LFS)
BIN
Content/Cardinal/MainMenu/Blueprints/UI/Submenus/PlayGameSubMenu.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Cardinal/Maps/MainMenu.umap
(Stored with Git LFS)
BIN
Content/Cardinal/Maps/MainMenu.umap
(Stored with Git LFS)
Binary file not shown.
|
|
@ -1,27 +1,37 @@
|
||||||
Differences between Steam and Epic:
|
Differences between Steam and Epic:
|
||||||
Multiplayer is disabled on Epic by having this file present: \Cardinal\Binaries\Win64\disable-multiplayer
|
|
||||||
The uninstaller is renamed and placed in the local directory because Epic cannot access the appdata folder.
|
The uninstaller is renamed and placed in the local directory because Epic cannot access the appdata folder.
|
||||||
|
Steam and Epic use different DefaultEngine.ini configs for their OnlineSubsystems.
|
||||||
The DLC is the same.
|
The DLC is the same.
|
||||||
|
|
||||||
|
|
||||||
To push an update:
|
To push an update:
|
||||||
1. Build a "Shipping" copy of the game. Make sure the target folder is empty and BP_DebugGameSettings has all the variables unchecked.
|
1. Make sure the contents of /Config/OnlineSubsystemEOSPlusEpic.ini are in the /Config/DefaultEngine.ini, not EOSPlusSteam.
|
||||||
2. Copy that "Shipping" build of the game into an Epic BuildPatch Tool folder named CardinalReleaseUpload.
|
2. Paste the Artifacts and Product Settings secrets into /Config/DefaultEngine.ini (There are TWO artifacts sections.)
|
||||||
|
3. Re-open the project because the ini file doesn't load without an editor restart.
|
||||||
|
4. In Project Settings, set the Project Version.
|
||||||
|
5. Package a "Shipping" copy of the game. Make sure the target folder is empty and BP_DebugGameSettings has all the variables unchecked.
|
||||||
|
6. Copy that "Shipping" package of the game into an Epic BuildPatch Tool folder named CardinalReleaseUpload.
|
||||||
> For Example: C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CardinalReleaseUpload
|
> For Example: C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CardinalReleaseUpload
|
||||||
2. And paste a copy of the Credits.txt file into the root of CardinalReleaseUpload.
|
7. And paste a copy of the Credits.txt file into the root of CardinalReleaseUpload.
|
||||||
3. Also, paste a copy of the "Cardinal" folder from the ExtraFiles folder in the CardinalReleaseUpload folder. (This adds the "disable-multiplayer" file into the same directory as the binary.)
|
8. Make sure the root of the CardinalReleaseUpload directory has Epic_CardinalInstaller.exe, Epic_CardinalUninstaller.exe, and Epic_CardinalUninstaller.dat.
|
||||||
4. Then copy Epic_CardinalInstaller.exe, Epic_CardinalUninstaller.exe, and Epic_CardinalUninstaller.dat into the root of the CardinalReleaseUpload directory.
|
9. Then after that, make sure there's a copy of the file FileAttributeList.txt from the project's Project\Distributions\EpicGamesStore folder in the root of Epic's BuildPatch Tool directory. (Do not copy it into your upload directory)
|
||||||
5. After that, create a CloudDir directory in the root of the Epic BuildPatch Tool directory. For Example: C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CloudDir
|
|
||||||
6. (Untested without but maybe not needed?) Then after that, copy the file FileAttributeList.txt from the project's EpicGamesStore folder into the root of Epic's BuildPatch Tool directory. (Do not copy it into your upload directory)
|
|
||||||
> For Example: copy C:\Unreal\Projects\cardinal-fall\EpicGamesStore\FileAttributeList.txt into C:\Unreal\Projects\BuildPatchTool_1.7.3.1
|
> For Example: copy C:\Unreal\Projects\cardinal-fall\EpicGamesStore\FileAttributeList.txt into C:\Unreal\Projects\BuildPatchTool_1.7.3.1
|
||||||
|
10. !!!IMPORTANT!!! Delete the Artifacts and Product Settings secrets. DO NOT commit those TWO sections. They're secrets!
|
||||||
|
|
||||||
In a command prompt, paste this and manually add the SECRET (ClientSecretEnvVar):
|
To start, In a command prompt, paste this and manually add the SECRET (ClientSecretEnvVar):
|
||||||
set EpicSecret=<YourClientSecret>
|
set EpicSecret=<YourClientSecret>
|
||||||
|
|
||||||
After that, paste this into a cmd prompt:
|
After that, paste this into a cmd prompt: (Make sure to set the -BuildVersion and -PrereqIds to a unique value each time. If the -PrereqIds is the same, it will not run the Epic_CardinalInstaller.exe on re-installs.)
|
||||||
Important! To push an update for the game, change the BuildVersion. (It will say The artifact "ArtifactID" already has a binary registereed with version "BuildVersion".)
|
Important!!! To push an update for the game, change the BuildVersion and the PrereqIds.
|
||||||
C:\Unreal\Projects\BuildPatchTool_1.7.3.1\Engine\Binaries\Win64\BuildPatchTool.exe -OrganizationId="o-av2at78fnjrda5k4xzj8duluewkzk8" -ProductId="4c095655c4144ced8f03b770c18dd906" -ArtifactId="8b788ebc4e1e462c8ce9bfbc6ffbef59" -ClientId="xyza7891KpEHJU5XXWJP4oFx5wbKfeva" -ClientSecretEnvVar="EpicSecret" -mode=UploadBinary -BuildRoot="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CardinalReleaseUpload" -CloudDir="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CloudDir" -BuildVersion="Release4.3" -AppLaunch="Cardinal.exe" -AppArgs="" -PrereqPath="Epic_CardinalInstaller.exe" -PrereqArgs="/verysilent" -UninstallActionPath="Epic_CardinalUninstaller.exe" -UninstallActionArgs="/verysilent" -FileAttributeList="C:\Unreal\Projects\cardinal-fall\EpicGamesStore\FileAttributeList.txt"
|
C:\Unreal\Projects\BuildPatchTool_1.7.3.1\Engine\Binaries\Win64\BuildPatchTool.exe -OrganizationId="o-av2at78fnjrda5k4xzj8duluewkzk8" -ProductId="4c095655c4144ced8f03b770c18dd906" -ArtifactId="8b788ebc4e1e462c8ce9bfbc6ffbef59" -ClientId="xyza7891KpEHJU5XXWJP4oFx5wbKfeva" -ClientSecretEnvVar="EpicSecret" -mode=UploadBinary -BuildRoot="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CardinalReleaseUpload" -CloudDir="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CloudDir" -AppLaunch="Cardinal.exe" -AppArgs="" -PrereqPath="Epic_CardinalInstaller.exe" -PrereqArgs="/verysilent" -UninstallActionPath="Epic_CardinalUninstaller.exe" -UninstallActionArgs="/verysilent" -FileAttributeList="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\FileAttributeList.txt" -BuildVersion="0.1.5.3b" -PrereqIds="0.1.5.3b"
|
||||||
|
|
||||||
|
Double Check:
|
||||||
|
1. Make sure the correct settings and TWO settings were pasted into /Config/DefaultEngine.ini
|
||||||
|
2. Make sure it was a SHIPPING build with all the flags in BP_DebugGameSettings set to false / unchecked.
|
||||||
|
3. Make sure the artifact secrets were pasted into BOTH sections of the DefaultEngine.ini.
|
||||||
|
4. Make sure the current Credits.txt files is copied into the root of the folder.
|
||||||
|
5. Make sure the installer, uninstaller, and dat files are present in the root directory.
|
||||||
|
6. Make sure the BuildPatchTool root directory has the FileAttributeList.txt file.
|
||||||
|
7. MAKE SURE the TWO artifacts are DELETED.
|
||||||
|
|
||||||
For the DLC, from the Steam directory paste the dlc-bronze, dlc-silver, dlc-gold folders into the BuildPatch Tool root, and then run these in a cmd prompt:
|
For the DLC, from the Steam directory paste the dlc-bronze, dlc-silver, dlc-gold folders into the BuildPatch Tool root, and then run these in a cmd prompt:
|
||||||
Bronze:
|
Bronze:
|
||||||
|
|
@ -31,14 +41,6 @@ C:\Unreal\Projects\BuildPatchTool_1.7.3.1\Engine\Binaries\Win64\BuildPatchTool.e
|
||||||
Gold:
|
Gold:
|
||||||
C:\Unreal\Projects\BuildPatchTool_1.7.3.1\Engine\Binaries\Win64\BuildPatchTool.exe -OrganizationId="o-av2at78fnjrda5k4xzj8duluewkzk8" -ProductId="4c095655c4144ced8f03b770c18dd906" -ArtifactId="56a328ff349b46f0bab68741ab258022" -ClientId="xyza7891KpEHJU5XXWJP4oFx5wbKfeva" -ClientSecretEnvVar="EpicSecret" -mode=UploadBinary -BuildRoot="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\dlc-gold" -CloudDir="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CloudDir" -BuildVersion="Release2" -AppLaunch="" -AppArgs=""
|
C:\Unreal\Projects\BuildPatchTool_1.7.3.1\Engine\Binaries\Win64\BuildPatchTool.exe -OrganizationId="o-av2at78fnjrda5k4xzj8duluewkzk8" -ProductId="4c095655c4144ced8f03b770c18dd906" -ArtifactId="56a328ff349b46f0bab68741ab258022" -ClientId="xyza7891KpEHJU5XXWJP4oFx5wbKfeva" -ClientSecretEnvVar="EpicSecret" -mode=UploadBinary -BuildRoot="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\dlc-gold" -CloudDir="C:\Unreal\Projects\BuildPatchTool_1.7.3.1\CloudDir" -BuildVersion="Release2" -AppLaunch="" -AppArgs=""
|
||||||
|
|
||||||
|
To make the update active in the launcher:
|
||||||
Double Check:
|
1. Activate the Binary: In the Dev Portal, go to Epic Games Store > Artifacts and Binaries. Find your artifact, click Edit, and set your recently uploaded binary as the Active Binary
|
||||||
1. Make sure it was a SHIPPING build with all the flags in BP_DebugGameSettings set to false / unchecked.
|
Note: To download, you will need to redeem the Dev version using the keys in Epic Games Store > Access Keys. Product Settings > Player Groups doesn't always work.
|
||||||
2. Make sure the ExtraFiles copied the file "disable-multiplayer" in the same directory as the binary.
|
|
||||||
3. Make sure the current Credits.txt files is copied into the root of the folder.
|
|
||||||
4. Make sure the installer and uninstaller files are present in the root directory.
|
|
||||||
5. It's unknown if the FileAttributeList.txt file is neccessary. It hasn't been tested without.
|
|
||||||
|
|
||||||
|
|
||||||
Testing:
|
|
||||||
Bug: The game asks for network priviledges. Epic doesn't have an easy way to fix this. It might require using a script?
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,10 @@
|
||||||
"AppBuild"
|
"AppBuild"
|
||||||
{
|
{
|
||||||
"AppID" "4020030" // Your AppID
|
"AppID" "4020030"
|
||||||
"Desc" "Your build description here" // internal description for this build
|
"Desc" "No Description" // consider updating your description or leave it and change it within Steam
|
||||||
// "Preview" "1" // make this a preview build only, nothing is uploaded
|
// "SetLive" "alpha" // remove the comment to put this build on the beta branch
|
||||||
// "Local" "..\..\ContentServer\htdocs" // put content on local content server instead of uploading to Steam
|
"ContentRoot" "..\content\"
|
||||||
// "SetLive" "AlphaTest" // set this build live on beta branch AlphaTest
|
"verbose" "0"
|
||||||
"ContentRoot" "..\content\" // content root folder relative to this script file
|
|
||||||
// "BuildOutput" "D:\build_output\" // put build cache and log files on different drive for better performance
|
|
||||||
"verbose" "0" // spew more build details in console
|
|
||||||
"Depots"
|
"Depots"
|
||||||
{
|
{
|
||||||
// file mapping instructions for each depot are in separate script files
|
// file mapping instructions for each depot are in separate script files
|
||||||
|
|
|
||||||
|
|
@ -1,30 +1,16 @@
|
||||||
"DepotBuild"
|
"DepotBuild"
|
||||||
{
|
{
|
||||||
// Set your assigned depot ID here
|
|
||||||
"DepotID" "4020031"
|
"DepotID" "4020031"
|
||||||
// include all files recursivley
|
"ContentRoot" "."
|
||||||
|
// 1. Map the game files
|
||||||
"FileMapping"
|
"FileMapping"
|
||||||
{
|
{
|
||||||
// This can be a full path, or a path relative to ContentRoot
|
|
||||||
"LocalPath" "*"
|
"LocalPath" "*"
|
||||||
// This is a path relative to the install folder of your game
|
|
||||||
"DepotPath" "."
|
"DepotPath" "."
|
||||||
// If LocalPath contains wildcards, setting this means that all
|
|
||||||
// matching files within subdirectories of LocalPath will also
|
|
||||||
// be included.
|
|
||||||
"Recursive" "1"
|
"Recursive" "1"
|
||||||
}
|
}
|
||||||
"FileMapping"
|
// Set the install script
|
||||||
{
|
"InstallScript" "Steam_InstallScript.vdf"
|
||||||
// copy the install script into the depot root folder
|
// File exclusions
|
||||||
"LocalPath" "Steam_InstallScript.vdf"
|
"FileExclusion" "*.pdb"
|
||||||
"DepotPath" "."
|
}
|
||||||
}
|
|
||||||
"InstallScript" "Steam_InstallScript.vdf"
|
|
||||||
"FileMapping"
|
|
||||||
{
|
|
||||||
// copy the installer into the depot root folder
|
|
||||||
"LocalPath" "Steam_CardinalInstaller.exe"
|
|
||||||
"DepotPath" "."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -3,14 +3,23 @@
|
||||||
"Firewall"
|
"Firewall"
|
||||||
{
|
{
|
||||||
"Cardinal Fall" "%INSTALLDIR%\\Cardinal.exe"
|
"Cardinal Fall" "%INSTALLDIR%\\Cardinal.exe"
|
||||||
|
"Cardinal Fall - Game Engine" "%INSTALLDIR%\\Cardinal\\Binaries\\Win64\\Cardinal-Win64-Shipping.exe"
|
||||||
|
"Cardinal Fall - Dev Testing" "%INSTALLDIR%\\Cardinal\\Binaries\\Win64\\Cardinal.exe"
|
||||||
}
|
}
|
||||||
"Run Process"
|
"Run Process"
|
||||||
{
|
{
|
||||||
"Steam_CardinalInstaller"
|
"Steam_CardinalInstaller"
|
||||||
{
|
{
|
||||||
|
"Description" "Installing the uninstaller..."
|
||||||
"Process 1" "%INSTALLDIR%\\Steam_CardinalInstaller.exe"
|
"Process 1" "%INSTALLDIR%\\Steam_CardinalInstaller.exe"
|
||||||
"Command 1" "/verysilent"
|
"Command 1" "/verysilent"
|
||||||
}
|
}
|
||||||
|
// This is for crossplay with Epic Online Services. If the game doesn't use EOS, remove this.
|
||||||
|
"EpicOnlineServicesInstaller"
|
||||||
|
{
|
||||||
|
"Process 1" "%INSTALLDIR%\\EpicOnlineServicesInstaller.exe"
|
||||||
|
"Command 1" "/quiet /install productId=4c095655c4144ced8f03b770c18dd906"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
"Run Process On Uninstall"
|
"Run Process On Uninstall"
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,46 @@
|
||||||
|
Differences between Steam and Epic:
|
||||||
|
Steam and Epic use different DefaultEngine.ini configs for their OnlineSubsystems.
|
||||||
|
The DLC is the same.
|
||||||
|
|
||||||
|
To update on Steam: (If SteamCMD is already set up)
|
||||||
|
1. Before opening the project, add these three things in the /Config/DefaultEngine.ini file:
|
||||||
|
1a. The EOSPlus Steam config from /Config/OnlineSubsystemEOSPlusSteam.ini.
|
||||||
|
1b. Set GameVersion=X under [OnlineSubsystemSteam].
|
||||||
|
1c. Add the Artifacts and Product Settings secrets. (There are TWO artifacts sections.)
|
||||||
|
2. Open the editor and in the Project Settings, set the Project Version.
|
||||||
|
3. Package a shipping copy of the game. Make sure the target folder is empty and the map's BP_DebugGameSettings has all the variables unchecked.
|
||||||
|
4. Copy that shipping package of the game into the Steam sdk at \sdk\tools\ContentBuilder\content\.
|
||||||
|
> Keep the Steam_InstallScript.vdf, EpicOnlineServicesInstaller.exe, and Steam_CardinalInstaller.exe files in the same directory.
|
||||||
|
5. And paste a current copy of the Credits.txt file into the same directory.
|
||||||
|
> Make sure the folder has Steam_CardinalInstaller.exe, EpicOnlineServicesInstaller.exe, and Steam_InstallScript.vdf.
|
||||||
|
> If you're not using crossplay with Epic, the content folder doesn't need EpicOnlineServicesInstaller.exe. Make sure to comment out the relative section in the Steam_InstallScript.vdf file.
|
||||||
|
6. Decide if the branch should be default or alpha. For an alpha, remove the \\ comment the "SetLive" vdf line on sdk\tools\ContentBuilder\scripts\Steam_AppBuild4020030.vdf to reflect this choice.
|
||||||
|
6. Then open Steam command.
|
||||||
|
> For Example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\builder\steamcmd.exe
|
||||||
|
7. And login.
|
||||||
|
> For example: login <account_name> <password>
|
||||||
|
8. Then build the depot (which uploads the project files in the content folder) For example: run_app_build ..\scripts\Steam_AppBuild4020030.vdf
|
||||||
|
> Quit when done by using the commnad quit.
|
||||||
|
9. After that, you will need to publish the changes on Steam by going to https://partner.steamgames.com/apps/builds/4020030, preview change, entering a comment, then Set Build Live.
|
||||||
|
10. !!!IMPORTANT!!! Delete the TWO Artifacts sections in the /Config/DefaultEngine.ini when finished. DO NOT commit the Artifact Sections. It's a secret!
|
||||||
|
|
||||||
|
Double Check:
|
||||||
|
1. Make sure the correct OnlineSubsystem section of the /Config/DefaultEngine.ini was set up.
|
||||||
|
2. Make sure a SHIPPING build was used with all the flags in BP_DebugGameSettings set to false / unchecked.
|
||||||
|
3. Make sure the root of the content folder has Credits.txt, Steam_CardinalInstaller.exe, EpicOnlineServicesInstaller.exe, and Steam_InstallScript.vdf
|
||||||
|
4. And when done, MAKE SURE the TWO ARTIFACTS section were DELETED!
|
||||||
|
|
||||||
|
|
||||||
To release on Steam:
|
To release on Steam:
|
||||||
|
Before opening the project to build, make sure the OnlineSubsystem section of the /Config/DefaultEngine.ini file has the EOSPlus Steam config from /Config/OnlineSubsystemEOSPlusSteam.ini.
|
||||||
|
Set the GameVersion=X under [OnlineSubsystemSteam] in the /Config/DefaultEngine.ini file.
|
||||||
|
Paste the Artifact and Product Settings secrets into the TWO sections of the Steam configuration of /Config/DefaultEngine.ini.
|
||||||
|
Open the project and in the Project Settings, set the Project Version.
|
||||||
Build a shipping copy of the game. Make sure the target folder is empty and BP_DebugGameSettings has all the variables unchecked.
|
Build a shipping copy of the game. Make sure the target folder is empty and BP_DebugGameSettings has all the variables unchecked.
|
||||||
Copy a "Shipping" build of the game into the Steam sdk that has BP_DebugGameSettings IsGameDebug? and all other flags set to false.
|
Copy a "Shipping" build of the game into the Steam sdk at \tools\ContentBuilder\content\ that has BP_DebugGameSettings IsGameDebug? and all other flags set to false.
|
||||||
And paste a copy of the Credits.txt file into the same directory.
|
And paste a copy of the Credits.txt file into the same directory along with Steam_CardinalInstaller.exe and Steam_InstallScript.vdf.
|
||||||
> For Example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\content
|
> If you're using crossplay with Epic, make sure the folder has EpicOnlineServicesInstaller.exe from the EOS SDK in the \Tools folder.
|
||||||
CopySteam_AppBuild4020030.vdf into into the Steam sdk's scripts directory.
|
CopySteam_AppBuild4020030.vdf into into the Steam sdk's scripts directory.
|
||||||
> For example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\scripts
|
> For example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\scripts
|
||||||
Copy all the "depots" (e.g. Steam_DepotBuild4020031.vdf, SteamDLC_DepotBuild_Bronze.vdf, and etc) into into the Steam sdk's scripts directory.
|
Copy all the "depots" (e.g. Steam_DepotBuild4020031.vdf, SteamDLC_DepotBuild_Bronze.vdf, and etc) into into the Steam sdk's scripts directory.
|
||||||
> For example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\scripts
|
> For example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\scripts
|
||||||
|
|
@ -20,24 +57,6 @@ And login.
|
||||||
Then build the depot (which uploads the project files in the content folder) For example: run_app_build ..\scripts\Steam_AppBuild4020030.vdf
|
Then build the depot (which uploads the project files in the content folder) For example: run_app_build ..\scripts\Steam_AppBuild4020030.vdf
|
||||||
Then quit.
|
Then quit.
|
||||||
>For example: quit
|
>For example: quit
|
||||||
After that, you will need to publish the changes on Steam by going to https://partner.steamgames.com/apps/builds/4020030 then selecting the "default" branch, preview change, entering a comment, then Set Build Live
|
After that, you will need to publish the changes on Steam by going to https://partner.steamgames.com/apps/builds/4020030 then selecting the "default" branch, preview change, entering a comment, then Set Build Live.
|
||||||
|
!!!IMPORTANT!!! Delete the TWO Artifacts section of the /Config/DefaultEngine.ini when finished. DO NOT commit the Artifacts Sections. It's a secret!
|
||||||
|
|
||||||
To push an update on Steam if SteamCMD is already set up:
|
|
||||||
Build a shipping copy of the game. Make sure the target folder is empty and BP_DebugGameSettings has all the variables unchecked.
|
|
||||||
Copy a "Shipping" build of the game into the Steam sdk that has BP_DebugGameSettings IsGameDebug? and all other flags set to false.
|
|
||||||
> Keep the Steam_InstallScript.vdf and Steam_CardinalInstaller.exe files in the same directory.
|
|
||||||
And paste a copy of the Credits.txt file into the same directory.
|
|
||||||
> For Example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\content
|
|
||||||
Then open Steam command.
|
|
||||||
> For Example: C:\Unreal\Projects\sdk_162\tools\ContentBuilder\builder\steamcmd.exe
|
|
||||||
And login.
|
|
||||||
> For example: login <account_name> <password>
|
|
||||||
Then build the depot (which uploads the project files in the content folder) For example: run_app_build ..\scripts\Steam_AppBuild4020030.vdf
|
|
||||||
Then quit.
|
|
||||||
> For example: quit
|
|
||||||
After that, you will need to publish the changes on Steam by going to https://partner.steamgames.com/apps/builds/4020030 then selecting the "default" branch, preview change, entering a comment, then Set Build Live
|
|
||||||
|
|
||||||
|
|
||||||
Double Check:
|
|
||||||
1. Make sure it was a SHIPPING build with all the flags in BP_DebugGameSettings set to false / unchecked.
|
|
||||||
2. Make sure the current Credits.txt files is copied into the root of the folder.
|
|
||||||
|
|
@ -8,7 +8,9 @@ public class CardinalTarget : TargetRules
|
||||||
Type = TargetType.Game;
|
Type = TargetType.Game;
|
||||||
ExtraModuleNames.Add("Cardinal");
|
ExtraModuleNames.Add("Cardinal");
|
||||||
bUsesSteam = true;
|
bUsesSteam = true;
|
||||||
// Added for 4.26
|
// Added for UE4.26
|
||||||
DefaultBuildSettings = BuildSettingsVersion.V2;
|
DefaultBuildSettings = BuildSettingsVersion.V2;
|
||||||
|
// Added for UE5.1
|
||||||
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,50 @@
|
||||||
using UnrealBuildTool;
|
using UnrealBuildTool;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
public class Cardinal : ModuleRules
|
public class Cardinal : ModuleRules
|
||||||
{
|
{
|
||||||
public Cardinal(ReadOnlyTargetRules Target) : base(Target)
|
public Cardinal(ReadOnlyTargetRules Target) : base(Target)
|
||||||
{
|
{
|
||||||
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AdvancedSessions", "OnlineSubsystem", "OnlineSubsystemUtils", "Networking", "Sockets", "OnlineSubsystemSteam", "OnlineSubsystemNull", "MoviePlayer", "DeveloperSettings" });
|
// -----------------------------
|
||||||
|
// Modern UE5 PCH and include order
|
||||||
|
// -----------------------------
|
||||||
|
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
|
||||||
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
|
||||||
|
|
||||||
PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "Sockets", "Networking", "OnlineSubsystemSteam", "OnlineSubsystemNull" });
|
// -----------------------------
|
||||||
|
// Public modules (always included)
|
||||||
|
// -----------------------------
|
||||||
|
PublicDependencyModuleNames.AddRange(new string[]
|
||||||
|
{
|
||||||
|
"Core", // Engine core
|
||||||
|
"CoreUObject", // UObject system
|
||||||
|
"Engine", // Engine runtime
|
||||||
|
"InputCore", // Player input
|
||||||
|
"AdvancedSessions", // AdvancedSessions plugin
|
||||||
|
"OnlineSubsystem", // Generic OSS interfaces (IOnlineSubsystem)
|
||||||
|
"OnlineSubsystemUtils", // Session helpers (Find/Join/Create)
|
||||||
|
"Networking", // Low-level networking types used by AdvancedSessions
|
||||||
|
"Sockets", // Socket API required by AdvancedSessions
|
||||||
|
"OnlineSubsystemNull", // Null OSS for testing / server
|
||||||
|
"MoviePlayer", // For playing intro/loading movies
|
||||||
|
"DeveloperSettings" // UDeveloperSettings, used by plugins like Rama’s Victory plugin
|
||||||
|
});
|
||||||
|
|
||||||
//For 4.26
|
// -----------------------------
|
||||||
PrivatePCHHeaderFile = "Cardinal.h";
|
// Private modules (always included)
|
||||||
bLegacyPublicIncludePaths = true;
|
// -----------------------------
|
||||||
|
PrivateDependencyModuleNames.AddRange(new string[]
|
||||||
|
{
|
||||||
|
"OnlineSubsystemEOS", // Epic Online Services runtime
|
||||||
|
"EOSShared" // EOS SDK glue
|
||||||
|
});
|
||||||
|
|
||||||
// Uncomment if you are using Slate UI
|
// -----------------------------
|
||||||
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
|
// Conditional Steam inclusion
|
||||||
|
// -----------------------------
|
||||||
// Uncomment if you are using online features
|
if (Target.bUsesSteam)
|
||||||
//PrivateDependencyModuleNames.Add("OnlineSubsystem");
|
{
|
||||||
//if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64))
|
PrivateDependencyModuleNames.Add("OnlineSubsystemSteam"); // Steam OSS
|
||||||
//{
|
}
|
||||||
// if (UEBuildConfiguration.bCompileSteamOSS == true)
|
|
||||||
// {
|
|
||||||
// DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,9 @@ public class CardinalEditorTarget : TargetRules
|
||||||
{
|
{
|
||||||
Type = TargetType.Editor;
|
Type = TargetType.Editor;
|
||||||
ExtraModuleNames.Add("Cardinal");
|
ExtraModuleNames.Add("Cardinal");
|
||||||
// Added for 4.26
|
// Added for UE4.26
|
||||||
DefaultBuildSettings = BuildSettingsVersion.V2;
|
DefaultBuildSettings = BuildSettingsVersion.V2;
|
||||||
|
// Added for UE5.1
|
||||||
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,10 @@ public class CardinalServerTarget : TargetRules
|
||||||
{
|
{
|
||||||
Type = TargetType.Server;
|
Type = TargetType.Server;
|
||||||
ExtraModuleNames.Add("Cardinal");
|
ExtraModuleNames.Add("Cardinal");
|
||||||
// Added for 4.26
|
bUsesSteam = false;
|
||||||
|
// Added for UE4.26
|
||||||
DefaultBuildSettings = BuildSettingsVersion.V2;
|
DefaultBuildSettings = BuildSettingsVersion.V2;
|
||||||
|
// Added for UE5.1
|
||||||
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue