I’m doing some testing of a custom online subsystem module, and I’ve stumbled across the following issue.
In PIE, there is a case where the editor will go through the OnlineIdentityInterface login.
The login process goes as follows:
PIE starts
It determines this is a network game, and starts login through the OnlineIdentityInterface (PlayLevel.cpp:2041 - LoginPIEInstances)
When login is complete,it creates a world and game instance (PlayLevel.cpp:1988 - CreatePIEWorldFromLogin)
A new world context is created for the instance (GameInstance.cpp:46 - InitPIE)
Gameplay continues, and in some cases, the OnlineIdentityInterface is called for things like Nicknames.
So, here’s the problem…
We’re using a different instance of the OnlineSubsystem for the initial login and any calls after that (getting display name, etc.)
In PIE, the OnlineSubsystem instance is identified by the world context, and the world context changes in step 4, after login completes.
All calls to the OnlineIdentityInterface after step 4 are not logged in.
Are you still seeing this issue occur in 4.6.1 or the latest 4.7 preview? Its possible that this was fixed with changes to the engine but if this is still a problem let us know and we will investigate it further.
I created a game-specific game instance from UGameInstance in the normal way, and I then overrided InitPIE to call the OnlineSubsystem Login stuff. It looks like the GameInstance Init stuff has changed a bit since I did this, though, so I guarantee nothing.
Ultimately, I just stopped debugging this stuff while in the editor. Instead, I just run ‘-game’ or ‘-server’ debugging as if I were really in-game.