ExpressivePrompts - Customizable ProximityPrompt UI (with animation, sound, and more!)

ExpressivePrompts

RobloxStudioBeta_w5qdWR0bo8

Expressive prompts is a spiritual successor and fork of CustomProximityPrompt. It retains everything from the previous library, but with many new changes, including:

  • Swapping from Fusion 0.2 to Seam, which has faster performance, scopability, and more
  • A configuration dictionary, allowing you to change basic properties for animation and appearance easily
  • A myriad of bug fixes and stability improvements
  • Portability, making it a module instead of a script
  • And more!

You can easily change animation and visual configurations to create your own prompts! Take a look at this:

RobloxStudioBeta_Bqy52cREA6 RobloxStudioBeta_InEm3WUaqY

As of right now it has a similar structure behind-the-scenes as the previous script, but this module will be the one that gets updates, including updates to configuration, backend, and more.

Why use this?

By default, this proximity prompt UI is immediately more expressive than the one Roblox provides! The interface is designed with Seam, a reactive state and animation library, allowing every part of the UI to be hooked up to what is happening. You can configure how it looks and animates using the configuration built into the module!

The default prompt UI with this looks silly, but through configuration you can use it to match your game’s style.

Installation

You can install this from Wally (for Rojo-like workflow) or download from releases (for rbxm file).

This module is a part of Praxis, a larger library of utilities and more. Check Praxis out here.

How to use

It works right out of the box. Simply require this module and call .Init()! You can also change Config values (these are Seam values, so make sure to change .Value).

local ExpressivePrompts = require(YOUR_PATH_HERE)
ExpressivePrompts.Init()

Issues?

Please let me know if there any issues, either on GitHub issues or in the replies here. You can also contribute features, fixes, and more by creating a pull request!

That’s all, enjoy your expressive prompts!

102 Likes

Why don’t you simply publish the module as a Roblox model so we can save it to our inventory and import from it?

5 Likes

My typical workflow is to use Wally for packages, not the toolbox, so it didn’t really cross my mind. I’ll post it there eventually, but for now you can just download the rbxm file.

4 Likes

People who used the old CustomProximityPrompt system will know how good this system is but as a clueless viewer people could be confused. Suggest adding a little bit more documentation and detail to the forum post if you have the time.

Thank you for this resource!

12 Likes

I’ve been using the old version in my framework for awhile - is there any crucial changes that would make it a necessity to migrate? Or am I still fine using CustomProximityPrompt

3 Likes

It’s nice, but it would’ve been awesome if it worked more like Proximity Prompt Customizer. I appreciate your efforts, but just being able to put a UI inside the script which you can easily edit makes lives so much easier and encourages widespread adoption rather than just games with experienced programmers using it since everyone else doesn’t have a clue how it works

3 Likes

Will work on this soon then. What do you feel is missing?

If you’re just using the default, then swapping mostly just provides bug fixes, stability, and performance improvements, especially at scale. It’s programmed with Seam v0.5 instead of Fusion v0.2, so it does a better job managing that sort of stuff.

I want to preface by saying that this module is intended to be more customizable as it updates. However, I won’t be adding a pre-defined instance to customize, especially since that would screw with things like package management or Rojo syncing.

The declarative design allows instances to be explicitly tied to reactive states.

2 Likes

Looks nice, thanks for the OS.

Is there a way of having a custom background IMAGE, not just a solid color (black , blue) ?

And how about an editable .rbxl or open edit testing places… ( sometime I think I am a broken record asking for this.. but ya… makes it simple to check out and play with.. )

3 Likes

Hype up the work, summarize the most attractive feautures and keep pushing this page until someone inevitably leaves a hate comment

Pretty good choice to move to seam, using it myself now and i’m no UI designer but it is pretty intuitive.

I understand the difficulty but it isn’t that hard, just requires you to open up a module and fiddle with the settings. I will however say that mutability for settings at runtime isn’t the greatest so maybe i’ll look into that and try to give you a modified version of this and other beginners.

4 Likes

I can definitely backlog that, thanks for the idea

Maybe? I can probably just build it with Rojo.

3 Likes

Hello, these proximities work very. Only issue I’m having is that for some reason when I emulate on a mobile device or on a virtual controller it doesn’t show the Input images, it is completely blank. Except for keyboard, they seem to be working fine.

Nevermind, I found a fix. I went into the Touch and Gamepad module and set the Image transparency to 0, I don’t know why it wasn’t at 0 beforehand, or maybe I did something wrong and it’s supposed to be 1. Either way, this completely fixed my issue, great module.

1 Like

Great resource, but I found a tiny bug
When you’re holding on a prompt and it get destroyed mid hold the sound of holding keeps playing.

holy peak
can you guarantee it will have as much support as the normal one (my 8k tv vs 9 yr old ipad vs vr)

Will fix this, thanks! Keep an eye for a patch soon.

This is kind of a weird question, because of course I won’t be able to give as much support as a multi-billion dollar company with thousands of employees. That being said, I think this will receive enough support to not make it a bad choice.

1 Like

Hi,

From this doc at the top

‘local ExpressivePrompts = require(YOUR_PATH_HERE)
ExpressivePrompts.Init()’

does that mean it only works on prompts that are pre set up and would not work on prompt that are created during run time? Like if you generate chest drops during the game, and want it to have a prompt, but it was cloned during the game, and did not exist at run time.

It works with every proximity prompt, regardless of when it’s created.

1 Like

v1.1.0

Added the following configuration values:

Config.PromptHeight number -- The offset height for the prompt
Config.PromptWidth number -- The offset width for the prompt
Config.TextPaddingLeft number -- The offset padding left to the text
Config.ActionTextSize number -- The text size of the action text
Config.ObjectTextSize number -- The text size of the object text
Config.ActionTextFont Enum.Font -- The text font of the action text
Config.ObjectTextFont Enum.Font -- The text font of the object text
Config.ActionTextYOffset number -- The Y offset separating the text labels
Config.MiddlePadding number -- The middle padding offset between elements
Config.AppearSoundId string -- The sound id for the appear sound
Config.ClickSoundId string -- The sound id for the click sound
Config.HoldSoundId string -- The sound id for the hold sound
Config.TriggerSoundId string -- The sound id for the hold trigger sound
Config.SoundVolume number -- The volume of the prompt sounds

The code was also improved and comments have been added for improved readability.

1 Like

v1.1.1

This update just adds rich text support! Make sure to download this version if you want this feature.

1 Like