It’s less-so about filtering for players not in the server, but the importance of being able to filter text without needing to add this text to a specific player’s “chat context” and not implicating them for if players report them.
I’m referring specifically about the feature in Word Bomb called “Live Typing” which allows other users to be able to see the current player’s typing text by making many, many filtering calls. All Roblox filtering functions require that you pass a player. And in Word Bomb, Live Typing generally cannot be used as chat, so it doesn’t make sense to implicate players for typing bad words when this ISN’T a chat input box. Here’s an excerpt from my other bug report on another Roblox filtering issue:
“Live Typing” in Word Bomb is the system the game uses in order to be able to show the current player’s typing to all of the other players. To accomplish this, whenever the player edits their text, via addition, removal, or complete change of the text within the TextBox, the text must be refiltered through the Roblox filtering system.
The following is not confirmed to be certain, but after extensive testing, I can be almost positive this is true:
The problem causing the extreme filtering to our game’s chat then arises with a change to Roblox’s filtering system, which is making it so that each and every string of text filtered for a specific player is also being used as a sort of “chat context” for filtering in future calls to the filter function.
This means that, when you type text in Word Bomb, in the Roblox filter’s view, you are actually sending many, many unfinished messages. This may look like this to the filter:
T TR TRE TREE TREEH TREEHO TREEHOU TREEHOUS TREEHOUSE
We can’t be certain why the Roblox filter doesn’t like this, but we can make a good guess that it’s because of the nature of these strings. These are strange, unfinished strings of text. Maybe it sees it as spam, maybe it thinks the nature of the words being unfinished is malicious and that it’s a player trying to form a chat bypass.
Whatever be the case, NOW, if you are to send messages in the Word Bomb chat, the filter has a much higher chance of simply blocking anything you type. It doesn’t matter what you type, it will block it all. And this can likely last for many, many messages. I’ve personally had my messages blocked up to 6 and even 7 times, and I was typing DIFFERENT messages each time.
I wasn’t able to find a guaranteed word that causes the Roblox filter to go haywire, but people have mentioned that longer words are more likely to cause this to happen.
This is not just an issue for Word Bomb, there is one example I can think of that is a general issue for any games which store any sort of user input text in DataStores. For example, consider a game like a dream you’ve had before, where players can leave permanent notes around a building. When a player adds a note, it’s filtered, then sent to the DataStore to be saved. The problem is when you eventually need to take the note OUT of the DataStore when a new server is made and all the notes need to be loaded again.
According to the documentation, you are encouraged to filter the text strings again when taking them out, to get the most up-to-date version of the text filter. This is a great idea, because it ensures the security of the players reading the notes in the game.
But this is a problem now, because the player who originally typed that note is not present in the server, and even though the filtering functions allow you to pass a user ID, you cannot pass a user ID of a player who is not in the server. Essentially, the only way to be able to perform this is by passing a player who IS in the server. This has been the workaround for as long as filtering has been a part of Roblox, and many resources from DevForum posts who were experiencing similar filtering problems have been recommending to do this at this point.
Ultimately, not all filtering calls are text chat. It doesn’t make sense to assume that all filtering calls are text chat, and there’s no way for me to make a call for filtering without adding context to a player or triggering “text chat” violations. The Live Typing feature doesn’t need the same level of scrutiny that the regular chat box would need, because it is NOT used for chat. But it DOES need to be filtered. So there needs to be something different for these edge cases.
Hopefully that makes sense, I was a little all over the place