PlayEveryWare / eos_plugin_for_unity

Repository for PlayEveryWare's EOS Plugin for Unity, bringing the functionality of Epic Online Services to the Unity Game Engine.
https://eospluginforunity.playeveryware.com
297 stars 53 forks source link

Unity Editor Frozen in AuthSample #37

Closed connffuused closed 2 years ago

connffuused commented 3 years ago

A Platform Interface initialization failure exception occurs in the first play attempt, and the Unity Editor frees up when the second play is attempted. image

adrianpew commented 3 years ago

Hello. Have you configured the plugin? https://github.com/PlayEveryWare/eos_plugin_for_unity#steps image

Also, please post the full error in text form. Thank you.

connffuused commented 3 years ago

if you mean fill the blanks with data that is registered in eos portal, yes. I double checked with pure c# sdk in other project with identical configuration in shipped client.

Exception: failed to create an Epic Online Services PlatformInterface
PlayEveryWare.EpicOnlineServices.EOSManager+EOSSingleton.Init () (at Library/PackageCache/com.playeveryware.eos@7684ee6c4e/Runtime/EOSManager.cs:298)
PlayEveryWare.EpicOnlineServices.EOSManager.Awake () (at Library/PackageCache/com.playeveryware.eos@7684ee6c4e/Runtime/EOSManager.cs:830)
NullReferenceException: Object reference not set to an instance of an object
PlayEveryWare.EpicOnlineServices.Samples.EOSFriendsManager..ctor () (at Assets/Samples/Epic Online Services Plugin for Unity/1.0.1/EOS Plugin for Unity Samples/Scripts/EOSFriendsManager.cs:98)
System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) (at <695d1cc93cca45069c528c15c9fdd749>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) (at <695d1cc93cca45069c528c15c9fdd749>:0)
System.Activator.CreateInstance[T] () (at <695d1cc93cca45069c528c15c9fdd749>:0)
PlayEveryWare.EpicOnlineServices.EOSManager+EOSSingleton.GetOrCreateManager[T] () (at Library/PackageCache/com.playeveryware.eos@7684ee6c4e/Runtime/EOSManager.cs:186)
PlayEveryWare.EpicOnlineServices.Samples.UIFriendsMenu.Start () (at Assets/Samples/Epic Online Services Plugin for Unity/1.0.1/EOS Plugin for Unity Samples/Scripts/UI/UIFriendsMenu.cs:77)

Thanks.

adrianpew commented 3 years ago

Hello. The config should have been saved to a json file and located under StreamingAssets\EOS\EpicOnlineServicesConfig.json

image

Your error you are receiving indicates a failure to initialized EOS. I would recommend you debug this line to ensure that platformOptions includes the correct values:

https://github.com/PlayEveryWare/eos_plugin_for_unity/blob/31ef5666da20314639e559af05674505f11c915b/Assets/Plugins/Source/EOSManager.cs#L294

Additionally, EOS init is called in a native graphics plugin. Source is located in the following location if you need to debug further: https://github.com/PlayEveryWare/eos_plugin_for_unity/tree/stable/NativeCode/DynamicLibraryLoaderHelper

Can you clarify "disabled Fast Enter PlayMode"? I see the following new options under File > Project Settings > Editor. Are you checking one of these options?

image

You can also try creating a new Unity project with a clean install of the Plugin and samples. You can then use your product config to validate your setup with the samples.

connffuused commented 3 years ago

Thanks for the hint, I'll debug that line soon. Also, I disabled Enter PlayMode option clearly.

I think debuggin will solve the problem of failure of initializing properly in the first run in editor. But, freezing in second play doesn't make a sense in common case. it seems happening only failed to initialize in first play.

When initialization fails in the first play, is there a logic that can freeze the editor in the second playmode? I guess that when an exception is thrown, this may be happen because the native library is not unloaded properly.

If so, I hope you will consider this situation in unity editor. For any reason, there is a case for the first run to fail, and it is undesirable to cause problems as the native library loaded in the previous session is attempted to reload without being unloaded. I haven't looked throught all the codes, but if an exception occurs during the initialization process, it seems that the explicit cleaning-up process is not working correctly.

Thank you once again for your fast response. If there is any updated information, I'll leave a comment again.

adrianpew commented 3 years ago

Hello. The freezing issue was previously reported in another issue. We are looking into it.

https://github.com/PlayEveryWare/eos_plugin_for_unity/issues/20

Thanks.

domlaurenti commented 2 years ago

Apologies for the delayed response, we solved a version of this issue but not the entire thing Currently, we are investigating a related issue right now. Still investigating this issue.

scovertb commented 2 years ago

@seonghwan-dev It looks like a related issue was fixed by the latest 2.1.0 release. Is this issue still occurring?

connffuused commented 2 years ago

Hi, It seems good news. Unfortunately, We're not using this plugin anymore in these days.
Anyways, thanks for notification. :D