Upgrade Notes:
-
String Tables: As of 1.6.2 any script that is imported or re-imported will create a separate String Table in the same location. Previously (at least post-UE5.3) String Tables were not visible because they were included in the same package as the script, but for compatibility we've now separated them into their own file. See the FAQ.
-
Packaging: Because a couple of the default Blueprint links are now soft references, packaging can miss them. If your packaged build isn't starting dialogues with an error about the UI link class not being available in the log, then you need to update your packaging settings.
-
Default Camera Shake: If you are using the default Camera Shake that comes with SUDS Pro, you now need to explicitly define it in Project Settings > Plugins > Suds Pro, as shown in the Camera Shake docs. Previously this was defaulted in code if you didn't set it up, but while convenient, this could potentially cause issues with plugin load ordering, so now needs to be set in your own config.
Version History
1.7.0
-
New Features:
- User metadata can now be added to speaker lines and choices, making it easier to do more advanced things like showing why a choice isn't avaiable because of RPG stats etc
-
Bug Fixes:
- Don't crash when using the editor script tester if you have closed the output window
- Safety: don't try to play an animation on characters who don't have an anim instance
- Fix potential GC crashes in shipping mode due to weak pointers going out of scope
1.6.5
- UE 5.7 support
- Fix crashes when testing dialogue in the asset editor if you had closed the Dialogue Output tab
- Throw error in non-editor builds if global var set didn't work because of a missing world context
1.6.4
- FName variables now display in dialogue text if forced to rather than being blank. It's still advisable not to display FNames directly, you should prefer FText variables instead, but this behaviour is less confusing.
- All remaining raw pointers replaced with TObjectPtr
- Fixed crash when re-opening the editor if the Dialogue Output tab was closed in the SUDS asset editor
- Fixed crash when importing an empty .sud script
- Fix bug when starting another dialogue in the delegate for USudsProSubsystem::DialogueFinished
- Mac officially added to the platform allow list, since users have verified it works so long as allowed to
1.6.3
- UE 5.6 Support
- Fix bug with separate string tables not being marked as dirty on re-import, which can cause modified tables to not be saved
1.6.2
- Fixed a bug with global variables set from Blueprints not being visible to dialogues when using the new C++ dialogue runner (globals between dialogues would still have worked)
- Added
PreStartDialoguefunction toASudsProRunnerwhich you can subclass to get access to the dialogue instance just before it is started, in case you want to do some last minute changes like variable setup - DefaultUiClass in Settings is now a soft reference. Again this is to try to avoid loading order issues if a user's custom UI class pulls in other plugins.
- String Tables are now separate packages by default The setting "Create String Tables As Separate Packages" under Project Settings > Plugins > SUDS Editor is now ON by default. Whenever you import a script with this setting enabled, you will get a separate YourScriptStrings asset created as well now. This is to address some edge cases which may not affect many people right now, but UE seems to not fully* support embedding String Tables in the same package as the script in some cases, so changed the default for safety. See the FAQ for more details.
1.6.1
- Fixed SudsProMath.h location; should have been in the Public folder not Private
1.6.0
-
New Features:
- You can now play character animations on specific skeletal mesh components, which is convenient for things like facial animation if your character has a separate facial skeleton.
- You can now choose to receive your own custom events in a queued fashion, respecting "wait" events in the script.
While SUDS Pro events respect "wait" delays, your custom events arrive at the regular
ISudsParticipantinterface immediately they're in context, ignoring "wait" synchronisation. Now, you have the option to add a new interface to your participants calledISudsProQueuedEventHandler, whose dialogue event function is only called once "wait" events before it have been resolved. Previously the only way to do this was implement your custom events as a SUDS Pro Extension, so this is now more convenient.
-
Bug Fixes
- Widget link in settings is now a soft reference to avoid loading it too early, which could cause some loading ordering issues depending on what else you referenced in your custom Widget class.
1.5.3
- Bug Fixes
- Fix multiple sibling ifs within a parent if block when only changing the choices available
- Fix an editor load race condition when using a Widget which derives from a CommonUI class which can cause a "Failed to load Outer" error
1.5.2
-
New Features:
- Add Sequence instance transforms
- This lets you play sequences with a different transform, either based on an actor, or a manual transform.
- Add
ISudsProAnimationProviderso that any participant can provide character animations if the character class itself does not. - Add
OnSpeakerLineShownevent to the SUDS Pro Subsystem in case another class other than UI wishes to be notified after a speaker line has been shown.
- Add Sequence instance transforms
-
Bug fixes
- Fixed character animation "popping" caused by blend in/out times being truncated to integers
- Fix bug where multiple if/else blocks next to each other at the same level of the script could have their else's merged
- Make the "SudsPro" property category appear at the top of SudsProRunner's details pane
- Custom event names can now include "." characters
1.5.1
IMPORTANT
We recently discovered that the way the BP_SudsProDialogueRunner class held references to script assets had problems with the garbage collector in packaged games, when you unloaded and reloaded a level which included an instance of this class.
To fix this but to avoid breaking people's existing code, this runner class is now deprecated and replaced with "Suds Pro Runner" (
ASudsProRunnerin C++). You should be able to "Reparent" blueprint subclasses or "replace" straight instances of BP_SudsProDialogueRunner with SudsProRunner because the properties are compatible. I highly recommend you do this after updating to this version to avoid level reload problems in future.
- New C++ class, "Suds Pro Runner" introduced to replace BP_SudsProDialogueRunner. Reasons:
- It can async load / unload scripts
- Fixes null references to scripts when the same level is loaded for the second time in packaged games (this was a garbage collection / asset manager problem with previous script references)
- A new class was required to avoid breaking people's existing uses of BP_SudsProDialogueRunner, but everyone should migrate to this new class. Reparenting should retain all settings.
- The new class is C++, making it possible to make your own C++ subclasses of it now.
1.5.0
- Add Project Setting to save string tables as separate packages, so you see them in the content browser in UE 5.3+
- Add modulo (
%) operator support in expressions - Report an import error if an
[if]or[random]block is unterminated by the end of the script - Fix builds on Linux
1.4.0
- New Feature: Random lines
- Allow Blueprint use of FSudsProQueuedEvent so BP-only extensions are possible
- Fix crash when using CharacterNotify with no arguments other than the event name
1.3.2
- Support for UE 5.4.2 (you MUST update to .2, String Tables are broken in UE 5.4.0 & 5.4.1)
- Fix text ID number generation when explicit IDs reduce just before new line without an ID
- Fixes for 5.4 header ordering changes
1.3.1
- Fix a crash when importing a blank choice line
- Fix import errors not being visible in the Message Log
- Add GetVoicedLineSound to retrieve sound file for a voice line rather than playing it
- UE 5.4 Preview compatibility (NOTE: 5.4 Final introduced a breaking change so is not supported yet)
1.3.0
- Added
WaitNotifyoption which pauses the dialogue untilNotifyDialogueis called (with an optional notification name) - Added
FindDialogueCharacterutility function
v1.2.0
- You can now include escaped double-quotes in text literals e.g.
"Some text with \"quotes\" in it" - Fixed speaker list not being cleared between script imports, meaning scripts imported later would think speakers from previously imported scripts were also mentioned. Mostly an issue for VO file generation.
- Fixed editor import hang when a
gosuborreturnline immediately followed a choice
v1.1.0
- Choices can now generate speaker lines, if you want your characters to speak choices by default. Documentation
- Global variables (
global.VarName) are now supported to share state between dialogues more easily. Documentation - Fixed re-importing scripts after writing back string keys when new lines were inserted without keys
- Fixed flow charts in documentation
v1.0.4
- Fix infinite loop in import when event line is the last line, and also nested in a choice
v1.0.3.1
- Added support for UE 5.3
v1.0.3
- Fixed "Exit Dialogue Smooth Camera Duration" setting not being respected
- Added
SpawnVoicedLine2Dfunction to dialogues - Added voiced line concurrency settings, defaulting to 1 concurrent voice
- This means advancing through dialogue quickly automatically cuts off previous voiced line
- Fix multiple
CharacterMoveevents after aFadeOutonly moving the first character, unless you used an explicitWaitFade.
v1.0.2
- Fix BP_SudsProDialogueRunner not loading in UE 5.1
v1.0.1
- Prevent crash when passing a null Participant to a dialogue as part of a set
- Gracefully handle unconnected Player Character pin on BP_SudsProDialogueRunner's Start Dialogue function
v1.0.0
Initial release