Blog Post #6


More Than Halfway Now!

This last week of Milestone 3 was full of thrills, disappointment, countless Blueprint nodes, and perhaps a few cries of “why?!” to the sky.

Despite all that, we made great progress (even if the M3 goal was not yet met) and it has been an exciting ride.


Milestone 3 Resuming Point

At the end of Blog Post #5 I was in high spirits.

HTTP Status code was 200!

JSON clutter was removed!

My BP looked clean and organized with its shiny new comment boxes.

All I needed to do next was build a Dialogue UI Widget with Interactive Player Input, add Stability Guards, and Seed the Apple-Seller’s Personality.


So What Did I Do?

Dialogue Widget:
Added a full player and NPC chat interface with an input box, send button, reply area, and dynamic status text.
Implemented helper functions to manage input, status updates, and UI locking while the model “thinks.”
Blueprint Integration:
Duplicated the stable Milestone 2 smoke-test Blueprint to preserve a fallback copy, then integrated the new widget.
On startup, the widget is created, added to the viewport, and bound so that pressing Enter or Send dispatches player input to the main logic chain.
Payload Construction & Persona Seeding:
Built automated payload assembly for the model and conversation history.
Ensured that a system message is automatically added at the start of each chat seeding the NPC’s personality (“Jenny Applebaum, the apple seller”) to shape tone and context.
Chat Memory:
Introduced short-term conversational memory so the NPC can reference recent exchanges, allowing interactions to feel more continuous and responsive.
UI Feedback & Locking:
Added a visible “…thinking…” status and temporary input lock while waiting for responses to simulate conversational flow.
Error Handling & Fallbacks:
Implemented guards for empty input and failure cases so the prototype never crashes or hangs on invalid responses.
Blueprint Refinement:
Removed legacy test nodes and redundant logic from previous milestones, simplifying the request path into a single, readable system.
Reorganized the Blueprint layout for clarity and easier debugging.

Did It Work?!

Short answer…almost!

As you can see in the video above, Jenny Applebaum appears to be stuck on “…thinking…”.

What is Working (The Positives!)

The system now builds, runs, and (I think) sends properly formatted requests to the local model.

The UI locks, clears input, and displays the “…thinking…” status exactly as designed.

However, the NPC’s actual reply still isn’t showing in the game yet.

I am not sure if the message is being processed behind the scenes or if the final text simply isn’t returning to the widget.

My next step is to verify the full response chain and restore the missing validation check that confirms when a reply successfully arrives.

Debugging & Remaining Challenges

At this point, I am pretty sure the structure is solid.

The Blueprint successfully builds the request, updates the UI, and triggers the thinking state as intended.

The missing piece is simply verifying that the response is completing its full round trip back to Unreal.

My best guess on how to proceed is that the HTTP validation print I (accidentally) removed during the UI rewiring was quietly doing more work than expected. It at least was letting me know that the request was going through successfully.

Without it, I can’t confirm whether the request is still returning successfully or stopping somewhere along the chain.


Looking Ahead!

Milestone 4 will have to kick off finalizing the end goal of Milestone 3 before I am able to continue on.

My Next Steps

Reintroduce a simple response check
Add Print String nodes along the wiring to confirm the path is firing
Double check all my work (look for typos, forgotten wiring points)
Trace the message path through the “response → object → message → content → display” sequence
Make sure the NPC’s text is actually reaching the widget.
Once that’s confirmed, the entire dialogue system loop will finally be complete.

Until Next time,

~Lauren

P.S.

Gen AI (Gen-Ay) = Jenny

Applebaum = Apple tree


Leave a Comment

Your email address will not be published. Required fields are marked *