Contents

Unreal Engine

Before you begin

Ensure that you are on Unreal Version 5.2 or later (Earlier versions will require you to build your own version of the plugin from our base sdk code) The base sdk is available upon request.

In your Projects base folder create a Plugins folder (if it does not already exist). In that folder create a TwitchSDK folder then unzip everything contained in UnrealTwitchSDK.zip

Note: If you place the plugin into the base Plugins folder but do not create a subfolder for the Twitch plugin, Unreal will not correctly generate the sln file and you will get errors when trying to add the TwitchSDK module.

Then find your project’s .build.cs file and add the following:

PrivateDependencyModuleNames.Add("TwitchSDK");

Next the Unreal plugin requires C++17, you will also need to add the following declaration if you haven’t already:

CppStandard = CppStandardVersion.Cpp17;

Finally go to your Project Settings and navigate to the Plugins subsection and select Twitch. In that submenu enter your Client ID.

Unreal Plugin Settings image

Authentication

The first step in any Twitch integration is Authentication. During Authentication users give access to particular features of their account via OAuthScopes are requested. Please refer to Scopes to learn more about which scopes you should select. Once you have determined which scopes you need call TwichSDK::BuildOAuthScopes with the appropriate scopes to request what you want to interact with. Finally once the response has been obtained either show the user the URL they must navigate to, or provide a button which will directly take them there. Checking the TwitchSDK::AuthenticationInfo object you will be able to determine if the user is already logged in or not.

In this AuthActorComponent example we are requesting the ability to manage broadcasts and Polls. If you wanted to also be able to modify Predictions you would need to add ChannelManagePredictions to the BuildOAuthScopes function.

void UAuthActorComponent::BeginPlay()
{
	Super::BeginPlay();

	auto core = FModuleManager::GetModuleChecked<FTwitchSDKModule>("TwitchSDK").Core;
	core->GetAuthenticationInfo(
		TwitchSDK::BuildOAuthScopes({ FTwitchSDKOAuthScope::ChannelManageBroadcast, FTwitchSDKOAuthScope::ChannelManagePolls }),
		[](const TwitchSDK::AuthenticationInfo& info) {
			if (info.UserCode.size() == 0)
			{
				UE_LOG(LogTemp, Warning, TEXT("The user is already authenticated"));
			}
			else
			{
				UE_LOG(LogTemp, Warning, TEXT("The user should authenticate at %s with code %s"), info.Uri.data(), info.UserCode.data());
			}
		},
		[](const std::exception& e) {
			UE_LOG(LogTemp, Warning, TEXT("GetAuthenticationInfo failed: %s"), UTF8_TO_TCHAR(e.what()));
		}
	);
}

Event Subscriptions

All event subscriptions are handled in the same way in the Unreal plugin. First you must create a subscription for your subscription, we suggest using auto stream as the container for this. Then at a later point in your code you call the wait for event function on the same stream object. stream.WaitForEvent([](Type of Subscription))

Below are various examples

Subscribe to Channel Subscriptions

Create the Subscription

auto stream = core->SubscribeToChannelSubscribeEvents();

Wait for Events

stream.WaitForEvent([](const TwitchSDK::ChannelSubscribeEvent& e) {
	auto userDisplayName = TwitchSDK::ToFString(e.UserDisplayName);
	auto message = FString::Printf(TEXT("%s just subscribed!"), *userDisplayName);

	//print message to screen or do something interesting
});

Subscribe to Channel Follows

Create the Subscription

auto stream = core->SubscribeToChannelFollowEvents();

Wait for Events

stream.WaitForEvent([](const TwitchSDK::ChannelFollowEvent& e) {
	auto userDisplayName = TwitchSDK::ToFString(e.UserDisplayName);
	auto message = FString::Printf(TEXT("%s just followed!"), *userDisplayName);

	//print message to screen or do something interesting

});

Subscribe to Custom Channel Rewards

Create the Subscription

auto stream = core->SubscribeToCustomRewardEvents();

Wait for Events

stream.WaitForEvent([](const TwitchSDK::CustomRewardEvent& e) {
	auto UserName = TwitchSDK::ToFString(e.RedeemerName);
	auto RewardName = TwitchSDK::ToFString(e.CustomRewardTitle);
	auto message = FString::Printf(TEXT("%s just purchased %s!"), *UserName, *RewardName);

	//print message to screen or do something interesting

});

Subscribe to Hypetrain

Create the Subscription

auto stream = core->SubscribeToHypetrainEvents();

Wait for Events

stream.WaitForEvent([](const TwitchSDK::HypeTrainEvent& e) {
	auto HypeLevel = TwitchSDK::ToFString(e.Level);
	auto message = FString::Printf(TEXT("The HypeTrain is at level %s!"), *HypeLevel);

	//print message to screen or do something interesting

});

Subscribe to Raids

Create the Subscription

auto stream = core->SubscribeToChannelRaidEvents();

Wait for Events

stream.WaitForEvent([](const TwitchSDK::ChannelRaidEvent& e) {
	auto UserWhoRaided = TwitchSDK::ToFString(e.FromBroadcasterName);
	auto Viewers = TwitchSDK::ToFString(e.Viewers);
	auto message = FString::Printf(TEXT("%s just raided with %s!"), *UserWhoRaided, *Viewers);

	//print message to screen or do something interesting

});