A few weeks ago, I decided to make a CAPTCHA system and posted it on #help-and-feedback:cool-creations hoping for feedback. I ended up with some great responses, so I decided to revise my project.
Introducing CaptchaTheFlag
CaptchaTheFlag is an API-like tool to implement a CAPTCHA into your game, meaning YOU as the developer get to decide when a player sees a CAPTCHA. Here’s how:
game.ServerStorage.Captcha.Deploy:Invoke(player, version, dismissable, blur)
Invoking the (yeilding) BindableFunction will present the player with a CAPTCHA with the properties you specify. If the player completes the CAPTCHA, the function will return with true
. If the player dismisses the CAPTCHA, leaves the game, or takes too long to complete it, the function will return with false
.
Example invoke function
game.ServerStorage.Captcha.Deploy:Invoke(game.Players.Player1, 2, false, true)
-- Give Player1 a Version 2 CAPTCHA that cannot be dismissed, and blurs the background
CaptchaTheFlag also offers 2 versions, one easy and one slightly harder. Here’s both of them in action:
Version 1 (Easy)
A click-to-check challenge. This is very simple however and could be bypassed by more smarter bots (or bots with exploits).
Version 2 (More challenging, tougher for bots)
A more challenging puzzle. Based off of Google’s reCAPTCHA, this is supposed to be tougher for bots. The colors are a randomly generated shade of red, orange, yellow, green, and blue, in a random order on the client’s screen. This version also records how many failed attempts the player made, but doesn’t take any action. You can find the amount at game.ServerScriptService.Captcha.Deploy[player.Name].FailedAttempts.Value
.
Grab CaptchaTheFlag for free at https://www.roblox.com/library/5246204244/CaptchaTheFlag
Want to test it out first? Here’s a demo: https://www.roblox.com/games/5099320249/Captcha-Demo