Skip to main content

User-generated Content

Last updated on

Overview

AccelByte Foundations’ User Generated Content (UGC) service allows your players to become creators and contribute to the community by creating in-game content that can be downloaded by other players. Custom items can include custom colors for vehicles or weapons, or new hair for characters. As a game admin, you can define an official preset that can be used by creators as a beginning point to develop their own content. You can also manage channels, view a list of creators in the game, and modify, hide, and delete creators’ content if they violate your game’s terms and conditions.

How it Works

Game Admins can add items to be used as official presets which players can then modify. These presets come with predefined Types, Subtypes, and Tags. When a player creates a new design for one of these preset items, they can upload their design for other players to download and use, provided they also own the original preset item. Then when a player uses a custom design they’ve downloaded, that design will be visible to other players that interact with them in multiplayer games.

Configure User Generated Content in the Admin Portal

The first step in configuring the User Generated Content service is configuring the Types, Subtypes, and Tags properties in the Admin Portal. Types, Subtypes, and Tags are used by players to categorize custom items when they upload their content. For example, a custom design for a sniper rifle might have Weapon as the Type, with Skin or Patterns as the Subtype, depending on the part of the rifle that’s customized. Tags could also include Weapon, sniper, color, materials, or other descriptors of the design.

Create a New Type

  1. Open the intended game title in the Admin Portal, click Game Management, expand the UGC Management section, and select Configurations.

  2. On the Configurations page, select New Type.

    ugc

  3. The Add New Type form will appear. Enter a name for the new item type in the Type Name field and then click the Add button.

    ugc

  4. The new type will be added to the list on the Configurations page. You can now start adding Subtypes to define customizable parts of the item. Click View under the Action menu of the Type you want to edit.

    ugc

  5. In the Subtypes section, click the New Subtype button.

    ugc

  6. The Add New Subtype form will appear. Enter the Subtype Name and click the Add button.

    ugc

    The new Subtype will be added to the list.

    ugc

Create a New Tag

  1. Open your desired game title in Admin Portal, click Game Management, expand the UGC Management section, and select Configurations.

  2. On the Configurations page, select the Tags tab and click New Tag.

    ugc

  3. The Add New Tag form will appear. Input the Tag Name and click the Add button.

    ugc

    The new tag will be added to the Tag List.

    ugc

Manage User Generated Content and Creators in the Admin Portal

In the Creators menu under the UGC Management dropdown, you can see a list of community creators along with their followers. Here, you can also create a new channel for a creator, upload an official preset, or manage a creator’s content.

Create a New Channel

Each creator can have one or more channels to organize their creations. Channels are used to group players’ content based on specific categories, such as region, language, patch, build version, or other admin-defined. To create a channel, follow the steps below.

  1. In the Admin Portal, go to UGC Management and click the Creators menu.

  2. Click View next to the creator for whom you want to create a new channel.

    ugc

  3. On the Creator page, click the New Channel button.

    ugc

  4. Input the Channel Name and click Add to add the channel to the list.

    ugc

Create New Content

  1. In the Admin Portal, go to UGC Management and click the Creators menu.

  2. Click View next to the creator for whom you’d like to create content.

    ugc

  3. Click View next to the channel you previously created.

    ugc

  4. On the Creator Details page, click the New Content button.

    ugc

  5. The Add New Content form will appear. Fill in the required fields.

    ugc

    • Input a name for the content in the Content Name field.
    • Select a type for the content from the Type dropdown menu.
    • Select a subtype for the content in the Subtype field.
    • Select a tag to identify the content from the Tag dropdown menu. This field is optional.
    • Upload the image in the Content field.
    • Upload a preview image of the main image in the Preview field.

    Once completed, click Add.

Create a New Content Group

  1. In the Admin Portal, go to UGC Management and click the Creators menu.

  2. Click View next to the creator for whom you’d like to create content.

    ugc

  3. On the Creators page, switch to the Content Groups tab and click the New Content Group button.

    ugc

  4. The Add New Content Group form will appear. Fill in the form with the required information.

    ugc

    • Input a name for the group in the Content Group Name field.
    • Select the content that you want to add to the group in the Content field.

    Once completed, click the Add button. The new Content Group will be created.

View Content

  1. In the Admin Portal, go to UGC Management and click the Contents menu.

  2. On the Contents page, choose the content you want to see and click View under that content’s Action column.

    ugc

  3. On the Content Details Page you can see some basic information about the content, view the content, and see the groups where this content can be found.

    ugc

Add a Screenshot to Content

  1. In the Admin Portal, go to UGC Management and click the Contents menu.

  2. On the Contents page, choose the content you want to see and click View under that content’s Action column.

    ugc

  3. On the Content Details page, scroll down to the Screenshots section and click the New Screenshot button.

    ugc

  4. The Upload Image form will appear. Select the screenshot you want to upload from your computer in the Upload Image section and type a description of the image in the Description field. Once completed, click Upload.

    ugc

