Giter Club home page Giter Club logo

unrealgdk's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unrealgdk's Issues

Changing Spatial related configurations through the Unreal Editor can lead to issues if configuration files are not writable

We are accepting issues and we want your feedback.

Issue

Changing Spatial related configurations through the Unreal Editor can lead to problems if the configuration files are not writable. For instance, trying to amend the number of maximum allowed dynamic subobjects per actor will not succeed if DefaultSpatialGDKSettings.ini file is locked. Moreover, this operation will not be able to complete and will prevent the Unreal Editor from launching PIE sessions.

Workaround

Make sure that all configuration files are writable.

Internal Ticket

UNR-1809

Error when launching a cloud deployment when a Linux client isn't built.

We are accepting issues and we want your feedback.

Issue

As of release 0.6.0, you may get the following type of error when running a cloud deployment:
Could not download workers: could not download Artifact([email protected]) for Worker(SimulatedPlayerCoordinator); could not retrieve artifact information for [email protected]: rpc error: code = NotFound desc = Artifact([email protected]) of Assembly(offloading_workflow) of Project(demo) doesn't exist.

This happens because SpatialOS expects the worker package that corresponds to every worker config. In this case, Simulated Player binaries are missing.

Workaround

We have two potential workarounds:

  1. Build a Linux client and upload it as part of the assembly. See https://github.com/improbableio/UnrealEngine/blob/4.22-SpatialOSUnrealGDK-0.6.0-rc/Templates/TP_SpatialGDK/spatial-resources/BuildProject.bat for a reference script. This is the recommended approach.
  2. Remove spatial/workers/improbable/spatialos.SimulatedPlayerCoordinator.worker.json and re-run spatial build build-config to remove the SimulatedPlayerCoordinator bridge config and descriptor from the assembly and re-upload. With this approach Simulated Players will not work.

Internal Ticket

COMP-2137

Changing some SpatialOS settings after launching a local deployment will invalidate the currently launched deployment

Issue

Changing some SpatialOS settings after launching a local deployment will invalidate the currently launched deployment (e.g. Changing the number of servers, or toggling using Query Based Interest), as these settings modify the launch configuration.

Workaround

Manually stop and start your deployment after you make any changes that alter the launch configuration.

Internal ticket

Reliable RPCs executed multiple times

Issue

Reliable RPCs may be executed multiple times on the receiving worker.

Workaround

Do not rely on reliable RPCs being executed only once.

Internal Ticket

UNR-1267

Replication and RepNotify for actor + subobjects isn't in the same order as native

When data is replicated at the same time for actor and one or more of its subobjects, the sequence on the receiver is the following:

Native networking:

Data is received for the actor
Data is received for the subobject
RepNotifies are called for the actor
RepNotifies are called for the subobject

Spatial networking:

Data is received for the actor
RepNotifies are called for the actor
Data is received for the subobject
RepNotifies are called for the subobject

This happens due to the GDK calling RepNotifies at the end of applying each component update, and receiving separate component updates for the actor and its subobjects.

Internal ticket UNR-2304

"DeploymentLauncher list" does not have the correct number of arguments

Branches

0.8

Description

When calling DeploymentLauncher list the number of arguments is incorrect and will print usage when attempting to use it.

Fixed in master

Current behavior

When attempting to use list with the correct arguments listed it will fail because it expects a 4th.

Workaround

Add a 4th dummy command-line argument

Client does not receive RPC after picking up a weapon attachement

Repo:

  1. Set up a scenario in which you have a player character who has weapon as a child.
  2. Attach a weapon attachment to the weapon by setting the attachment actors parent to be the weapon on the server.
  3. In the same bit of logic, send a ClientRPC from the attachment actor.

Result: The client does not receive the RPC.

If the RPC is multicast the issue will not occur.

Perhaps the simplest case of this is simply setting an actors parent and sending a ClientRPC on the actor on the same frame.

Internal Ticket

https://improbableio.atlassian.net/browse/UNR-2454

Replicated properties within DEBUG or WITH_EDITORONLY_DATA macros not supported

Description

