Commit Graph

100 Commits

Author SHA1 Message Date
Matt Peters
748107a39a CookOnTheFly NetworkPlatformFile: Fix typo preventing server messages from being processed on the client.
Fix editor crash on shutdown.
#rb CarlMagnus.Nordin
#rnx
#preflight 629147d48b6ee67725929478

[CL 20430093 by Matt Peters in ue5-main branch]
2022-05-30 08:17:44 -04:00
CarlMagnus Nordin
0282a5aef6 Unified Zen and legacy COTF network protocols.
*Reduces code duplication
*Enables the same ODSC flow to be used for both COTF variants
*The client will now autodetect if it should run in Zen mode or not
#rb pj.kack,per.larsson
#preflight 628c79bdf057b981ca479b3e

[CL 20344832 by CarlMagnus Nordin in ue5-main branch]
2022-05-24 02:50:39 -04:00
Wojciech Krywult
d630e5f179 CookOnTheFly (platform protocol): Game: Added an alternative way of sending cooked data to the game using platform-specific communication protocol.
Added IPlatformHostCommunication and IPlatformHostSocket interfaces allowing a game running on a target device to communicate with processes on the connected host PC. They are exposed via FPlatformMisc::GetPlatformHostCommunication(). The main feature is the ability to open socket-like connections to the host PC (IPlatformHostSocket), but it also allows launching processes on the host PC (on some platforms).

Not all platforms are required to provide this functionality, so IPlatformHostCommunication::Available() should be checked before using it.

Added a new transport protocol implementation (PlatformTransport derived from ITransport) to allow NetworkPlatformFile to use the above interfaces to send cooked data.

This new transport implementation is activated by running the game with '-filehostip=platform://' command-line argument.

The editor-side functionality will be submitted in a separate change.

#rb jeff.newquist
#preflight 6216507122019f882b06d30b

[CL 19092143 by Wojciech Krywult in ue5-main branch]
2022-02-23 10:45:38 -05:00
paul chipchase
21c2777e84 Add an UE5 specific version EUnrealEngineObjectUE5Version to be used for global changes instead of EUnrealEngineObjectUEVersion. By splitting and storing both version numbers we allow for hypothetical future UE4 changes that will not conflict when merged to UE5.
#rb CarlMagnus.Nordin
#rnx
#tests Ran overnight preflights on several platforms, opened/cooked/staged/ran the oldest version of InfiltratorDemo that can be downloaded (4.11)

### ObjectVersion
- Add a new version enum EUnrealEngineObjectUE5Version.
-- This version number starts at 1000 which leaves more than enough for for EUnrealEngineObjectUEVersion to be expanded
- Even though very few changes (if any at all) to EUnrealEngineObjectUE4Version are expected there is a static assert to make sure that EUnrealEngineObjectUEVersion::AUTOMATIC_VERSION never overtakes EUnrealEngineObjectUE5Version::INITIAL_VERSION.
- Add a struct FPackageFileVersion that wraps around the version numbers and is used to store them instead of raw int32 values which was done before. This should make it easier to add new version numbers in the future if we desire (although this will cause problems in places that serialize the struct directly)

### FPackageFileSummary
- Adding a new entry to CurrentLegacyFileVersion at value -8 which shows the UE5 version being added. This lets us make the changes without needing to submit anything to UE4 Main.
- When loading a package that does not have a UE5 version, it will remain at 0.
- Added ::IsFileVersionTooOld and ::IsFileVersionTooNew to replace hardcoded tests in the code base for version validity. This will make it easier to make changes in the future.
- A few months ago most of the accessors of the version number were deprecated in favour of a version that did not contain the Engine number (ie UE4Ver -> UEVer in Archive) but to work with these changes the renamed methods now will return or accept the version as FPackageFileVersion rather than int32.  The old UE4 methods will remain deprecated and direct licensees to use the new methods.

### Archive
- Now stores the version as a FPackageFileVersion rather than int32

### LinkerLoad
- Reports the larger version number if we detect a higher version number than we support. Note that this could cause an issue if the UE4 version is ever raised but helps keep the code simple.

### AssetData
- Need to add a new version here to manage existing data that only has the UE4 version

### EditorDomain
- We do not need to version the format, we can just invalidate existing editor domain entries via EditorDomainVersion