Manage Reporting in the Admin Portal

Your players can report offensive or inappropriate content. To enable this, you’ll first need to create the reasons why items can be reported and then create reason groups in which to sort those reasons.

Create a Reason

  1. In your desired game title, go to the Game Management section, open the Reporting and Moderation section, and select Reasons.

  2. In the Reasons tab, click Add Reason at the top right-hand corner.

    ugc

  3. The Add New Reason form will appear. Fill in the required fields.

    ugc

    • Input a name for the reason in the Reason Name field.
    • Input the category the reason belongs to in the Reason Group Name dropdown.
    TIP

    Make sure you've created at least one reason group before setting up a new reason.

    You can add a reason to multiple different groups. This field is optional.

    • Input a description of the reason in the Description field. This field is optional.

    Once completed, click Add. The new reason will be created.

    NOTE

    You can Edit a reason name, description, or delete a reason at any time, for any reason.

Create a Reason Group

  1. In the Reason Group tab, click the Add Reason Group button in the top right-hand corner.

    ugc

  2. The Add Reason Group form will appear. Fill in the required fields.

    • Input a name for the reason group in the Reason Group Name field.
    • Choose the reasons that you’d like to add to this reason group in the Reason List field. This list will include any previous reasons you have created. This field is optional.

    ugc

    Click Add. The new reason group will be created.

Moderate Reported Content in the Admin Portal

You can view reports, remove reported content, or discipline reported players.

View Reported Content

  1. Go to the Game Management section, click Reporting and Moderation, and select Tickets.

  2. On the Tickets page, you can see the list of reported content. Click View in the Action column of the report you want to open.

    ugc

  3. On the Tickets page, click View Content.

    ugc

    The Content Details page will appear.

View a Reported Content Uploader

  1. On the Tickets page, click View Profile to view the player that posted the reported content.

    ugc

You’ll be directed to their profile where you can take action based on your game’s policies.

View a Reporting Player

  1. On the Ticket page, click View in the Reporter section at the bottom of the page.

    ugc

  2. The Reporter Details window will appear. Here you can view information about the reporting player.

    ugc

Hide or Unhide Reported Content

Hiding content prevents players from seeing it without deleting the content itself. You can also reveal previously hidden content, which will make the content visible to players.

  1. On the intended Ticket page, click the Hide Content button in the Reported Content section.

    ugc

  2. The Hide Content confirmation box will appear. Click Hide to confirm.

    ugc

  3. The reported content will be hidden. To reveal previously hidden reported content, click Unhide Content.

    ugc

  4. The Unhide Content confirmation box will appear. Click the Unhide button to confirm.

    ugc

Delete Reported Content

  1. On the Ticket page, click the Delete Content button in the Reported Content section.

    ugc

  2. The Delete Content confirmation box will appear. Click the Delete button to confirm.

    WARNING

    Make sure to double-check the content you are deleting before you confirm as this action is not reversible.

    ugc

Ban or Unban a Reported Content Uploader

This feature allows you to quickly ban an offending player from uploading content without banning them from your game completely. For more comprehensive ban options, see AccelByte Foundations’ User Bans documentation.

Ban

  1. On the Ticket Details page, click the Ban User button in the Reported Content section.

    ugc

  2. The UGC Ban form will appear. Fill in the following fields:

    ugc

    • Define when the ban will expire in the Ban Expiration field.
      • If you want the ban to expire after a certain amount of time, select Set by duration and enter the number of minutes, hours, or days you want the player to be banned for. After this amount of time passes, the ban will expire. If you want the ban to expire on a certain day and time, select Set by expiration date and enter the date and time you want the ban to expire.
      • Choose Never if you want the ban to be permanent. Permanent bans can be disabled manually.
    • Choose the reason for banning the player in the Reasonfield.
    • Input a comment on the ban in the Comment field.
    • Select the Notify user via email checkbox to send a ban notification to the banned player.
    IMPORTANT

    Players who log into your game using 3rd-party credentials will not have an email address associated with their account and so will not know that they have been banned. Only players that have registered an account in your game or platform, or have upgraded their headless account by registering an email address in your game, will be able to receive an email notification if they're banned. For more information about headless accounts, see our Foundations 3rd-Party Login Integration documentation.

    Once completed, click the Ban button. The reported user will be banned from uploading content until their ban expires or they are unbanned.

Unban

  1. To unban a banned user, click the Unban User button in the Reported Content section.

    ugc

  2. The Disable Ban confirmation box will appear. Click the Disable button to confirm.

    ugc

Resolve or Unresolve Reported Content

