Changelog
This page contains a brief overview of the changes that were made to TwiWorks. It is worth noting that, due to Unreal Engine Marketplace restrictions, we are unfortunately only able to release updates to the 3 most recent versions of Unreal Engine. We maintain this list on a best-effort basis, but might forget to add something from time to time. Please don't hesitate to let us know if you think something is missing.
v2.1
Added
- Missing
channel:moderatedefault scope to Local Login defaults.
Changed
- Default
keepalive_timeoutto30sto help avoid disconnections due to inactivity. - Various other minor changes & enhancements.
v2.0
This version contains a couple of breaking changes and requires you to update your login system. Please refer to the Version 2 Upgrade page for upgrade instructions information.
Added
OnFollowEvent.SendAnnouncementNode.- Ability to receive announcements (signified by an OnMessage event with the
bIsAnnoucementmessage flag set totrue). - Ability to disable chat features (Whisper, Channel Point & Follower Events), reducing the OAuth scopes needed.
- Scope testing system. Upon connecting to Twitch, TwiWorks validates the token and identifies the scope the token has access to and runs a check/log if an action is performed without the relevant scope. Keep an eye on the Output Log!
- Customization of the local login page.
- [BACKEND] Support for updating OAuth scopes from the
config.inifile.
Changed
- [INTERNAL] Switched over to the EventSub system for interacting with chat compared to the IRC + PubSub system used before. This system streamlines the internals (allowing all events to flow through one channel) and should be more future-proof. New OAuth scopes are required to use this system.
- [SECURITY] Updated
RefreshTokennode + API endpoint to include token in POST body, avoiding potential credential leakage of old system. - [SECURITY] Updated
PerformTwitchLoginto no longer include token. Updating is HIGHLY recommended, but since login requests & tokens are single-use, exploitation of this vulnerability (e.g. by reading browser history) is unlikely as long as the user switches back to the game (so it can consume the login). - Fixed typos in various BP nodes.
- Updated categories so all nodes fall within the TwitchWorks category.
- Removed the requirement to subscribe to
OnMessageandOnCheerevents. Now follow the same system as all other events. - [INTERNAL] Switched
SendMessageover to HTTP-based version. Requires newuser:write:chatOAuth scope, no code changes needed. OnPointsEventnow includes additional information (such as redemption status) for channel point events.- Miscellanious changes/improvements/minor bugfixes.
Removed
OnRitualevent.- Bugs :)
In summary, TwiWorks version 2.0 paves the way for many more years of TwiWorks. There are a few minor breaking changes, but every effort has been made to make this as much of a drop-in replacement as possible while still addressing some of the quality-of-life and structural issues that previous versions of TwiWorks have had. While we have extensively (stress) tested this first 2.0 version, there might still be bugs that we haven't found. This is especially true for partner/affiliate-only features, such as the channel points system which we have been unable to test internally. If you run into any issues with the plugin, please consult the Version 2 Upgrade page and reach out to us if that doesn't provide you with an answer.
v1.0.32
Changed
- Resolved potential packaging issue related to unset defaults in various TwiWorks structs.
v1.0.32
Added
- Backwards compatibility for C++
<20
Changed
- [INTERNAL] Refactored Chat Connection to be a UObject, ensuring it falls under Unreal Engine's GC system. This addresses cleanup/destruction issues, improves stability and simplifies the plugin's architecture.
v1.0.31
This version is only compatible with C++20. Please use an older or more recent plugin version if you are not using C++20 for your project.
Added
- Support for Unreal Engine 5.3
- Support for C++20 (NOTE: This version was not backwards-compatible with older C++ versions; use
1.0.32instead!)
Changed
- Addressed bug in PubSub pinging system that could cause cause a crash post-disconnect.
Removed
- Dependence on Monolithic Headers; compile times are now down
5000%!
v1.0.30
This update may require changes on your end to ensure the required OAuth scopes are included!
Added
- Added
moderator:manage:banned_users,moderator:manage:chat_settingsandmoderator:manage:chat_messagesscopes to Local Login Defaults for chat moderation updates (WARNING: this change may not be retroactive)
Changed
- Updated chat moderation nodes to mitigate effects of Twitch IRC command deprecation.
v1.0.29
This update may require changes on your end to ensure the required OAuth scopes are included!
Added
- Support for Unreal Engine 5.2
- Point Redemption OAuth Scope to Local Login Defaults (WARNING: this change may not be retroactive)
Changed
- Fixed bug where point redemptions that included a chat message lead to a duplicate event call.
- Fixed bug where the username and display name were not available on point redemption events.
- Fixed edge case bug in PubSub shutdown system.
v1.0.28
Changed
- More bugfixes. Now
error% more crash free!
v1.0.27d
Added
- Support for detecting disconnection events in the IRC chat (not the PubSub system). See the OnDisconnect exec pin of the Connect to Twitch node.
Changed
- Fixed various options for potential crashes, especially during an (unexpected) disconnection event.
v1.0.26
Changed
- Fixes bug where PubSub connection (used for points events) could time out after 5-10 minutes
- Fixes bug where a mystery subscription gift was not marked as
bWasGift=true
v1.0.25
Added
- Experimental support for points events that do not require text input
Changed
- Various bugfixes for subscription detection systems
- Various in-game point reward management bugfixes
- Fixed local login
user_idnot set bug
v1.0.24
Changed
- Resolved emoticon downloading issue
v1.0.23
Added
- Local login stop all listeners option to settings (allows you to force-kill all listeners; might interfere with other functionality, but helps avoid stray processes taking up the port)
- Subscription channel gifting
v1.0.22
Added
- Support for nativization (for UE4 versions)
- Support for Unreal Engine 5.0
- Support for V2 emoticon URLs
Changed
- Various minor bugfixes
Removed
- Win32 support
v1.0.21b
Changed
- Resolved packaging bug affecting a small number of users (on Unreal Engine 4.26)
v1.0.21
Added
- User ID property to the logged in user's profile (requires the latest version of the backend)
- EXPERIMENTAL channel points management nodes (requires the latest version of the backend)
- EXPERIMENTAL channel points reward management nodes (requires the latest version of the backend)
Changed
- Addressed bug where using the phrase "ping" in any part of a message resulted in it getting lost
- Made scopes requested by local login configurable
- Minor code improvements
v1.0.20
This update may require changes on your end!
Introduction
This update includes a few new features (such as GetTwitchNumFollowers and improved emote parsing) as well as changes to make TwiWorks more future proof.
When TwiWorks was developed, Twitch offered the Kraken API: a way to get information about all kinds of Twitch objects. Unfortunately, this API has been depricated and is scheduled for removal in Q1 2022 (about half a year away as of writing). This means that to continue interacting with Twitch beyond this date, an update to the new Helix API is required. To give you ample time to ship an update of your game, this version of TwiWorks updated the old API calls to the new system.
While we highly recommend using this version, there are a few things that we were required to change and/or remove to be compatible with the information that the Helix API provides. Please take a thorough look at the entire changelist (especially the Removed) section, and keep the following in mind:
- All Twitch Helix API calls now require authentication, which means that you'll have to pass the
TwitchChatConnectionvariable in to pretty much every TwiWork API call. There is a temporary workaround in place to avoid breaking your existing code completely, but this will be removed in the not-so-distant future, so please update your code. - Various properties are no longer provided. The majority of these were considered a low priority and not used by the majority of TwiWorks users, but if any of these removals are completely incompatible with the way you are using TwiWorks, then please reach out.
- To continue getting information about a user's subscriptions, please update to the latest version of the backend and/or ensure you are including
user:read:subscriptionsin your login scopes.
Added
- Chat message emote parsing for chat messages (now includes emote properties on all messages with their position in the text and ID/Code)
- Follower count retrieval (
GetTwitchNumFollowers)
Changed
- TMI connection from IRC raw sockets to more robust & secure WebSockets.
- Remaining Kraken API calls (
GetTwitchUser,GetIsSubscribed, andGetTwitchEmoteSet) to Helix API equivalent - Backwards compatibility for when Chat is not provided to aforementioned nodes
Removed
Bioattribute of user profile (appears depricated, but could be replaced by thedescription- please reach out of you would need access to this)LastUpdatedTimeattribute of user profileNumFollowers,CreationDate,ChannelActiveGameandChannelStatusfrom user profile follows array (no longer provided under Helix)
v1.0.19b
Changed
- Hotfix for messages possibly not being parsed properly, leading to connection timeouts
v1.0.19
Added
- Support for anonymous, mystery and reward subscriptions
- Support for subscription upgrades
- Additional (DNS lookup) safeguards for connection procedure
Changed
- Improved connection failure handling for Blueprints