Guardian Gate | Parental Gate for Kids Apps
Unity 2022.3 and Unity 6, tested on 2022.3.62f3 and 6000.5.8f1. Built-in, URP and HDRP, unchanged. ... Fourteen methods on the component wire from the inspector the same way; from code, ...
by Brian Duffy Games
Price History +
Five gates, composable in any combination
- Randomised arithmetic challenge, in three difficulty tiers.
- Worded question challenge, with five examples shipped and your own supported.
- Rate-limited PIN.
- Rate-limited password, any printable character.
- Birthdate check that stores no data.
Any or All composition, single-gate requests, and IParentGate to add your own.
Credential storage and rate limiting
Salted PBKDF2-HMAC-SHA256 at 100,000 iterations, constant-time verification, five attempts, doubling backoff, then a fifteen-minute lockout that survives a force-quit. The PIN and the password share one allowance. Persisted state is HMAC-sealed with a per-install key, and the clock cannot be wound back to shorten a lockout.
No data leaves the device
Six storage keys, all prefixed so they cannot collide with yours. No date of birth, no email address, no name, and nothing sent anywhere. The age gate records a band such as "at least 13 and under 16"; the birthdate gate records nothing at all.
Your clock, your storage, your speech
Hand in server time through UtcNowProvider and every lockout, session and age check reads it instead of the device clock. Hand in your own save system through IGuardianStorage, or keep everything in memory for a preview build. Both challenge screens raise a Spoken Prompt event with the question in words, for a text-to-speech path.
Accessibility
Every control clears Apple's 44-point tap target and Android's 48dp, and every UI element meets WCAG AA contrast. Safe-area insets, a visible focus ring on every button, and a panel that lifts clear of the on-screen keyboard.
Ten languages
English, French, Italian, German, Spanish, Brazilian Portuguese, Russian, Simplified Chinese, Japanese, Korean. One asset each, and a CJK font subset small enough that shipping all three costs 155 KB.
A demo scene that runs from a fresh import
Open it, press play, and every gate is on a button. It works under both input systems with no setup.
Compatibility
Unity 2022.3 and Unity 6, tested on 2022.3.62f3 and 6000.5.8f1. Built-in, URP and HDRP, unchanged. No dependencies beyond com.unity.ugui. uGUI throughout, no TextMeshPro. Tested on device on Android and iOS.
Guardian Gate puts a parent-only challenge in front of external links, purchases, ad settings and any other adult action in a kids app, and adds a neutral age gate beside it. Five gate types, a configurable age gate, and sixteen ready-made screens in light and dark themes.
Compliance Preflight
Settings like "five attempts" and "one second of backoff" are easy to set and hard to reason about. The Preflight panel sits under the fields in the inspector and tells you what the numbers you just typed actually produce: how many PIN combinations exist, how short a password you are allowing, the full delay ladder a wrong guess walks through, how long it takes to spend every attempt, how long a parent stays signed in, and five checks covering the things a store looks for.
It reports on your configuration. It does not certify your app, and it says so.
No code required
Drag Guardian_Runtime into your scene, point a Button's On Click at OpenUrlBehindParentGate and type the URL. Fourteen methods on the component wire from the inspector the same way; from code, RequestParentEntryFor is one call.
Which gate meets which rule
Apple guideline 1.3 and Google Play's external link requirements accept any of the five gates. Google Play's adult-action list is narrower: it accepts the PIN, the password and the birthdate check. The package tells you which is which, and warns you at build time if a settings asset has none of the three enabled, so the difference is something you find in the editor rather than in a review rejection.
No guessing
The PIN is never stored anywhere a curious child could read it, and a child guessing at random gets five tries, then one try every fifteen minutes. Working through a four-digit PIN that way takes months.
Make it yours
Every screen is a prefab. Swap the sprites and fonts for your own and the layouts follow. Both themes and all ten languages ship built, and both are replaceable: IGuardianStrings drives the text from Unity Localization or I2 if you already have one, a blank backdrop prefab is there for a screen of your own, and the whole demo folder deletes cleanly when you are done with it.
Support
support@brianduffy.games. Include your Unity version and which render pipeline you are on.