봄 크리에이터 세일을 시작합니다! 4월 18일 오후 10시 59분까지 엄선된 콘텐츠를 최대 70% 할인받으세요.

Simple Dialogue System

DevGrain - 코드 플러그인 - 2022/06/19

Dynamic dialogue system with graph node-based editor containing gameplay events that can be executed during speech

  • 지원 플랫폼
  • 지원 엔진 버전
    5.1 - 5.3
  • 다운로드 유형
    엔진 플러그인
    이 제품은 코드 플러그인과 함께 미리 빌드한 바이너리와 언리얼 엔진에 통합되는 모든 소스 코드를 포함하고 있으며 원하시는 엔진 버전에 설치하여 프로젝트에 따라 활성화할 수 있습니다.

Official Website & Documentation | Official Discord (Support & News) | Official Showcase(Very Old, New version coming soon)


SimpleDialogueSystem is a plugin that handles speech bubbles or text widgets that interact with the gameplay (can manipulate the gameplay or be manipulated by the gameplay) with the Event & Condition & Command System that can be executed during speech.


This plugin is deeply inspired by the dialogue system of the Animal Crossing series and Undertale, where they seem to trigger some events while playing dialogue and on some specific location of the dialogue to play an animation, spawn particles, and sounds to express the emotion of the character or express very dynamic production of the scene. It looked very fascinating. So, I wanted to add the features into my game and eventually ended up making this framework plugin that makes everything ultra easy and flexible, including the interactions with the gameplay, and scripting itself.





Contains various built-in game-ready features


Though the goal of the plugin was creating a whole dialogue framework that can be customized and works with any type of game, we also wanted to provide some solid, and good qualified, various built-in features that can be used right after you purchased the plugin to boost your development.


The default speech bubble widget blueprint with various built-in animations and a transform-lagging system that lets the transforming change of the dialogue seem much more interesting and seamless and render location mode for the 3 modes on the rendering style (Fixed on the screen location, fixed on the world location, follow the characters who are speaking) is contained in the plugin.


The plugin supports a simple and cute speech synthesis component that can synthesize Animal Crossing-styled dialogue, and it works with all the languages listed in the ICU Library.


There is a subsystem called SimpleDialogueSubsystem where you can trigger all the actions you need to control dialogues (Finding dialogue, removing dialogue, starting a dialogue, etc.),


The plugin also has an official feature pack that contains various features including a portrait system that you can attach on the nodes to display the portrait of the characters, a subtitle widget asset that shows all the dialogues that are being presented in the world in a single widget, a mini-game system that can be attached on the dialogue manager. It's free. check out and use the features on your projects. (WIP. not yet available.)





Designed to be supported by fully functional unique editors


One of the main goals of the plugin was to support intuitive and easy editing for the assets and script. So we also focused on the editing aspect of the assets when we added new features to the plugin and added several unique and powerful editors for each element of the plugin.


The main editor of the dialogue manager asset took the graph-based node editing system like the BP editor of the engine to support intuitive editing. You can make and connect each dialogue node that contains the data for the script and participants, and skip operations to express your own, unique dialogues.


The text on the nodes and system (which is named Context Text) has its unique WYSIWYG editor that allows you to see the final visual of the text in a second, and manipulate it without typing tedious markup styling, and it also provides the special property controls and built-in the command edit feature to provide a perfect way to control the action for the texts in the system.





Designed to support interaction between the dialogue and the gameplay


This plugin is developed to provide an ability to express the dynamic production related to the dialogue. For example, if you want your character to play a specific animation on some specific location in your dialogue, you can make your dialogue event that plays an animation in BP logic, bind it on the dialogue node, and bind it with a dialogue inline command that triggers the event on the specific location of your script where you want to make the character plays that animation.

If you don't want to play this dialogue, then you can use a dialogue condition to decide whether to play it or not. If you want to trigger some logic when the node begins playing or ends playing, you can use a dialogue fragment in this case.


To break it down to each main element for the systems: (More details are well explained in the official Instruction.)


The dialogue node is the basic unit of the dialogue and has the basic information about the text for the dialogue, participants of the dialogue, and skip action for the dialogue. We provide some basic dialogue node types:

  • Monologue, for the basic linear conversation in your dialogue between multiple characters.
  • Select, the branch expression on your dialogue with a question and answers.
  • Random, for the randomization of your dialogue flows.
  • Execute, the command and event executions without playing any texts.

You can make your dialogue node type by overriding the basic class for the node and attaching your logic in BP or C++ code.


The Dialogue Inline Command is the asset you can write BP logics and you can attach on the dialogue node classes itself, and the dialogue text and trigger it. For example, if you bind a command on the text that triggers a dialogue event and play it, then when the text meets the location during the update, it will trigger that event. The main difference from the dialogue event is that the command is stored in the text of the dialogue node in text form.


The Dialogue Event is the asset type that you can write your more advanced logic in BP that can be triggered in the text of your dialogue. It exists as a solid object, not like the inline command does. It cannot be triggered itself; it must be triggered via some additional logic via custom BP logic, or Dialogue Inline Command that is explained above.


The Dialogue condition is the asset type where you can put some logic in BP that decides whether to play the node or not, and you can attach to the nodes to express more dynamic dialogue. If a node fails the condition check, the system will test the other nodes that are connected to the same branch. You can use it to express such production like denying players because of some reasons and displaying the reason for it.


The Dialogue Fragment is the asset type you can attach on the nodes and use it to manipulate the action of the widget on the begin play event of the node, or end play event of the node. The main difference from the event is, that you don't have to bind something else (e.g., dialogue inline command) to trigger it.





Powerful support from the plugin developer and its community


We also support our customers in various ways including technical support and bug fixes in our official discord channel.

We love to see our customers' projects grow in a good direction and provide guidance and support to be like that.

There are already several studios that we are working with about the plugin application on their products, So feel free to ask for help from us on the official discord.

기술적 세부사항

Code Modules:

  • SimpleDialogueSystem (Runtime)
  • SimpleDialogueSystemEditor (Editor) - Only binary build is provided.

Network Replicated: No

Supported Development Platforms: Windows

Supported Target Build Platforms: Windows, Android ( The product Is not dependent on any platform so you can use it on any platform if you want. )

Important/Additional Notes: This plugin doesn't work on the multiplayer game yet.


License:

'Puffy Font' by Stefie Justprince

Except for the font above, all other files in the plugin are created by me, and you can freely change them if you want.