Resolving a report allows you to indicate to your colleagues that the report has been addressed and requires no further action. You can also unresolve a previously resolved report if further action needs to be taken.

  1. On the Ticket page, click the Resolve Ticket button to resolve the reported issue.

    ugc

  2. The Resolve Ticket confirmation box will appear. Fill in the Note field with the reason why you’re resolving the ticket and click the Resolve button to confirm.

    ugc

  3. The reported content will be marked as Resolved. The Resolve Ticket button will change to Unresolve Ticket. To reopen the reported content ticket, click the Unresolve Ticket button.

  4. The Unresolve Ticket confirmation box will appear. Fill in the Note field with the reason why you’re reopening the report and click Unresolve to confirm.

    ugc

Moderate Reported Players in the Admin Portal

View Reported Player Details

  1. Go to the Game Management section, click Reporting and Moderation, and select Tickets. On the Tickets page under the Player tab, you can see the list of reported players.

  2. Click View next to the report you want to open.

    ugc

    On the Ticket page in the Reports section, you can see a list of the reports that the player has received.

  3. To open the details of the desired report, click View.

    ugc

    The Reporter Details window will appear. You can see the report details here.

    ugc

View Reported Player Profile

  1. On the Tickets page in the Player Details section, click View Profile.

    ugc

    You’ll be directed to the player’s profile where you can take action based on your game’s policies.

Ban or Unban a Reported Player

Ban

  1. On the Ticket page, click the Ban User button at the top of the page.

    ugc

    The Account Ban form will appear.

  2. Fill in the following fields:

    ugc

    • Define when the ban will expire in the Ban Expiration field.
      • If you want the ban to expire after a certain amount of time, select Set by duration. Then enter the number of minutes, hours, or days you want the player to be banned for. After this amount of time passes, the ban will expire. If you want the ban to expire on a certain day and time, select Set by expiration date. Then enter the date and time you want the ban to expire.
      • Choose Never if you want the ban to be permanent. Permanent bans can be disabled manually.
    • Choose the reason for banning the player in the Reason field.
    • Input a comment on the ban in the Comment field.
    • Select the Notify user via email checkbox to send a ban notification to the banned player.
    IMPORTANT

    Players who log into your game using 3rd-party credentials will not have an email address associated with their account and so will not know that they have been banned. Only players who have registered an account in your game or platform, or have upgraded their headless account by registering an email address in your game, is able to receive an email notification if they’re banned. For more information about headless accounts.

  3. Once you have completed the fields, click the Ban button.

The reported user will now be banned from uploading content until their ban expires or they are unbanned.

Unban

  1. To unban a banned user, click the Unban User button at the top of the page.

    ugc

    The Disable Ban confirmation box will appear.

  2. Click Disable to confirm.

    ugc

Resolve or Unresolve Reported Player

  1. On the Ticket page, click the Resolve Ticket button to resolve the reported issue.

    ugc

    The Resolve Ticket confirmation box will appear.

  2. Fill in the Note field with the reason why you’re resolving the report, then click the Resolve button to confirm.

    ugc

  3. The reported content is marked as resolved. To reopen the reported content ticket, click the Unresolve Ticket button.

  4. The Unresolve Ticket confirmation box will appear. Fill in the Note field with the reason why you’re reopening the report, then click Unresolve to confirm.

    ugc

Configure the Reporting Rate Limit

You can set limits for how many times a player can make a report, as well as for how many times a piece of content can be reported. These limits help to prevent players from abusing the report function.

  1. In the Admin Portal, go to the Game Management section, expand Reporting and Moderation, and click Configuration. The Rate Limit Configuration page will appear.

    ugc

    Fill in the following fields with the desired values:

    Configuration

    • The Max. Report Per User field defines the maximum number of times a single user can submit a report in the defined time period.
    • The Limit interval (minutes) field defines the time interval in minutes that applies to the Max. Report Per User field.
    TIP

    If the Max. Report Per User value is 3 and the Limit interval (minutes) value is 6, then a single player can submit 3 reports per 6 minutes. Any additional reports submitted within that limit interval will return errors.

    Max. Report Per Ticket

    • The Max. Report Per Ticket field defines the maximum number times a piece of content can be reported. The service will stop receiving reports from users once this maximum is reached.

Configure Auto Moderation

You can set the Admin Portal’s Auto Moderation feature to take effect according to preset reasons, rules, or rates.

  1. In the Admin Portal, go to Game Management, expand the Reporting and Moderation section, and click Configuration.

  2. On the Configuration page, open the Auto Moderation tab and click the Add New button.

    ugc

  3. The Add Auto Moderation Rules form will appear. Fill in the following fields:

    ugc

    • Select the Category in which you want to apply auto moderation. Choose UGC if you want the rule to apply to content reports. Choose Player if you want the rule to apply to player reports.
    • Select the Reason that will trigger auto moderation.
    • Input the amount of reports it takes to trigger auto moderation in the Threshold field. For example, if you input 5, then the auto moderation feature will activate after five reports have been made by players on the same piece of content.
    • Select the Moderation Action that will be applied to the reported content.
    • Toggle the auto moderation rule Active or Inactive with the Status toggle.
  4. Once completed, click the Add button. The new rule will be applied.

