Describe the bug
This is only really an issue when you perform a query for game content that uses a separate application for uploading said content. One current example is Halo: The Master Chief Collection.
When performing a workshop item query, no matter what filters are applied, the result will contain missing or no entries.
To Reproduce
Steps to reproduce the behavior:
- Initialize the Steam Client using MCC's app id (
976730)
- Create a query using
Ugc.Query.All or Ugc.Query.Items
- Get the item page using
GetPageAsync()
- There should be no entries or missing entries depending on the search criteria
Calling Code
Here is a modified version of the QueryWithTags() unit test. Running this with the default handling inside of GetPageAsync() will result in no items.
public async Task QueryWithTags()
{
var q = Ugc.Query.Items
.WithTag("halo4")
.WithTag("campaign")
.MatchAllTags();
var result = await q.GetPageAsync( 1 );
Assert.IsNotNull( result );
Assert.IsTrue( result?.ResultCount > 0 );
Console.WriteLine( $"ResultCount: {result?.ResultCount}" );
Console.WriteLine( $"TotalCount: {result?.TotalCount}" );
foreach ( var entry in result.Value.Entries )
{
Console.WriteLine($"Name: {entry.Title} [{entry.Id}]");
Assert.IsTrue(entry.HasTag("halo4"), $"Item '{entry.Title}' is missing 'halo4' tag.");
Assert.IsTrue(entry.HasTag("campaign"), $"Item '{entry.Title}' is missing 'campaign' tag.");
}
}
For testing, inside of GetPageAsync(), if we simply remove the condition that sets the creatorApp to equal the consumerApp, the query will function correctly, and all items will be included in the result.
public async Task<ResultPage?> GetPageAsync( int page )
{
if ( page <= 0 ) throw new System.Exception( "page should be > 0" );
if ( consumerApp == 0 ) consumerApp = SteamClient.AppId;
// If we just uncomment this line here, the query will actually function correctly
if ( creatorApp == 0 ) creatorApp = consumerApp;
// Rest of function...
}
Ideally, a proper fix would include some kind of handling to override the creatorApp in the event that we have a game that exhibits this issue.
Expected behavior
What should happen is that it should run the query, and I should get back all the items that meet the criteria defined in the query itself.
Desktop (please complete the following information):
- OS: Windows 10 19045.6466
Additional context
For some extra context, when uploading workshop items for MCC, a separate application called Excession is used, which in turn has its own unique app id, which doesn't match MCC's, hence why this issue occurs. Excession's app id is 1695795 while MCC's is 976730.
Describe the bug
This is only really an issue when you perform a query for game content that uses a separate application for uploading said content. One current example is Halo: The Master Chief Collection.
When performing a workshop item query, no matter what filters are applied, the result will contain missing or no entries.
To Reproduce
Steps to reproduce the behavior:
976730)Ugc.Query.AllorUgc.Query.ItemsGetPageAsync()Calling Code
Here is a modified version of the
QueryWithTags()unit test. Running this with the default handling inside ofGetPageAsync()will result in no items.For testing, inside of
GetPageAsync(), if we simply remove the condition that sets the creatorApp to equal the consumerApp, the query will function correctly, and all items will be included in the result.Ideally, a proper fix would include some kind of handling to override the creatorApp in the event that we have a game that exhibits this issue.
Expected behavior
What should happen is that it should run the query, and I should get back all the items that meet the criteria defined in the query itself.
Desktop (please complete the following information):
Additional context
For some extra context, when uploading workshop items for MCC, a separate application called Excession is used, which in turn has its own unique app id, which doesn't match MCC's, hence why this issue occurs. Excession's app id is
1695795while MCC's is976730.