### EditorServer
- When reporting that a package is too old we report the UE4 version as that is the only version that can be older than VER_UE4_OLDEST_LOADABLE_PACKAGE
- When reporting that a package is too new it can be either the UE4 or the UE5 version so we print them together "UE4Ver|UE5Ver"

### ContentCommandlets
- The min and max resave versions have been kept as a single value, you will not be able to resave against different UE4 and UE5 versions at the same time. It doesn't seem like a useful feature and would greatly increase the complexity of the code.
- We will also only report the file version as a single value.

### ManifestUObject
- This class was setting an older obsolete version on purpose to try and maintain compatibility with older clients so we need to provide a way to create an older UE4 only version that will leave the UE5 version as unset.

### NetworkPlatformFile
- I was unable to test the code path in FNetworkPlatformFile::ProcessServerCachedFilesResponse as I am unsure how to run the game in a mode that will actually use it.
- When reading an older "CookedVersion.txt" that was saved with a single version, the reads will fail and this will count as a version change in the code so that all of the existing files will be deleted. The existing code would not give the user a log message when this happens and given the very small time window where this might happen caused by this change I have opted to leave this alone and not add any additional logging.
- If we do detect a version mismatch we will still only log the version number as a single version.

### CookOnTheFlyServer
- We now add each version number to the IniVersionMap rather than merge the version and license version as a key/value pair. This allows us to a) use both the UE4 and UE5 version numbers b) we now log a warning that the version values don't match when it is changed, previously since it was a key value we would log a warning about an additional setting instead.
-- I also added "vs" to the log message when values are mismatched to make the space between the two values being printed clearer.

#ROBOMERGE-OWNER: paul.chipchase
#ROBOMERGE-AUTHOR: paul.chipchase
#ROBOMERGE-SOURCE: CL 17549459 via CL 17550236 via CL 17550238 via CL 17550582 via CL 17550583
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v870-17433530)

[CL 17550586 by paul chipchase in ue5-main branch]
2021-09-17 07:05:39 -04:00
aurel cordonnier
43fa62fcd8 Merge from Release-Engine-Test @ 16487383 to UE5/Main
This represents UE4/Main @ 16445039 and Dev-PerfTest @ 16444526

[CL 16488106 by aurel cordonnier in ue5-main branch]
2021-05-27 13:40:37 -04:00
Per Larsson
870a5ca81e NetworkPlatformFile: Improve initial sync of server files
- updated local file cache pruning to not to delete files that doesn't exist on client
- added option to timestamp directory visitor to lower case filenames and directory names
- added -DeleteLocalCache option to force delete all local file(s)

#rb PJ.Kack
#jira none
#rnx

[CL 15745595 by Per Larsson in ue5-main branch]
2021-03-19 03:43:12 -04:00
Devin Doucette
6a055f3b41 Fixed dependencies on the DerivedDataCache module to be include-only when appropriate
#rb Zousar.Shaker

[CL 15681304 by Devin Doucette in ue5-main branch]
2021-03-11 17:27:38 -04:00
jeff newquist
ce1df14b0f Fix static analysis warning
#rb josh.adams
#jira UE-106887

[CL 15218065 by jeff newquist in ue5-main branch]
2021-01-27 12:46:32 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
david harvey
b55668ded8 remove unnecessary code from COTF changes.
#jira UE-91693
#rb josh adams (pending)

#ROBOMERGE-SOURCE: CL 12674321 in //UE4/Release-4.25Plus/... via CL 12674339
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12674354 by david harvey in Main branch]
2020-04-08 11:37:36 -04:00
david harvey
224956718b Cook on the fly changes:
- target platform code can manage the file transfer from the cook server.
 - client ip address and platform-specific metadata is sent from the client.

#rb josh.adams
#rnx
#lockdown marcus.wassmer
#jira MTHRL-18

#ROBOMERGE-SOURCE: CL 12653783 in //UE4/Release-4.25Plus/... via CL 12653792
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v675-12543919)

[CL 12653798 by david harvey in Main branch]
2020-04-07 10:45:54 -04:00
ryan durand
0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00
Rolando Caloca
1a30325d6f Copying //UE4/Dev-RenderPlat-Staging@9551419 to //UE4/Main
#rb none
#rnx

