As developers, if we end up making a game that utilizes a proximity-based, single-action command system we have to remake the entire interaction system in lua.
I am proposing that we introduce a solution that handles this work for us.
EDIT: Previously I indicated that this needs to be in engine. While I’m purposefully trying to avoid the complications of api design, we should also not restrict this solution to the engine either. I’ll leave the following paragraph in the spoiler for posterity
Redacted a bit
Why is would this be important to bring into the engine?
Currently we have an extendable user input interface through ContextActionService, however CAS on its own does not work “out of the box” for proximity based use cases.
Having this system standardized from the engine will assist developers in writing gameplay systems that work out of the box for all of Roblox’s supported platforms and formfactors.
This has benefits for both the accessibility of Roblox games and alleviates the burden of reimplementing this system on developers so they can focus on their gameplay systems instead.
To developers: How you can support this feature request:
Please reply with any other games you have played or created that have implemented a intractable system like this in lua. Additionally please respond with any other user stories that could be included in the list below.
Some user stories
As a developer, I want to be able to quickly and easily mark intractable points of interest in my worlds that are attached to Instances with a Position or World CFrame property.
As a developer, I want to be able to bind all intractable points of interest in my worlds to a single set of input types.
As a developer, I want to be able to rebind this set of input types to a new set at any point while running the program.
As a developer, I want to have additional ContextActionService bound actions optionally take priority over a nearby intractable point of interest.
As a developer, when I have multiple points of interest in a small area, I want to be able to prioritize which point of interest will capture by interaction input.
As a developer, I want to be able to use a default Robloxian-styled input action prompt cue that appears when players are near an intractable point of interest so I do not always need to design my own.
As a developer, when players are nearby a point of interest, I want to be able to easily design my own input action prompt cue.
As a developer, I want to be able to minimize and/or hide my input action prompt cue when players are not near a point of interest.
As a developer I want to be able to set the radius threshold that a player’s avatar needs to be near in order to interact with the point of interest.
As a developer, when players enter the radius of a point of interest, I want to be able to run additional custom code.
As a developer, when players leave the radius of a point of interest, I want to be able to run additional custom code.
As a developer, I want to be able to have all points of interests use the Player’s avatar by default to check if a Player is within the radius threshold of the point of interest.
As a developer, I want to be able to override the object all points of interests use to check if a Player is within the radius threshold of a point of interest.
As a developer, I want to be able to easily disable or enable individual points of interests through code.
As a developer, I want to be able to easily disable or enable the ability to interact with enabled points of interests through code.
As a developer, I’d like to be able to listen for interactions from either client code or server code, similar to ClickDetectors.
As a developer, I’d want to be able to opt-in to allow points of interest to be Activated for mobile and PC users, similarly to how ClickDetectors work. I want this functionality to be in a single object so I can bind to a single Instance. MeepCity and AdoptMe currently have intractable points of interest that respond to keybinds OR touch OR mouse input.
As a developer, I want my code to have the same experience for mobile platforms, console platforms, and PC platforms when setting up an intractable point of interest.
Some games that currently implement this (links included)
Jailbreak
cc @asimo3089 and @badcc
Egg Hunt 2018
cc @PeteyK473 and @buildthomas
Finder’s Keeper’s
cc @Imaginaerum
Firefly Quarry
cc @Zomebody
Mount of the Gods
cc @Wheatlies
Whatever Floats Your Boat
cc @Quenty
Adopt Me
cc @NewFissy