Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Bad Word Filter PRO - Solution against profanity and obscenity

Discussion in 'Assets and Asset Store' started by Stefan-Laubenberger, Jan 9, 2015.

  1. alk_arman

    alk_arman

    Joined:
    Jun 12, 2017
    Posts:
    2
    Hi,

    This plugin adding CT_BWF symbol on project setting per version 2.9.6 - 17 Nov 2017 as per documentation.
    This symbol also not referenced anywhere else in the code.
    May the team clarify what this symbol is needed for? Is it safe to omit this symbol?

    Thanks
     
  2. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi

    The compile define CT_BWF is only needed to know if BWF is actually installed (e.g. for other assets etc.).
    If you don't want it, just delete "CompileDefines.cs" and remove the entry.


    Cheers
    Stefan
     
  3. alk_arman

    alk_arman

    Joined:
    Jun 12, 2017
    Posts:
    2
    Alright, thank you, it is crystal clear now
     
    Stefan-Laubenberger likes this.
  4. PandaArcade

    PandaArcade

    Joined:
    Jan 2, 2017
    Posts:
    74
    Hi @Stefan-Laubenberger :)

    I grabbed BWF filter yesterday and have implemented it in our project but I can't find a setting that makes it as strict as I need it to be.

    For example, A player can use nicknames like DonkeyDick and BabySex and BadWordManager.Contains() returns false. Short of adding regex for every word I don't want to be used like this is there any way to make BWF more strict?
     
  5. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi PandaArcade

    Thank you for investing into BWF!

    As you can imagine, every user of BWF has other rules, what they want to get filtered.

    The basic idea of BWF back in 2014 was to provide the code to filter words; the languages where added as a "bonus". They were made to fit for most people out-of-the-box.

    Because filtering is a thin red line: one wrong filter, and you filter too much. The classic example is "Scunthorpe".
    There is also a wide spectrum of opinions to the question: what is a bad word? Some people are more and easier offended by words than others, so what to pick and whatnot?

    Therefore, we decided to be not to restrictive and let the user change and add the regexes for every language.
    I'm fully aware that it is some work, but I'm afraid this is inevitable.

    However, you are right, the filter for the two examples you provided are not strict enough and will be updated in the next version.
    Just find the regex in "en.txt" (line 63) and "global.txt" (line 44) and add \w* in front of the word to catch all variants of your examples.

    I hope you understand our point of view.


    Cheers
    Stefan


    To all customers
    We're happy to add new words and changed filters to the asset, so if you like to see the integrated, just send us the updated files. We have a "Credits"-section with wonderful people who helped improving BWF, so if you want to be part of that list, go ahead ;)
     
  6. PandaArcade

    PandaArcade

    Joined:
    Jan 2, 2017
    Posts:
    74
    @Stefan-Laubenberger Thanks for the explanation

    Is this expected behavior? - When I call BadWordManager.ReplaceAll("1234 dick") it returns irea ****

    It has successfully replaced dick with **** but strangely changed the number at the beginning to letters.
     
    Last edited: Aug 31, 2019
  7. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi

    This happens if "Replace Leet Speak" is enabled; please disable it:
    upload_2019-8-31_12-4-24.png


    Cheers
    Stefan
     
  8. PandaArcade

    PandaArcade

    Joined:
    Jan 2, 2017
    Posts:
    74
    Thanks @Stefan-Laubenberger. This is weird behavior.

    Another problem we're having is that BWM is renaming anything you select to BWF even if it didn't have anything to do with BWM. We did find the Ensure Name settings which when disabled does stop this from happening. The Ensure Name setting isn't saved in the project so we had to make sure everyone working on the project had this setting disabled on their computer. Why even have the Ensure Name setting?
     
  9. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    BWF is a singleton and we wanted to make sure that only one instance is in the scene. Furthermore, it helps us to detect if BWF is in the scene.

    Anyway, I apologize for the hassle it caused for your team, but you can simply change the value of the variable "DEFAULT_ENSURE_NAME" (line 70) in "Constants.cs" to false. That will solve it for all users.


    Cheers
    Stefan
     
    PandaArcade likes this.
  10. PandaArcade

    PandaArcade

    Joined:
    Jan 2, 2017
    Posts:
    74
    Hi Stefan,

    I've updated to the latest version of BWF and it doesn't compile. I get this error...

    Assets\Plugins\crosstales\BadWordFilter\Editor\Util\GAApi.cs(17,30): error CS0117: 'EditorConfig' does not contain a definition for 'TRACER'

    Btw BWF doesn't allow the word after o_O

    Thanks,

    Paul J.
     
  11. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi Paul

    Please follow chapter 10 of the documentation:
    https://www.crosstales.com/media/data/assets/badwordfilter/BadWordFilter-doc.pdf

    About the detection: "after" is a bad word in German. Anyway, you can prevent this by calling the methods (e.g. "Contains") with the sources you need (or delete the word).
    To identify which regex triggered a detection, you could enable "Debug BadWords" in the configuration.

    I hope this helps you further.


    Cheers
    Stefan
     
  12. Info-Gamer

    Info-Gamer

    Joined:
    Aug 28, 2015
    Posts:
    3
    This bad word filter looks like it works really well! Great job! I created my own bad word filter which is not as in-depth as yours but it works quick and simply. If you'd like to check it out you can find it here.
     
  13. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi

    Thank you for sharing your solution!

    It's a good starting point to get the basics about "bad word"-filtering. Everyone will start with something similar and then realize, that it's really, really hard to do good and accurate filtering.
    Some pitfalls:
    1. Comparing strings: you will end up with countless variations of words; e.g. the word "butt" in your demo video: what about "buttface", "butthair" etc.? Users are pretty creative :)
    2. Complexity: the next step after string compare is something like to use "string.Contains", which will also detect wrong words like "Scunthorpe"
    3. Some users use leet-speak or similar to write bad words, like "p0rn"; more variations!
    4. Unicode: you can do some nasty stuff with it; there are some unpleasing symbols available.
    Then add multiple languages to it and you have a full time job ;)

    Seriously, there is a reason we created this asset. If you honor your time and also put a price tag to it, let's say $10 per hour, there is no way you can accomplish this task in 4 hours.
    Therefore, by buying a battle-tested and supported solution, you will end up seeing much better results than any "quick and dirty" solution.
    Why re-invent the wheel, except for educational purposes? One thing less to care about, yolo!


    Cheers
    Stefan



    P.S:
    Your post seems to be an ad to your service. It would be nice if you would show your users how it's really done by linking to our asset in the store. :cool:
     
  14. busalaev

    busalaev

    Joined:
    May 1, 2019
    Posts:
    3
    upload_2020-2-13_16-56-11.png
    I`m sorry for my "english". :) I just almost bought a plugin, and an online test showed a terrible result.:)
     
  15. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Unfortunately, we can't speak Russian very well, but instead of insulting our product, you're welcome to help us improve the filter :)

    The online demo version of our tool is very old and we should update it asap; the actual version has a lot of new features and detection rules since the version you tested.


    Edit
    As you can see, the new version works:
    upload_2020-2-14_11-7-42.png
     
    Last edited: Feb 14, 2020
  16. busalaev

    busalaev

    Joined:
    May 1, 2019
    Posts:
    3
    not really) the word "охуел" - is very bad.
     
  17. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Good to know, it's added to the filter :)

    Bad Word Filter does not claim to filter all bad words in any language. Every customer has another level of what's a bad word, so they can add new words and customize the existing ones in the filter.
    It's also easy to add new filters for new languages etc.; that's the power of BWF.

    Our "Russian"-filter has over 250 regex words which detects hundreds of variations; but we know, Russian has a lot of swear words, so it maybe has to be extended for a specific usage.

    As I said, we're always appreciate feedback and new words from users since we can't speak 25 languages ;)
     
  18. busalaev

    busalaev

    Joined:
    May 1, 2019
    Posts:
    3
    Any Russian "hunky" can make a large database of bad words just for a couple of liters of beer.))
     
  19. Ghetaldus

    Ghetaldus

    Joined:
    Jul 15, 2017
    Posts:
    34
    What is purpose of "Simple Check" setting?
    Filter seems to catch chinese bad words with both disabled or enabled Simple Check.
     
  20. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi

    "Simple Check" is mainly much faster than the normal check since it doesn't use regular expressions for the matching.
    We recommend using this setting for Chinese, Korean, Japanese and Thai.

    I hope this helps you further.

    Stay safe!


    Cheers
    Stefan
     
    Ghetaldus likes this.
  21. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    twobob likes this.
  22. reggie_sgs

    reggie_sgs

    Joined:
    Jun 29, 2014
    Posts:
    232
    I wanted to request that you remove this from the product as I don't want to have this modifying my defines every time I install or update it. I was actually coming here just to look into this as well so it's nice to see it was already answered. I think most people know how to do this if required so forcing it on everyone is not ideal.

    Thanks,
    Reggie
     
  23. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi Reggie

    The compile define is quite relevant for integrations with other assets.
    However, the next release of BWF will have the option to disable adding compile defines:
    upload_2020-5-5_22-27-17.png

    I hope this fulfills your request.

    Cheers
    Stefan
     
  24. reggie_sgs

    reggie_sgs

    Joined:
    Jun 29, 2014
    Posts:
    232
    Thanks, that would be nice. It was quite frustrating to delete and then find it re-appeared again. I had to track down and delete the offending script to finally stop it.
     
  25. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,105
    Hi, we've been using BWF for awhile, really love it. But we'd like to move the badword lists to our web server, so we can easily edit them without doing a new build of the game. Is there a way to do that -- have the game pull the data from a file on our server (and use the in-build data only as a fallback)?

    thanks
    Dave
     
  26. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi Dave

    This is quite easy: just edit or copy the existing sources and enter the URL to your bad words:
    upload_2020-5-13_0-23-58.png

    I hope this helps you further.


    Cheers
    Stefan
     
    twobob and gecko like this.
  27. tonzusj

    tonzusj

    Joined:
    May 18, 2020
    Posts:
    1
    Hello-
    Does this asset require internet connection in order to do the name check?
     
  28. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi

    No, BWF works offline.
    I hope this answers your question.

    Stay safe!


    Cheers
    Stefan
     
  29. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,105
    Apologies if this is addressed in the docs, but I couldn't find it: In in-game text chat, if a player types a badword in a sentence, then that sentence is displayed with the replacement characters for the badword. But if they type just a badword, then nothing appears at all after they submit it. Which is confusing to that player. Are there other options for that--either show the replacement characters, or some feedback?

    thx!
    Dave
     
  30. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Hi Dave

    I may not fully understand the problem.
    At which point do you check for bad words? Imho, it should be at the moment, the user hits "Enter" or the "Submit" button; BWF should be called and test the text and eventually correct it (e.g. with "ReplaceAll").

    You could also constantly test (e.g. in an interval of 100ms) with "Contains" and disable the "Submit"-action until there are no longer any bad words.
    The other option is the same as above but with "GetAll" - you could use the result with the "Mark"-method to display the found words in the input field or use a separate UI section to display all current bad words.

    Does that help you further?


    So long,
    Stefan
     
  31. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,105
    Thanks for the reply. I think we're using the default functions, but my question is: Why is the badword replaced with the replacement characters when part of a longer phrase, but if the user submits only a badword alone, nothing is displayed? The latter is confusing. Would be better if the badword was always replaced with the replacement characters, no matter if there are other words with it or not.
     
  32. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    Our demo works with only one bad word, so I don't know why it doesn't work on your side.
    Can you please provide me more details, like a code snippet?
     
  33. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    We've just released version 2020.3.3 of Bad Word Filter.
    Main changes:
    • Async-methods improved
    • Code cleanup
    • domains updated
    • Updated to Common 2020.4.4
     
  34. Stefan-Laubenberger

    Stefan-Laubenberger

    Joined:
    May 25, 2014
    Posts:
    1,528
    The new version is in the store!
     
unityunity