Testing and Implementing SUDS, Reworking Inventory to support all Actors, attached Actors and GrippedComponents

This commit is contained in:
Simeon "Waldo" Wallrath 2025-12-05 16:49:53 +01:00
parent 5df344acff
commit c2a46b8784
277 changed files with 880 additions and 24 deletions

View file

@ -0,0 +1,62 @@
===
[set NumberOfTimesAsked 0]
===
NPC: Hello, welcome to the <Em>SUDS Example Project!</> @0001@
NPC: I'm acting as a kind of <Em>FAQ</>, just in <Float>interactive form</>. @0002@
:rootwithintro
NPC: Feel free to explore this dialogue and take a look at the <Em>source</>, both here in UE and the source <Em>.sud file</>. @0003@
:rootchoices
* What is dialogue source? @0004@
NPC: Dialogues are written as text files with the extension <Em>.sud</>. @0007@
NPC: You can find this one in <Em>Content/Dialogue/Dlg_FAQExample.sud</>. @0008@
:sudchoices
* How should I open the .sud file? @0009@
[event MyAwesomeEvent 23, `Boop`, false]
NPC: Ideally, open it in Visual Studio Code with the SUDS Extension installed. @000c@
NPC: The SUDS Extension adds syntax highlighting which makes it easier to read. @000d@
[goto sudchoices]
* How do .sud files work in UE? @000a@
NPC: .sud files are imported into UE as <Em>SUD Script Assets</>. @000e@
NPC: You can then create runtime dialogue based on these assets. @000f@
NPC: Take a look at the <Em>Level Blueprint</> for an example of how to do this. @0010@
[goto sudchoices]
* Ask about something else @000b@
NPC: Sure, what else can I help you with? @0011@
[goto rootchoices]
* Ask about running dialogues @0005@
NPC: What would you like to know about running dialogues? @0012@
:dialoguechoices
* How do you start a dialogue? @0013@
NPC: You create a dialogue instance from a script asset, optionally with <Em>participants</> attached. @0016@
* What's a participant? @0017@
NPC: Participants are actors or other objects which are involved closely in the dialogue. @001a@
NPC: They often own the dialogue, or provide variables to it, or respond to events that it raises. @001b@
* Send an event right now! @001c@
[event TestEvent 99]
NPC: Done! See that message at the top? That's because the NPC participant received that event and printed it to the console. @001e@
NPC: Events are sent to all participants, and also to anyone else who subscribes to them. @001f@
NPC: You can send any number of arguments back to your code with the event. @0020@
[goto dialoguechoices]
* OK I see @001d@
NPC: Anything else? @0021@
[goto dialoguechoices]
* Where is the code to do this in this example? @0018@
NPC: Because this is a simple example, it's kicked off in the <Float>Level Blueprint</>. @0022@
NPC: But we pass it to the <Em>Player Controller</> to actually run it; it makes it easier to handle input events. @0023@
[goto dialoguechoices]
* Back @0019@
[goto rootwithintro]
* How does the dialogue know what the NPC is called? @0014@
NPC: This NPC is actually a Blueprint which implements the <Em>SUDSParticipant</> interface. @0024@
NPC: One of the things a participant in a dialogue can do is set variables, in response to events. @0025@
NPC: This NPC sets its speaker name as a variable when the dialogue starts, which is why you know I'm called {SpeakerName.NPC} @0026@
[goto dialoguechoices]
* Back @0015@
[goto rootwithintro]
* Exit Dialogue @0006@
[goto goodbye]
:goodbye
NPC: OK bye! @0027@