As a Roblox developer, it is currently too hard/too much work to create fake players for testing various features in a game. You can test using a local server in studio, but it’d be much more useful to be able to do this in a live game at will.
I’m requesting an official way to do this using an API called BotService
BotService would let you create and control fake players
Running N players locally in studio with the entire client and server memory overhead of my games can be untenable, especially for large open world games with many players. So if we could run spoof clients on Roblox servers and control them remotely, this would solve this issue which would improve my development experience because I’d be able to test a lot more online without having to bother QA testers every iteration
Bots can be extremely valuable in creating multiplayer games. Games that require teams of 5 or more players can be difficult to get off the ground as you need many players at once to start a match - and no one wants to wait for players to join. And so I wouldn’t stop at just having bots just for private experiences when they can solve many design problems in live servers as well.
Almost all triple A multiplayer games use bots in some form to help players get started, be it Fortnite populating beginner lobbies with bots to give new players a chance, or Rocket League that let’s you practice against AI opponents.
There’s an argument that “well, you can make your own bot players, just write a wrapper”, but that heavily downplays how much work is required and how some game architectures simply aren’t able to fit in such features. Any existing RemoteEvents and RemoteFunctions that would communicate with players would need to be restructured to work with custom bot implementations that run on the server, so a dedicated ‘environment’ that lets us reuse such network gateways would be a heavy weight off the shoulders.
Great request, here are some features that I would like for these bots to have included so that they are just not lobotomized mannequins:
Dress the bots in various types of clothing and body shapes/sizes for balancing testing.
Allow bots to have different account configurations, such as region-specific policies, age-restricted settings, or parental controls, for compliance testing.
Test possible accessibility options by having bots emulate certain needs.
Bots can activate coordinated inputs (or randomly generated) in order to test gameplay mechanics.
Allow bots to interact with the game’s UI, perform fake purchases, or simulate trades to stress test the economy.
Taking control of a bot’s client to view the game from their perspective for debugging.
In the future we could even see bots evolving beyond development tools and serve as active real-like players, filling servers for low player count games or private experiences. This would be beneficial for experiences that require high active user participation (such as minigames or FPS shooters).
Are these games set to private? I don’t understand this terminology. I’d like to use this service both Studio and Live, no matter the game’s availability status.
I’ve been wishing before for that to exist. Because making NPCs replicate a player is difficult. (depends on what I want to make the NPC do, so not all NPCs are difficult to create)
It would makes me happy if I test bots that can chat in my Roblox Studio ,this can be better if you add bots in a tag game if the server lack of players
If those bots could have AI customized by the developer or using some built-in ones it would be great for CS type of games, it’d also be cool to let the developer enable BotService for normal clients for specific experiences so that users can play with built-in bots, so pvp players have something to practice on something
I’m honestly wondering what the intended scope of this feature would be. Everyone here appears to have different scopes on what they would want to achieve with this proposed feature. Some people seem to just want a local-server implementation using an RCC server instead of their own local device. Meanwhile, others appear to want to be able to create AI at-will to fill lobbies in their experience.
In my personal opinion, I do think that the latter is a bit infeasible for Roblox to pull off without an overhaul of a lot of services; they could probably create an environment to run localscripts in on the server alike a player’s client but the issues come in when you start using methods which need to be attributed to specific players.
For one, text filtering will be a massive issue; Roblox seemingly doesn’t have a concept of text being filtered without coming from a specific player so either these bots would need to error out for this or these limitations would need be dropped. This limitation has existed for a long time, too.
Roblox also wasn’t designed around the concept of bots, so it isn’t clear how they could be naturally implemented without still requiring massive changes to your code; for example, would they appear on the player list and if so, would that be massively misleading? It also opens up a whole Pandora’s box of possible bad practices. The bots could potentially have their own copy of the DataModel if you end up changing a lot of properties on the client, using up a lot of memory across multiple bots. Bots also presumably wouldn’t have profile information to look up, and if you set up your datastore logic incorrectly you could have bots on your leaderboards or unnecessarily store bot stats for future rounds or outright error if the same bot is in two servers. Again, these are all related to particular implementation methods by developers and are not inherent flaws with the system, but still worth noting regardless.
Even with all this, you’d still probably need to write your own code for moving the bots and adapting it to your experience since that isn’t something Roblox could reasonably do for all types of experiences afaik.
This all isn’t to say that the latter implementation is impossible. It almost certainly isn’t; but rather that a lot of other changes would need to be made to achieve the effect desired.
I think player instance could get a new method like “IsBot()” or something which text filtering ignore messages coming from bots, and since bots are created on the server (obv) there is no risk if an bad actor gets control of a bot
Bot AI will just default to basic wander aimlessly around or idle, but devs can implement new behaviors using some behavior tree editor or something, imagine if bot logic runs on the engine-side then it’d be even fast in terms of performance, only thing is that these bots would take up player slots but i think you can call Kick() on them when a real player joins and re-create them when a real player leaves to fill up server slots. Bots wouldn’t really render the game, similar to how the server in live sessions don’t really render anything, they would just see ‘data’
I mean, there is hardly a reason for an AI-controlled player to render the game, right?
When it comes to social experiences, there is little to use for bots anyway.
You really ask for a BotService ?
I dont understand the idea behind that - for what ?
A real player can test everything better as a bot.
If you want some NPC’s in your game they look like your friends etc - thats easy to make.
And btw Roblox have a much bigger problem atm with BOT’s they farm in the games !
I realy hope Roblox can solve the problem with tons of BotPlayers / BotFarms.
You can see it in all big games. They farming and selling items. this BotFarms make millions of $$$. @Roblox PEASE FIX IT
A lot of purpose for this has been mentioned in the entire thread. Go read it. As for your issue, it’s not something Roblox can just “fix”. Many other games with more focused developers also experience this, it’s just as big of a problem on any other platform. Please keep this on-topic, as it’s a needed feature we could get.
I support this idea, this sounds totally awesome!
Coding bots from scratch is a ridiculous amount of work.
I had my doubts about this feature at first, wondering if this is even realistic for Roblox.
But this technically shouldn’t be too problematic to implement.
I’d love seeing this in action.
In this modern day and age we should technically even be able to use some sort of light-weight machine learning so bot players produce more realistic inputs and can react to their environment.
Nothing too crazy, just a small, light-weight neural network that is easy to train so you can test the game with more convincing bot players.