dialoguemaker/conversation

DialogueServer

A DialogueServer object is used to contain information about your specific characters. Along with this, DialogueServer objects contain any Dialogue objects that are relevant to the character.

When you press "Edit Dialogue" while selecting a model or a base part, a module script named "DialogueServer" is automatically placed into it. The module script has the "DialogueMaker_DialogueServer" tag for easy identification for triggers and other types of scripts.

The DialogueServer class is called DialogueServer because the object is typically located on an NPC that serves dialogue to the player, or the DialogueClient. It's important to note that DialogueServer objects are typically used by client scripts instead of server scripts.

Static properties

defaultSettings

An object of default server settings that all DialogueServer objects default to. Any setting that isn't explicitly configured in the constructor is defined by the default settings.

The current default settings aim to best suit the average non-programmer. If you have any recommendations to these settings that may improve users workflow, feel free to file an issue.

clickDetector

KeyDefault typeDefault valueRationale
adorneenilnilThis property is for developers to manage a ClickDetector that they created, so there is no need for a default value.
instancenilnilThis property is for developers to manage a ClickDetector that they created, so there is no need for a default value.
shouldAutoCreatebooleanfalseProximity prompts are more visible and accessible for players.
shouldDisappearDuringConversationbooleantrueHiding the click detector trigger during a conversation improves accessibility by hiding the hand pointer.

general

KeyDefault typeDefault valueRationale
maxConversationDistancenilnilSetting this value by default may not be helpful for all games, as some games may want to have long-distance conversations.
namenilnilIt is not feasible to automatically determine what the developer may want to call their character. Using a model name or a part name may not be helpful, as it can include internal information in some names.
shouldFreezePlayerbooleantrueFreezing the player improves accessibility because they can only focus on one thing: the conversation.
themenilnilThis property is for developers to override the DialogueClient theme, so there is no need for a default value.

promptRegion

KeyDefault typeDefault valueRationale
basePartnilnilPrompt regions may wildly vary across games, so it is best to keep this empty by default.

proximityPrompt

KeyDefault typeDefault valueRationale
adorneenilnilIf shouldAutoCreate is enabled, then this is automatically decided based on the parent of the ModuleScript that was set by the constructor.
instancenilnilThis property is for developers to manage a ProximityPrompt that they created, so there is no need for a default value.
shouldAutoCreatebooleantrueCreating proximity prompts by default to trigger conversations helps Dialogue Maker out-of-the-box. A proximity prompt is generally the most accessible trigger across all devices when compared to other triggers.

speechBubble

KeyDefault typeDefault valueRationale
adorneenilnilIf shouldAutoCreate is enabled, then this is automatically decided based on the parent of the ModuleScript that was set by the constructor.
billboardGUInilnilThis property is for developers to manage a BillboardGui that they created, so there is no need for a default value.
buttonnilnilThis property is for developers to manage a GuiButton that they created, so there is no need for a default value.
shouldAutoCreatebooleanfalseProximity prompts are more visible and accessible for players across devices.

Constructors

new(dialogueServerSettings, module)

Creates and returns a new DialogueServer object.

Parameters

NameTypeDescription
dialogueServerSettingsOptionalDialogueServerSettingsSetting overrides for the DialogueServer. Anything that isn't set will be defined by the default settings.

Properties

settings

The DialogueServer's settings. They start out with the default settings, but they can be overwritten by the constructor or direct assignment.

Methods

Relevant types

ClickDetectorDialogueServerSettings

KeyTypeDescription
shouldAutoCreateboolean
shouldDisappearDuringConversationboolean
instanceClickDetector?
adorneeInstance?

DialogueServerSettings

KeyTypeDescription
clickDetectorClickDetectorDialogueServerSettingsSettings intended for the pre-installed trigger for click detectors.
generalGeneralDialogueServerSettingsGeneral settings for the character.
promptRegionPromptRegionDialogueServerSettings
proximityPromptProximityPromptDialogueServerSettings
speechBubbleSpeechBubbleDialogueServerSettingsSettings intended for the pre-installed trigger for speech bubbles.

GeneralDialogueServerSettings

KeyTypeDescription
namestring?
themeModuleScript?
shouldFreezePlayerboolean
maxConversationDistancenumber?

OptionalDialogueServerSettings

OptionalDialogueServerSettings is used to let developers configure some settings that they need, but offer the convenience of not configuring all settings.

As of May 19, 2025, Roblox's current typechecker lacks a way to implement recursive partial types, so we created a new type where every property in DialogueServerSettings is optional. Refer to DialogueServerSettings for property documentation.

PromptRegionDialogueServerSettings

KeyTypeDescription
basePartBasePart?

ProximityPromptDialogueServerSettings

KeyTypeDescription
shouldAutoCreateboolean
instanceProximityPrompt?

SpeechBubbleDialogueServerSettings

KeyTypeDescription
shouldAutoCreateboolean
billboardGUIBillboardGui?
buttonGuiButton?
adorneeInstance?

Documentation contributors: Christian Toney