The UnrealGDK requires schema to interoperate between the Unreal networking stack and the SpatialOS networking stack. Schema is generated by referencing Unreal's reflected data within the editor. If there are replicated properties within UObjects that get stripped out at runtime (ie. via the WITH_EDITORONLY_DATA macro), then the generated schema won't match the Object's layout at runtime, and instability will occur.

Workaround

Don't add replicated data within preprocessor macros that may be compiled out at runtime.

Tracking issue

UNR-917

Client connections will be closed by the ServerWorker when using Blueprint or C++ breakpoints during play-in-editor sessions due to connection heartbeating

Issue

Client connections will be closed by the ServerWorker when using Blueprint or C++ breakpoints during play-in-editor sessions due to connection heartbeating. This will cause all entities related to the player to be deleted, such as Character, PlayerController and PlayerState.

Workaround

When debugging locally, increase the value of the HeartbeatTimeout setting (which can be found in the "Runtime Settings" menu) to a large value. Note that this value should be set back the default for regular non-Editor testing.

This value defines the number of seconds that a ServerWorker will wait to receive a heartbeat message from the client before considering it to be unresponsive and destroying it's connection.

Internal ticket

UNR-1411

Error when GameModeBase::PreLogin returns ErrorMessage

We are accepting issues and we want your feedback.


Description

