Announcement

Collapse
No announcement yet.

Unreal Engine 4 is available for Win10 UWP app dev now

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    After updating to VS 15.2 I can no longer build my project. I'm getting the following error:

    Code:
    failed on 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcpackages\platform.winmd'
    'The system cannot find the path specified.'
    By chance do you know of a fix for this?

    Leave a comment:


  • replied
    Originally posted by jsyarrow View Post
    More thinking aloud: you could perhaps register a handler for the Windows::Xbox::System::User::SignInCompleted event. There's a User property on the event args for that which you can convert to the type expected by AddLocalUser via the helper XSAPIUserFromSystemUser.
    That does sound nice. For now, I have it in the FOnlineLeaderboardsLive constructor:

    Code:
        Windows::Xbox::System::User::SignInCompleted += ref new
            Windows::Foundation::EventHandler<EraAdapter::Windows::Xbox::System::SignInCompletedEventArgs^>(
                [=](Platform::Object^, EraAdapter::Windows::Xbox::System::SignInCompletedEventArgs^ args)
        {
            StatisticManager^ mgr = StatisticManager::SingletonInstance;
            if (mgr == nullptr) return;
    
            mgr->AddLocalUser(args->User->XSAPIUserFromShimUser(args->User));
        });
    Last edited by Jerry.Richards; 07-13-2017, 05:20 PM.

    Leave a comment:


  • replied
    Informational Note: I'm trying to debug the XSAPI by following this link:
    https://github.com/Microsoft/xbox-li...nrt-uwp-source

    Leave a comment:


  • replied
    Originally posted by Jerry.Richards View Post
    Is there an easy way to go about this?
    More thinking aloud: you could perhaps register a handler for the Windows::Xbox::System::User::SignInCompleted event. There's a User property on the event args for that which you can convert to the type expected by AddLocalUser via the helper XSAPIUserFromSystemUser.

    Leave a comment:


  • replied
    [MENTION=494622]jsyarrow[/MENTION] - Is there an easy way using existing API's to add a player to the StatisticManager?

    Code:
    StatisticManager::AddLocalUser(LiveContext->User);
    As you know before that line can be executed some setup is required:

    Code:
    if (!LiveSubsystem)
        return false;
    
    const FOnlineIdentityLivePtr Identity = LiveSubsystem->GetIdentityLive();
    if (!Identity.IsValid())
        return false;
    
    const FUniqueNetIdLive UserLive(Player.Get());
    Windows::Xbox::System::User^ XBoxUser = Identity->GetUserForUniqueNetId(UserLive);
    if (!XBoxUser)
        return false;
    
    XboxLiveContext^ LiveContext = LiveSubsystem->GetLiveContext(XBoxUser);
    if (LiveContext == nullptr)
        return false;
    
    StatisticManager^ mgr = StatisticManager::SingletonInstance;
    if (mgr == nullptr)
        return false;
    
    mgr->AddLocalUser(LiveContext->User);
    What I would like to do, after the user logs in and a valid FUniqueNetId is returned, is add the PlayerId to the StatMgr.

    Is there an easy way to go about this?

    Leave a comment:


  • replied
    Originally posted by jsyarrow View Post
    I'm afraid anything at the moment is just guessing since I haven't had a chance to play with this myself. Is the StatisticName property also null? Does the DisplayName property on the LeaderboardResult itself (not the LeaderboardColumn) contain a valid string that you recognize?
    Actually it was my mistake, I was confusing DisplayName with StatisticName

    DisplayName was returned as a null. Now, unfortunately, I am not getting any results back from the server so I can't test my fix:

    Code:
                    case StatisticEventType::GetLeaderboardComplete:
                    {
                        UE_LOG_ONLINE(Warning, TEXT("DoWork GetLeaderboardComplete: %s"), Event->User->Gamertag->ToString()->Data());
    
                        LeaderboardResultEventArgs^ LbResultEventArgs = safe_cast<LeaderboardResultEventArgs^>(Event->EventArgs);
                        LeaderboardResult^ LbResult = LbResultEventArgs->Result;
    
                        // how many columns are there? 1?
                        LeaderboardColumn^ lbCol = LbResult->Columns->GetAt(0);
                        Platform::String^ displayName = lbCol->DisplayName;
                        Platform::String^ statName = lbCol->StatisticName;
    
                        for (LeaderboardRow^ Row : LbResult->Rows)
                        {
                            FString RowText = FString::Printf(TEXT("Leaderboard row: User %s, Stats "), Row->Gamertag->Data());
    
                            for (unsigned int i = 0; i < Row->Values->Size; ++i)
                            {
                                Platform::String^ statValue = Row->Values->GetAt(i);
    
                                RowText.Append(FString::Printf(TEXT("(%s : %s) "), statName->Data(), statValue->Data()));
                            }
    
                            UE_LOG_ONLINE(Warning, *RowText);
                        }
                    }
                    break;
    Last edited by Jerry.Richards; 07-13-2017, 03:29 PM.

    Leave a comment:


  • replied
    Thanks, that sorted it. Much appreciated!

    Leave a comment:


  • replied
    Originally posted by Sparkash View Post
    I checked out that link, but the specific error code raised isn't detailed.
    Since that HRESULT begins 8007 the low-order short is a traditional Win32 error code which you can find in winerror.h (or on MSDN, e.g. here
    ). In this case, 0x70 is ERROR_DISK_FULL.

    If you have another drive with more space you can change where new apps are installed in the Settings app (System->Storage->Change where new content is saved).

    Leave a comment:


  • replied
    The .dll was present. I removed and reinstalled WindowsDevicePortalWrapper back to the 0.9.4 version, and now I can build. Progress!

    Unfortunately when I try to install the package I get this error -

    Code:
    Deployment Add operation with target volume C: on Package Game_1.0.0.0_x64__a78hwt03br9rj from:  (Game.appx)  failed with error 0x80070070. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues.
    I checked out that link, but the specific error code raised isn't detailed.

    Leave a comment:


  • replied
    Originally posted by Jerry.Richards View Post
    [MENTION=494622]jsyarrow[/MENTION] - do you have any suggestions for the NULL stat name being returned in the LeaderboardRow?
    I'm afraid anything at the moment is just guessing since I haven't had a chance to play with this myself. Is the StatisticName property also null? Does the DisplayName property on the LeaderboardResult itself (not the LeaderboardColumn) contain a valid string that you recognize?

    Leave a comment:


  • replied
    [MENTION=494622]jsyarrow[/MENTION] - do you have any suggestions for the NULL stat name being returned in the LeaderboardRow?

    Leave a comment:


  • replied
    Originally posted by Sparkash View Post
    [MENTION=494622]jsyarrow[/MENTION]
    Thanks for clearing it up. Unfortunately I get the same errors when attempting to build UWP.Automation within Visual Studio.
    When I manage NuGet packages, I can see that 'WindowsDevicePortalWrapper' is installed. It was originally on the 0.9.4 (beta) version, so I updated to 0.9.5, but that didn't seem to make a difference.
    That's odd. Can you see where WindowsDevicePortalWrapper.dll lands after the NuGet install? The project expects to be able to locate it in [Enlistment_Root]/Packages/WindowsDevicePortalWrapper.0.9.4.1-beta/lib/net452/ which should have been the default location for the 0.9.4 (beta) version.

    Leave a comment:


  • replied
    [MENTION=494622]jsyarrow[/MENTION]
    Thanks for clearing it up. Unfortunately I get the same errors when attempting to build UWP.Automation within Visual Studio.
    When I manage NuGet packages, I can see that 'WindowsDevicePortalWrapper' is installed. It was originally on the 0.9.4 (beta) version, so I updated to 0.9.5, but that didn't seem to make a difference.

    Leave a comment:


  • replied
    [MENTION=494622]jsyarrow[/MENTION] - I modified the above code some and discovered that the statName is NULL:

    Code:
    LeaderboardResultEventArgs^ LbResultEventArgs = safe_cast<LeaderboardResultEventArgs^>(Event->EventArgs);
    LeaderboardResult^ LbResult = LbResultEventArgs->Result;
    
    for (LeaderboardRow^ Row : LbResult->Rows)
    {
        FString RowText = FString::Printf(TEXT("Leaderboard row: User %s, Stats "), Row->Gamertag->Data());
        for (unsigned int i = 0; i < Row->Values->Size; ++i)
       {
            LeaderboardColumn^ statCol = LbResult->Columns->GetAt(i);
            Platform::String^ statName = LbResult->Columns->GetAt(i)->DisplayName;
    
             RowText.Append(FString::Printf(TEXT("(%s : %s) "), LbResult->Columns->GetAt(i)->DisplayName->Data(), Row->Values->GetAt(i)->Data()));
        }
    }

    Click image for larger version

