top of page
Search
Writer's pictureConor Currie

Launch Title - Dialogue System

The biggest hurdle I faced was the dialogue system.


First of all, I began small. I created a simple dialogue system that activated through a simple "interact" through a blueprint interface. This would check if the dialogue system was already on the screen, and if not, to add it, else to make it disappear.

It would then print the name and dialogue text through the binding to the Dialogue Widget through an editable variable.

I also had a text bubble plane appear over the interactable item through a trigger box.

This was functional, but only worked for a single line of text, meaning it could only be used for events that would have said amount of text.

From here I made events for scenes through a spreadsheet. The narrative designer then provided me with a copy of the script, which I put into data table, having a column for each variable that needed to be declared.


I then converted this into a Svg and imported it into Unreal.


I also corresponded with the animation student in charge of portraits to send to me in order to have them appear in gameplay.

Upon the event beginning, it gets all names and dialogue from the event graph.


When the player overlaps in the box, it plays a function that references the data table.

This function checks if the dialogue box has been created yet, and if not, creates it.

From here, there are then functions that fetch the sprite ID, the name and the dialogue, which changes dependent on the row line fetched. This sets a constantly-changing array for each line, which progresses every time it is interacted with.

It then checks if it's on the final line, and if so, ends the conversation, else brings another variable.

From here, it's then casted to and the return nodes are set as the variables within the widget.

I then had the text functional on a basic level, with each scene in the game under a specific ID through the event.

Repeating the same process for the names and sprite variables, I then set up an event tick to set the visibility of the sprite dependant on what ID was active, being set on hidden from default.




I then changed the code of the textbox so the player couldn't move while an event was occurring, which was done through a simple "Disable Input" for beginning and end.


I then designed textboxes based around the VHS style while keeping in-proportion with the base created in Unreal. One exists as a standard one for the protagonist, while the other one was spiky to indicate the protagonist's girlfriend speaking to them through a walkie-talkie.

I then had to modify the script into being split up between more lines to accommodate the new design, which was later checked and approved by a narrative designer.

From this, I then got the new UI functional.

After a workshop, I learned how to use GlueIt to put together animated images in Widgets. I then resized every portrait by 33%, split them into folders in external programs, and then put them into GlueIt, giving me this as a result.



I made this a material flipbook that references the number of rows and columns as a parameter. Then, from making this a User Interface material, I changed the brush of all portraits to their animated version.



Finally, to get the textboxes to work, instead of modifying the data-table to add binding, I saved time by having the dialogue code check if the displayed name was Tammy, so it would display the textbox for that if needed.



I added a shifting animation for Tammy's textbox to reflect the narrative in her shaky communication through the walkie-talkie. From here, the dialogue system was finally complete.


I then corresponded with our level designers as to where to put the trigger boxes for these scenes to happen in their levels. However, I was unable to get in contact with one of them, meaning their level went without it.

14 views0 comments

Recent Posts

See All

Comments


Post: Blog2_Post
bottom of page