When you return an ErrorMessage from GameMode::PreLogin (it's non-empty), SpatialOS doesn't account for it in SpatialReceiver::ReceiveActor where it called NetDriver->AcceptNewPlayer. AcceptNewPlayer returns null if the Error is present, as SpatialOS has an assertion at the next line that it's not null!

Expected behavior

SpatialOS should allow for errors in PreLogin (see SpatialNetDriver::AcceptNewPlayer). There appears to be a note there already referencing UNR-584?

Current behavior

Assertion failure.

Possible solution

For now just gracefully close the connection, with a note in future that the calling client should be sent the error itself.

Steps to reproduce

  1. Set the ErrorMessage in PreLogin to anything (non empty) in the shooter example.
  2. Start PIE.

Environment

4.21.1 custom spatial release branch, using release branch of GDK.

Internal ticket

UNR-584

Public header has implicit private dependency.

UE_LOG(LogSpatialClassInfoManager, Warning, TEXT("UnrealMetadata native class %s unloaded whilst entity in view."), *ClassPath);

UnrealMetadata::GetNativeEntityClass is public-facing but has an implicit dependency on non-public files due to the log line on 79. Because this function is also marked with FORCEINLINE, this causes linking errors when trying to use this header as a dependency in an external module since the linker can't resolve the definition of LogSpatialClassInfoManager (as the reference is no longer isolated to the dll but leaks across module boundaries).

ClientTravel does not load streaming levels

Description

ClientTravel from Map A to Map B, where Map B uses world composition, does not load any levels on Map B

Expected behavior

All levels within streaming distance of the player spawn should be loaded.

Current behavior

No levels are spawned, character infinitely falls

Steps to reproduce

  1. Create 2 maps, one using world composition (map B) and one without (map A)
  2. LaunchServer.bat with map B
  3. Start map A in PIE
  4. Use receptionist to travel from A to B (PlayerController->ClientTravel(TravelURL, TRAVEL_Absolute, false /*bSeamless*/);)
  5. After travel completes, no levels are loaded, and player starts falling

Environment

UE4 commit:
09ec8ee75c32cb8779747ed5e43ece5bfc76ff81

GDK commit:
8b0c4ec

Logs:

From spatial:

[improbable.bridge.logging.EngineLogMessageHandler] [Worker: UnrealClientF4586D6240DCA678DEE0B287D54F2F76] Object ref did not map to valid object, will be set to nullptr: (entity ID: 0, offset: 0) ./Game/FirstPersonBP/Maps/height/height_x0_y0.height_x0_y0.PersistentLevel.LandscapeStreamingProxy_0.LandscapeHeightfieldCollisionComponent_1923 -[WorkerLogger:Unreal]

From the Server:

First there's plenty of this:

LogStreaming: Display: ULevelStreaming::RequestLevel(/Game/FirstPersonBP/Maps/height/height_x3_y3) is flushing async loading
LogSpatialOSNetDriver: Connected to SpatialOS and map has been loaded.

and then many of these:

LogSpatialReceiver: Received reserve entity Id: request id: 0, entity id: 40
LogSpatialReceiver: Resolving pending object refs and RPCs which depend on object: WorldSettings (entity ID: 40, offset: 0).
LogSpatialSender: Sending create entity request for WorldSettings
LogSpatialReceiver: Entity for actor WorldSettings has been checked out on the worker which spawned it or is a singleton linked on this worker
LogSpatialReceiver: Received create entity response op for 40

Shader error in 'Hidden/PostProcessing/FinalPass'

We are accepting issues and we want your feedback.


Description

Shader error in 'Hidden/PostProcessing/FinalPass': '#extension' : extension not supported: GL_AMD_vertex_shader_layer at line 4 (on vulkan)

Compiling Vertex program with STEREO_INSTANCING_ENABLED
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_SCREENSPACE_SHADOWS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_HARDWARE_TIER1 UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR

Expected behavior

No error.

Current behavior

Followed by -
Shader error in 'Hidden/PostProcessing/FinalPass': '#extension' : extra tokens -- expected newline at line 4 (on vulkan)

Compiling Vertex program with STEREO_INSTANCING_ENABLED
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_SCREENSPACE_SHADOWS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_HARDWARE_TIER1 UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR

Then -
Shader error in 'Hidden/PostProcessing/FinalPass': '' : compilation terminated at line 4 (on vulkan)

Compiling Vertex program with STEREO_INSTANCING_ENABLED
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_NO_SCREENSPACE_SHADOWS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_HARDWARE_TIER1 UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR

Possible solution

This is not obligatory but if you have a preference, please suggest a fix for the bug.

FinalPass_20190322135626.zip

Steps to reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code snippets if relevant.

  1. Followed installation steps, although on top of vs2015, redirected unity's default code editing to vs2017 afterwards.
  2. cloned gdk and fps sample ok, opened fps sample ok
  3. started build workers process which failed with the above error, plus lots of warnings.

Environment

What were you trying to accomplish?

Please include your spatial diagnose output in full.

Please detail your OS and Unreal Engine versions.
x64 arch windows 10 and unity 2018.3.5f1, dotnet core 2.1.402

Provide a general summary of the issue in the title field above.

Spatial UE4 4.21.1 fork doesn't contain a reference to a UnrealObjectRef.h


Description

4.21.1 branch of UE4 from spatial does NOT contain a referenced header file in the latest (master) branch of the Unreal GDK. Therefore, I cannot build my project from source.

Expected behavior

The file should be referenced in the 4.21.1 branch.

Current behavior

Classes that include "UObject/improbable/UnrealObjectRef.h" cannot find the file specified and fails the build/compile.

Possible solution

Include this file in the 4.21.1 spatial branch of UE4.

Steps to reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code snippets if relevant.

  1. Download the UE4 spatial fork (4.21 branch: https://github.com/improbableio/UnrealEngine/tree/4.21)
  2. Download the Tutorial Starter Project (update to use 4.21 version of UE4)
  3. Attempt to build Tutorial project using 4.21 fork.

Environment

What were you trying to accomplish?
Building my project (which is currently using UE4 4.21.0

Please include your spatial diagnose output in full.

Please detail your OS and Unreal Engine versions.
Windows 10
UE4 4.21.1 (spatial fork)

Provide a general summary of the issue in the title field above.

Temporary Workaround:

  1. Create a new 'improbable' folder in the UE4 source directory (\Engine\Source\Runtime\CoreUObject\Public\Object)
  2. Copy UnrealObjectRef.h file from 4.20 branch of UE4 into this folder (https://github.com/improbableio/UnrealEngine/blob/4.20-SpatialOSUnrealGDK/Engine/Source/Runtime/CoreUObject/Public/UObject/improbable/UnrealObjectRef.h)

Schema generation can generate Component IDs equal to 0.

We are accepting issues and we want your feedback.


Description

Schema generation can generate Component IDs equal to 0.

Expected behavior

Schema generation should never generate Component IDs below 100 and from 19000 to 19999, as these are reserved for use by Improbable.

Current behavior

Schema generation can generate Component IDs equal to 0.

Possible solution

#900

Development and Shipping builds are incompatible

Description

Development/Debug servers are incompatible with Test/Shipping clients and vice versa.

Workaround

For deployments running with Development or Debug servers, use Development or Debug clients, and for deployments with Test or Shipping servers, use Test or Shipping clients.

Tracking issue

UNR-1368

Initial dormant actors can't be immediately deleted

Description

Actors which have their dormancy set to DORM_Initial won't be deleted on observing clients if they don't have their network relevancy flushed before being deleted.

Expected behavior

Deletion of DORM_Initial Actors is always processed by clients.

Possible solution

Don't use DORM_Initial or ensure that Actors have their network dormancy flushed before being deleted.

Internal ticket

Schema generator fails when the destination file is locked.

Issue

Schema generator fails when the destination file is locked. The workflow is less than ideal as you can’t run it again until you restart the Unreal Editor.

Workaround

Ensure destination files/folders are unlocked.

Internal Ticket

UNR-350

Manually creating UChannels is not supported

Description

The UnrealGDK does not support user's manually creating UChannels directly on UNetConnections.

Expected behavior

Manually calling UNetConnection::CreateChannelByName will result in undefined behaviour.

Possible solution

Leave creation of channels to the UNetDriver.

4.21 NetDriver::RemoveClientConnection error

We are accepting issues and we want your feedback.


Description

Note that this is specific to 4.21, which introduces MappedClientConnections in NetDriver. This is unaccounted for in the current SpatialOS release in it's SpatialNetDriver so it's failing when trying to remove the address from MappedClientConnections.

Expected behavior

The address should be added and removed from MappedClientConnections.

Current behavior

Failure at RemoveClientConnection (as the address was never added in SpatialNetDriver).

Possible solution

Wrap the calls like so:

#if ENGINE_MINOR_VERSION >= 21
// 4.21+ stuff here
#endif

Steps to reproduce

Regular join and quit loop in the shooter example using my 4.21 spatial release engine branch.

Environment

Obviously not a high priority until/if you move to 4.21 but would appreciate some guidance.

Replicated TimelineComponents are not supported

Issue

Replicated TimelineComponents are not supported.

Workaround

Use an alternative method of achieving the desired behaviour, such as playing the timeline on a multicast event, or replicating what is changed by the timeline.

Internal ticket

UNR-1581

Generating schema for UClasses that are not explicitly loaded/referenced by the currently loaded level is not supported

Issue

Generating schema for UClasses that are not explicitly loaded/referenced by the currently loaded level is not supported. For example, a hard coded path loaded at run-time will not be detected by the schema generator.

Workaround

Reference the class explicitly from an already loaded class (Level blueprint, GameMode etc). Alternatively, you can open the Blueprints for soft references before generating schema so that they are loaded into memory.

Internal ticket

NA

BeginPlay() not being called on all WorldSettings actors

We are accepting issues and we want your feedback.


Description

Currently on server worker BeginPlay() gets called only on WorldSettings actor for the persistent level, but not on WorldSettings actors for any of the streamed levels.

Expected behavior

For native Unreal on server BeginPlay() gets called on WorldSettings actor for the persistent level as well as each of the streamed levels.

Internal ticket

UNR-1408

UnrealGDK/Setup.bat fail to download some dependencies.

Description

Running the UnrealGDK/Setup.bat return the following errors:

Error 1:
...
Successfully retrieved package type 'worker_sdk' with name 'c-dynamic-x86_64-gcc_libstdcpp-linux' and version '13.8.1' to '...\UnrealGDK\SpatialGDK\Build\core_sdk\worker_sdk\c-dynamic-x86_64-gcc_libstdcpp-linux.zip'
Encountered an error during command execution. ] 43% [0.7MiB/s]s]
failed to download package.
failed to retrieve worker package: rpc error: context deadline exceeded

Error 2:
...
Finished: Retrieve dependencies
Starting: Unpack dependencies
Expand-Archive : The path '...\UnrealGDK\SpatialGDK\Build\core_sdk\worker_sdk\c-static-fullylinked-arm-clang_libcpp-ios.zip' either does not exist or is not a valid file system path.
At line:1 char:1136

  • ... p" -Force; Expand-Archive -Path "...\UnrealGDK\SpatialGDK\Build\ ...
  •             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    • CategoryInfo : InvalidArgument: (...\UnrealG..._libcpp-ios.zip:String) [Expand-Archive], InvalidOperationException
    • FullyQualifiedErrorId : ArchiveCmdletPathNotFound,Expand-Archive

OS : Windows 10
Unreal Engine Version : 4.22-SpatialOSUnrealGDK-release (21/08/19)
UnrealGDK : release (21/08/19)

Schema generation removes non-alphanumeric characters.

Issue

Schema generation removes non-alphanumeric characters. This can lead to name collisions in subobjects, properties, and RPCs, which is not supported and will result in an error.

Workaround

Ensure that names are not identical with non-alphanumeric characters removed. For example, My Property and MyProperty will result in an error, but My Property and MyProperty2 will not.

Internal ticket
UNR-1322.

Movement stops replicating after possessing a pawn that is currently controlled by a different player

We are accepting issues and we want your feedback.


Description

After possessing a pawn that is currently controlled by a different player (or exchanging pawns), the movement will stop replicating for the duration that the previous player controlled this pawn. On your machine, it will looks like the pawn is moving fine, but this movement will not be applied on the server.

Expected behavior

After possessing a pawn, you can move immediately, and the server applies this movement.

Current behavior

After possessing a pawn controlled by a different player, movement is not replicated for some time.

Environment

Windows 10
UnrealGDK 0.4.2

Internal ticket

UNR-1285

Setup.bat copying to wrong folder


Description

Setup.bat copying to wrong folder.
It created folder in desktop but it must be on project folder.
bug in setup.bat line 46 "......\spatial\schema"
I think it must be "....\spatial\schema"

Expected behavior

Setup.bat to copy files to projectfolder/spatial

Current behavior

Setup.bat copies files to upper folder /projectfolder/../

Possible solution

change a single line

Steps to reproduce

  1. Run Setup.bat
  2. get errors on run

Environment

Windows 10
UE 4.20

4.21 UNetConnection::LowLevelSend warning

Note that in 4.21, the following warning is thrown:

\Game\Plugins\UnrealGDK\SpatialGDK\Source\SpatialGDK\Public\EngineClasses/SpatialNetConnection.h(20): warning C4996: 'UNetConnection::LowLevelSend': Use the method that allows for packet traits for analytics and modification Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.

This call should be changed for eventual 4.21 compatiblity (will presumably error out in 4.22)

How to use proxy when I try setup SpatialGDK


Description

How to use proxy when I try build dependencies of SpatialGDK

Expected behavior

Current behavior

Possible solution

Steps to reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code snippets if relevant.

  1. double-click Setup.bat in the root directory of the Unreal GDK repository
    2.Should I use proxy when I do that?

Environment

What were you trying to accomplish?
I try build dependencies
So I double-click Setup.bat in the root directory of the Unreal GDK repository,

Please include your spatial diagnose output in full.
Starting: Setup.bat
Starting: Setup the git hooks
Finished: Setup the git hooks
Starting: Check dependencies
Finished: Check dependencies
Starting: Setup variables
Finished: Setup variables
Starting: Clean folders
Finished: Clean folders
Starting: Create folders
Finished: Create folders
Starting: Retrieve dependencies
Encountered an error during command execution.
failed to download package.
Cannot create connection to SpatialOS: context deadline exceeded
context deadline exceeded

Please detail your OS and Unreal Engine versions.
win7 and UnrealEngine-4.20-SpatialOSUnrealGDK
Provide a general summary of the issue in the title field above.

RepNotifies with parameters can have different values supplied compared to native Unreal

Description

In Unreal, when you specify a RepNotify variable with the OnRep function accepting an argument, Unreal passes the old value of the variable as the argument. This old value supplied can differ between native Unreal and Spatial. Specifically in the case of complex replicated properties (e.g. structs, TArrays, etc.).

Expected behavior

Parity between native and Spatial.

Current behavior

The value supplied as an argument to the OnRepNotify function can be in an indeterminate and different state than in native for arrays and other complex types.

Possible solution

Will not fix, the state is indeterminate in native as well, and should not be relied on.

Steps to reproduce

  1. Create a replicated RepNotify TArray variable.
  2. In the OnRepNotify function, make sure that it has a TArray argument.
  3. Add a new entry to the array on the server and observe the OnRepNotify being called on the client with different values for native and spatial. Example: if the array starts out with [1,2], then the server adds 3, so it becomes [1,2,3]. The RepNotify is called with:
    a) On Native: OldValue = [1,2,0]
    b) On Spatial: OldValue = [1,2]