[CL 9551447 by Rolando Caloca in Main branch]
2019-10-11 15:33:31 -04:00
Ben Marsh
b6039a9873 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 9419420 by Ben Marsh in Dev-Build branch]
2019-10-04 11:20:44 -04:00
Stefan Boberg
1f813eb516 Copying //UE4/Dev-Core to Main (//UE4/Main)
#rb many

[CL 9405827 by Stefan Boberg in Main branch]
2019-10-03 16:26:48 -04:00
ben marsh
b0bc58eb2a Deprecating ARRAY_COUNT and changing it to UE_ARRAY_COUNT.
Replicated from CL# 7924370.

#rb none

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 9279060 via CL 9279063 via CL 9279836
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v456-9359915)

[CL 9366698 by ben marsh in Dev-Build branch]
2019-10-02 10:52:53 -04:00
Nick Shin
3526d16d5e merge/copyup to parent stream - HTML5 platform extension
#jira UEMOB-482  HTML5 platform as a plug in
#rb josh.adams
#rn

[CL 9306021 by Nick Shin in Dev-Build branch]
2019-09-30 15:13:56 -04:00
steve robb
14cab21e0c Deprecating ARRAY_COUNT and changing it to UE_ARRAY_COUNT.
Replicated from CL# 7924370.

#rb none


#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 9279060 via CL 9279063
#ROBOMERGE-BOT: (v443-9013191)

[CL 9279836 by steve robb in Main branch]
2019-09-28 08:19:35 -04:00
brandon schaefer
b402364d5a Deprecate GIsRequestingExit
Get GIsRequestingExit now by IsEngineRequestingExit()

Set GIsRequestingExit now by RequestEngineExit(const TCHAR* Reason) or RequestEngineExit(const FString& Reason)
NOTE If Reason is 4 or less chars it will generate an ensure to force a reason to exit

The reason behind this change is right now setting GIsRequestingExit to true can cause many things to break mainly early on and with out any sort of log warning we have entered this state. We should wrap this behind a function to allow for proper handling

#rb Chris.Babcock, Michael.Trepka, Michael.Noland
#jira UE-79933
[FYI] Michael.Noland

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: brandon.schaefer
#ROBOMERGE-SOURCE: CL 8649683 via CL 8653683 via CL 8658680
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v422-8689730)

[CL 8743281 by brandon schaefer in Dev-Build branch]
2019-09-17 08:33:13 -04:00
brandon schaefer
a715ea4f14 Deprecate GIsRequestingExit
Get GIsRequestingExit now by IsEngineRequestingExit()

Set GIsRequestingExit now by RequestEngineExit(const TCHAR* Reason) or RequestEngineExit(const FString& Reason)
NOTE If Reason is 4 or less chars it will generate an ensure to force a reason to exit

The reason behind this change is right now setting GIsRequestingExit to true can cause many things to break mainly early on and with out any sort of log warning we have entered this state. We should wrap this behind a function to allow for proper handling

#rb Chris.Babcock, Michael.Trepka, Michael.Noland
#jira UE-79933
[FYI] Michael.Noland


#ROBOMERGE-SOURCE: CL 8649683 via CL 8653683
#ROBOMERGE-BOT: (v417-8656536)

[CL 8658680 by brandon schaefer in Main branch]
2019-09-12 14:21:26 -04:00
anthony bills
af4e98c3e5 Backout 5372217. This fixes COTF on some platforms.
#rb david.harvey
[FYI] ben.ingram
#jira UE-77519

#ROBOMERGE-SOURCE: CL 7539121 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v372-7473910)

[CL 7539152 by anthony bills in Main branch]
2019-07-23 09:04:34 -04:00
Rolando Caloca
aa0d2303d6 Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) @ 6944469
#rb none
#rnx

[CL 6944849 by Rolando Caloca in Main branch]
2019-06-11 18:27:07 -04:00
Jake Leonard
d3f54b21fe Fix CreateSocket and CreateInternetAddr functional usage so they no longer use the deprecated methods.
#JIRA: UENET-892, UENET-888
#rb: ryan.gerleve

[CL 4894561 by Jake Leonard in Dev-Networking branch]
2019-02-04 18:49:13 -05:00
Marcus Wassmer
fee98d3ca5 Merging //UE4/Dev-Main@4729937 to Dev-Rendering (//UE4/Dev-Rendering)
#rb none

[CL 4730169 by Marcus Wassmer in Dev-Rendering branch]
2019-01-15 18:30:06 -05:00