Name:	NullStatName.jpg
Views:	1
Size:	149.9 KB
ID:	1131010


    And yes, the score is correct: 932
    Last edited by Jerry.Richards; 07-12-2017, 02:01 PM.

    Leave a comment:


  • replied
    Originally posted by jsyarrow View Post
    The event you get back from DoWork carries the leaderboard data. So it should be something like
    Code:
    using namespace Microsoft::Xbox::Services::Statistic::Manager;
    using namespace Microsoft::Xbox::Services::Leaderboard;
    
    LeaderboardResultEventArgs^ LbResultEventArgs = safe_cast<LeaderboardResultEventArgs^>(Event->EventArgs);
    LeaderboardResult^ LbResult = LbResultEventArgs->Result;
    
    for (LeaderboardRow^ Row : LbResult->Rows)
    {
    	FString RowText = FString::Printf(TEXT("Leaderboard row: User %s, Stats "), Row->Gamertag->Data());
    	for (unsigned int i = 0; i < Row->Values->Size; ++i)
    	{
    		RowText.Append(FString::Printf(TEXT("(%s : %s) "), LbResult->Columns->GetAt(i)->DisplayName->Data(), Row->Values->GetAt(i)->Data()));
    	}
    
    	UE_LOG_ONLINE(Warning, *RowText);
    }
    Well that helped quite a bit. . .and seems to show an update problem:

    Click image for larger version

Name:	MissingKeyValuePair.jpg
Views:	1
Size:	128.6 KB
ID:	1131009


    Is the Key ("HighScore") missing then?

    Leave a comment:

Working...
X