Environment

GDK 0.6, GDK 0.8, possibly later.

Components added in blueprints are not replicated

Description

Spawning a blueprint that specialises an actor, with a c++ ActorComponent added to it, will fail to replicate the added component.

Expected behavior

According to the docs and discussions with the team, ActorComponents added in this way should replicate properly.

Current behavior

The ActorComponent on this blueprint will not be managed by SpatialOS and it will not be replicated to the client. This can be observed by noting that the component is not mentioned in the Inspector breakdown of the spawned actor.

Possible solution

In SpatialGDK/Public/Schema/UnrealMetadata.h:

FORCEINLINE SubobjectToOffsetMap CreateOffsetMapFromActor(AActor* Actor, const FClassInfo& Info)
{
	SubobjectToOffsetMap SubobjectNameToOffset;

	for (auto& SubobjectInfoPair : Info.SubobjectInfo)
	{
		// REMOVED
		//UObject* Subobject = Actor->GetDefaultSubobjectByName(SubobjectInfoPair.Value->SubobjectName);
		// ADDED
		UObject* Subobject = StaticFindObjectFast(UObject::StaticClass(), Actor, SubobjectInfoPair.Value->SubobjectName);
		uint32 Offset = SubobjectInfoPair.Key;

		if (Subobject != nullptr && Subobject->IsPendingKill() == false && Subobject->IsSupportedForNetworking())
		{
			SubobjectNameToOffset.Add(Subobject, Offset);
		}
	}

	return SubobjectNameToOffset;
}

