I was frustrated at the lack of a full, flexible, dialogue system in UDK that was capable of handing dialogue trees like those present in classic RPGs. I wanted something that would come close to the system in classic RPGs like PS:T, incorporating skill/item checks and simple scripts - and I definitely didn't want to mess around with tangles of Kismet nodes and hardcoded strings whenever I wanted to write dialogue.
So here's a very simple demo of what I have so far (watch in HD to see the text!):
Advantages:
- Reuse dialogue on multiple characters (e.g. generic guard dialogue) without copy-pasting any code.
- Don't have to start up UDK to edit dialogue.
- No need to search through levels to find where you defined a Kismet sequence for a piece of dialogue. Just find it in the database and edit.
- Encapsulates features like skill/item checking and scripting, including linking to Kismet.
Current features:
- Custom DLL combining BlackHornet's SQLite code and code for setting up and accessing variables (e.g. player skills, global variables), and evaluating boolean conditions (e.g. ASkill > 5 && 1 == 1) at runtime.
- SQLite databases linking lines to character names that can be defined in UDK.
- Custom Kismet event that can be raised from a database script for more complex interactions.
- Simple scripts stubbed out (e.g. raising player stats, giving items) that can be defined per game.
- Conditional branching - e.g. define that node A links to node B if the player has a high enough skill, or node C if they don't.
- Changeable dialogue start nodes - want your character to say "Hello, my name is X" the first time you talk to them, but "Hi again" the next time? No problem.
- Integrate with any Scaleform UI.
Future features:
- Greater encapsulation and more code moved into DLL for faster operation
- Define preset custom camera angles and be able to switch cameras in script
- Stub functions to be used with the mood/character columns (for use in systems like visual novels - define what character image(s) to show)
- Custom Kismet actions to start dialogue, redefine/reset dialogue start nodes, etc
- Character 'memories' - define a list of variables and values per character (or globally), and be able to use them in conditional checks.
- Java program to more easily view (in tree format) and edit the dialogue.
The code needs a LOT of cleanup and improvement before it can potentially be released, and I don't know if there's even any interest (maybe everyone else would prefer to stick with Kismet - I just hate using it haha), but let me know what you think!



Reply With Quote


Bookmarks