Implement Reporting using the Client SDKs

Retrieve the List of Reason Groups

This function returns the list of reason group IDs and titles under a given game title.

const int32 Offset = 0;
const int32 Limit = 2;
FRegistry::Reporting.GetReasonGroups(Offset, Limit, THandler < FAccelByteModelsReasonGroupsResponse > ::CreateLambda([ & ](const FAccelByteModelsReasonGroupsResponse & Response) {
/* do something when succeed*/
}),
FError::CreateLambda([](int32 ErrorCode, FString ErrorMessage) {
/* do something when failed */
});

Retrieve a List of Reasons

This function returns the list of reasons, optionally filtered by reason group.

FString ReasonGroup = "";
const int32 Offset = 0;
const int32 Limit = 2;

FRegistry::Reporting.GetReasons(ReasonGroup, Offset, Limit, THandler < FAccelByteModelsReasonsResponse > ::CreateLambda([ & bGetReasonsSuccess, & ReasonsResponse](const FAccelByteModelsReasonsResponse & Response) {
ReasonsResponse = Response;
/* do something when succeed*/
}),
FError::CreateLambda([](int32 ErrorCode, FString ErrorMessage) {
/* do something when failed */
});

Report Content

Players can report a content creator that has posted inappropriate content. A player can only report a creator once. If they try to report the same creator more than once, they’ll receive an error message. To implement reporting, use the following function:

FAccelByteModelsReportingSubmitData SubmitData;
SubmitData.AdditionalInfo = /* specified AdditionalInfo use TMap<FString, FString>*/ ;
SubmitData.Category = /* specified Category use EAccelByteReportingCategory*/ ;
SubmitData.Comment = /* specified Comment*/ ;
SubmitData.ObjectId = /* specified ObjectId*/ ;
SubmitData.ObjectType = /* specified ObjectType*/ ;
SubmitData.Reason = /* specified Reason fill from GetReason or custom string*/ ;
SubmitData.UserID = /* specified UserID fill with target reported user*/

FRegistry::Reporting.SubmitReport(SubmitData, THandler < FAccelByteModelsReportingSubmitResponse > ::CreateLambda([ & bSubmitReport](const FAccelByteModelsReportingSubmitResponse & Response) {
/* do something when succeed*/
}),
FError::CreateLambda([](int32 ErrorCode, FString ErrorMessage) {
/* do something when failed */
});

Get a Pre-Signed URL

You can use this function to get a pre-signed URL that you can use to upload your content to cloud storage.

FString UGCChannelId = /* use correct ChannelId Created before */;
FString UGCType = TEXT("Type");
TArray<FString> UGCSubTypes = { TEXT("subType1"), TEXT("subType2"), TEXT("subType3") };
TArray<FString> UGCTags = { TEXT("Tag1"), TEXT("Tag2"), TEXT("Tag3") };
FAccelByteModelsUGCRequest UGCCreateContentRequest = {
"content_type", "file_extension", "Content Title", “data_to_preview”, UGCType, UGCSubTypes[0], {UGCTags[0], UGCTags[1]}
};

FAccelByteModelsUGCResponse CreateContentResponse;
FRegistry::UGC.CreateContent(UGCChannelId, UGCCreateContentRequest,
THandler<FAccelByteModelsUGCResponse>::CreateLambda([&](const FAccelByteModelsUGCResponse& Response)
{
CreateContentResponse = Response;
/* do something when succeed*/
}),
FError::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
/* do something when failed */
});

Upload the Content to Cloud Storage

To upload the content to cloud storage, use the following function. You’ll need the pre-signed URL you retrieved in the previous step.

/* Use CreateContentResponse from the request above */
FAccelByteNetUtilities::UploadTo(CreateContentResponse.PayloadUrl[0].Url, UGCContentBytes,
FHttpRequestProgressDelegate::CreateLambda([](const FHttpRequestPtr& Request, int32 BytesSent, int32 BytesReceived)
{
UE_LOG(LogAccelByteUGCTest, Log, TEXT("Upload progress : %d / %d"), BytesSent, Request->GetContentLength());
}),
FVoidHandler::CreateLambda([&]()
{

}),
FError::CreateLambda([](int32 ErrorCode, FString ErrorMessage)
{
/* do something when failed */
},
CreateContentResponse.ContentType);