Steps to reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code snippets if relevant.

  1. Create a C++ Actor, MyActor, and add some default components such as a static mesh.
  2. Create a C++ ActorComponent, MyComponent
  3. Create a Blueprint specializing MyActor, call it MyBlueprint
  4. In the blueprint, drag in MyComponent
  5. In GameState or elsewhere, use code similar to the following to spawn MyBlueprint:
UBlueprint* MyBlueprint = LoadObject<UBlueprint>(nullptr, TEXT("Blueprint'/Game/MyBlueprint.MyBlueprint'"));
MyActor* spawnedActor = GetWorld()->SpawnActor<MyActor>(MyBlueprint->GeneratedClass, position, rotation);
  1. Generate schema, snapshot and run Spatial
  2. Connect clients and note warnings similar to the following:

[improbable.bridge.logging.EngineLogMessageHandler] [Worker: UnrealWorker5F6F8A35461C4C67A6C5A994E7B46699] Tried to generate initial replication state for an invalid sub-object (class SimpleBlockComponent, sub-object SimpleBlock, actor SimpleBlock_C_96). Object may have been deleted or is PendingKill. -[WorkerLogger:Unreal]

  1. In the inspector, note that the spawned objects do not have MyComponent.

Multiple servers could call BeginPlay with authority on a singleton actor

We are accepting issues and we want your feedback.


Description

For dynamic actors marked with Singleton (e.g. GameState or GameMode), BeginPlay may be called with authority on more than one server.

Expected behavior

For all actors, BeginPlay should only be called with authority on one server. All other servers must call BeginPlay without authority.

Current behavior

If the non-authoritative server checks out the singleton entity before triggering BeginPlay, it will call BeginPlay without authority (correct). If, however, it triggers BeginPlay before checking out that entity, it will call BeginPlay with authority.

Environment

Windows 10
UnrealGDK 0.4.2

Internal ticket

UNR-1191

Failure to Build Multi-server Shooter Tutorial

We are accepting issues and we want your feedback.


Description

The Multiserver Tutorial is failing to build in Visual Studio or launch in the clones engine

Expected behavior

The Tutorial should build without failure and be able to be launched

Current behavior

Whenever I build the Multiserver Shooter Tutorial it always fails because it claims there is no directory such as WorkerSDK in the Unreal GDK that contains a schema. And sure enough I looked and couldn't find it either. It also gives me a Fatal error message when I try to open it with the cloned engine, saying that it is unable to read the module manifest from the UE4Engine.manifest

Possible solution

This is not obligatory but if you have a preference, please suggest a fix for the bug.

Steps to reproduce

Provide an unambiguous set of steps to reproduce this bug. Include code snippets if relevant.

Follow the Multiserver Shooter Tutorial until the point of building the project

Environment

What were you trying to accomplish?

I am trying to setup the tutorial to get started with Spatial in Unreal. I am using Unreal 4.21, and Spatial 13.2

Some replication conditions do not always match native behaviour.

We are accepting issues and we want your feedback.


Description

Some replication conditions do not always match native behaviour.

Expected behavior

All replication conditions should match native Unreal.

Current behavior

Some replication conditions do not match native Unreal. Some examples include:

  • [SimulatedOnly + SimulatedOrPhysics] Initial value of property replicated with condition SimulatedOnly or SimulatedOrPhysics is being applied on clients with Role != SimulatedProxy.
  • [InitialOrOwner] Non-Initial updates of property replicated with condition InitialOrOwner is being applied on non-owning clients.
  • [AutonomousOnly] Initial updates of properties replicated with condition AutonomousOnly are flaky (there is a low chance of receiving the initial update, the following updates work fine)

Environment

Windows 10
UnrealGDK 0.4.2

Internal ticket

UNR-1423

Only first Client connects to SpatialOS when running PIE with Use single process disabled.

We are accepting issues and we want your feedback.


Description

When running PIE with Use single process disabled only the first client connects successfully to Spatial OS.

Expected behavior

UnrealClient equal to the number of players selected connect successfully to Spatial OS.

Current behavior

Only one UnrealClient Connects to Spatial OS.

Steps to reproduce

  1. Disable the Use Single Process (Advanced Settings> Editor Preferences> Play>Multiplayer>Use Single Process ).
  2. Select Play As Client as Editor Multiplayer Mode
  3. Run via the Editor using Dedicated server and 2 players.

Environment

What were you trying to accomplish?
Unreal Engine version 4.22 in Windows.

Inaccurate/misleading info on the git page

Description

I was wondering how large this download was gonna be and based on the git page it sounded like 3 - 4Gb but in fact it is 15Gb. The placing of the size information in the description needs to be adjusted and possibly updated

Expected behavior

When looking at the installation steps it gets to the point where it says "Run setup.bat. This will download binaries and dependencies. Currently the complete fork is about 3 to 4Gb". This lead me to believe that once I run setup.bat it would download 3 to 4Gb of content

Current behavior

When I fork the project I download about 3 to 4Gb but when I run setup.bat it downloads an additional 11Gb which I was not aware of.

Possible solution

Fix 1. Move that "the fork size is 3 - 4Gb" bit to the step where you say "Download this fork" rather than having it at the step that says "Run setup.bat to download additional stuff"
Fix 2. During the "Run setup.bat" step, add a note that the extra stuff being downloaded is 11Gb in size

The only size information on the page is the 3 to 4Gb info but the actual total size of the downloads amount to 15Gb. If I had this information before hand I would have stuck with the Unity version instead so this is rather a big consideration to keep in mind for people like me with (for example) 50Gb per month metered connections ...

Environment

What were you trying to accomplish?
Download your fork so I could try out your system

Please detail your OS and Unreal Engine versions.
Running Win10 64 bit. I downloaded the 4.24 GDK Merge branch

Provide a general summary of the issue in the title field above.
As explained above. The download size information is placed in a very ambiguous and misleading place giving a false sense of size that turned out to be more than 25% of my monthly data where I was expecting to use less than 10%.

Opening the Editor while you are uploading or launching a cloud deployment disables the GDK Toolbar Start button, and Selecting Stop on the GDK Toolbar stops the running cloud deployment.

Issue

Opening the Editor while you are uploading or launching a cloud deployment disables the GDK Toolbar Start button, and Selecting Stop on the GDK Toolbar stops the running cloud deployment.

Workaround

Wait for the cloud launch to finish, or launch the cloud deployment whilst the Editor is already open.

Internal Ticket

UNR-1006

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.