RNGNeeds symbol

RNGNEEDS

The probability distribution plugin for Unity.

Design weighted probability lists for any type — directly in the Inspector, or from code. Loot drops, enemy spawns, card decks, combat outcomes, dialogue, animations. Controlled randomness that designers and programmers both love to use.

Stop writing one-off randomness scripts

ProbabilityList<T> is a generic container of weighted outcomes that works with any value or reference type — ints, floats, enums, ScriptableObjects, GameObjects, your own classes. Add items, set probabilities visually with the Stripe, and call PickValue(). Done.

But it goes deeper. Variable pick counts, repeat prevention, seeding, pick history, influence providers that shift odds based on game state, depletable lists for finite stock, weights for designer-friendly rarity knobs, burst-compiled selection methods, full extensibility. All of it tunable in the Inspector. All of it controllable from code.

Drop it into a weekend prototype or a production title — RNGNeeds scales with your project. One line to pick a value, a few more to wire up dynamic odds. No setup wizards, no runtime dependencies, no learning curve that fights you.

For designers

Author probabilities visually with the Stripe. Drag to rebalance, lock items to preserve ratios, test outcomes in the Inspector, customize themes and color modes per drawer.

For programmers

Full API for runtime control. Add/remove items, adjust probabilities, configure seeding, implement custom selection methods and influence providers, use PLCollection for grouped tables.

The Inspector

See your probabilities. Tune them. Test them.

The custom drawer is the heart of RNGNeeds. Every probability list gets a visual Stripe, per-item controls, color themes, and built-in testing — right where Unity developers already work.

RNGNeeds Inspector overview showing Monster Spawner with probability stripes for monster types, levels, and spawn locations
A MonsterSpawner with three probability lists — monster types, levels, and spawn locations — each with their own Stripe, theme, and pick configuration.
RNGNeeds card deck inspector showing card rarities and individual cards with pick testing
CardDeck — rarities and cards with pick count setup, seed control, and color-coded test results.
RNGNeeds advanced inspector showing damage types with influence providers and probability spread
Damage types with influence providers — odds of critical strike shift based on player level.

AI-Ready

Your coding agent now knows RNGNeeds

AI coding agents like Codex, Claude Code, and Cursor know Unity — but they don't know RNGNeeds. Without context, they'll write hand-rolled Random.Range solutions that ignore the plugin entirely.

The RNGNeeds agent skill fixes that. Install it once, and your agent understands the plugin's features, terminology, API, and patterns well enough to give you answers that actually use them. Ask for weighted loot drops and get a proper ProbabilityList<T> setup instead of a custom function from scratch.

Use cases

Anywhere your game rolls dice

Loot & rewards

Weighted drop tables, rarity tiers, multi-item bundles with repeat prevention. Make rewards feel exciting without feeling unfair.

Enemy spawns

Weighted encounter tables with influence providers that react to player progress, location, time, or threat level.

Card games

Depletable lists for draw piles. PLCollection for deck building. Pick history for discard tracking. Seeding for replay.

Combat & abilities

Damage type rolls, crit chance, proc effects, status ailments. Influence providers that shift combat odds based on stats.

Dialogue & AI

Weighted voice lines, NPC behavior decisions, contextual responses. Repeat prevention so the same bark doesn't fire twice.

World & events

Storm frequency tied to story progress, resource rarity influenced by region, rare spawns near midnight. Dynamic odds that react to the state of your game world.

Features

Everything you need to control gameplay randomness

Generic

Works with any value or reference type. int, float, bool, Vector3, Color, ScriptableObject, MonoBehaviour, GameObject, enums, your own classes. No restrictions.

The Stripe

Visual probability authoring directly in the Inspector. Drag segments to rebalance, scroll to fine-tune, type exact values down to 0.00001%. Lock items to preserve their odds while adjusting others.

Influence Providers

Implement IProbabilityInfluenceProvider to dynamically shift odds based on player stats, world state, time of day, audio levels — anything. Each item controls how much influence affects it via its Influence Spread.

Depletable Lists

Assign units to items and let picks consume them. Depleted items won't be selected. Use for card decks, unique rewards, limited spawns, or any finite stock that refills later.

Repeat Prevention

Three techniques to prevent back-to-back duplicates: Spread (fastest, most biased), Repick (balanced), and Shuffle (best distribution preservation). Choose the right one for the feel you want.

Flexible Pick Counts

Pick one value or many. Fixed count, random range, or biased range with an adjustable curve. Variable pick counts with linked or independent min/max.

Seeding & Determinism

Retain a seed with KeepSeed, set a specific one, or implement a custom ISeedProvider for global control. Reproducible results for replays, debugging, and testing.

Weights

Use weights when designers think in relative rarity (1x, 5x, 10x) rather than exact percentages. Weights convert to probabilities automatically.

PLCollection

Group multiple named probability lists into one collection. Pick from a specific list, pick from all, refill individual lists or the whole collection. Ideal for multi-stage loot, biome tables, and deck builders.

Burst-Compiled Selection

Choose burst-compiled variants of selection methods to pick millions of items in milliseconds. Performance is not a concern.

Extensible

Implement and register custom selection methods via ISelectionMethod. Custom seed providers via ISeedProvider. The plugin is built to be extended, not just configured.

Customizable Drawers

Color themes, monochrome mode, color dimming by probability, info displays, appearance options — all configurable per drawer. RNGNeeds remembers preferences individually.

Code

Design in the Inspector. Control from code. Both work.

Set up your lists visually, then use the API when runtime logic needs to take over. Or build everything from code. RNGNeeds doesn't force a workflow.

Spawn a random monster at a random location
public class MonsterSpawner : MonoBehaviour
{
    public ProbabilityList<Monster> monsterTypes;
    public ProbabilityList<int> monsterLevels;
    public ProbabilityList<SpawnLocation> spawnLocations;

    public void SpawnMonster()
    {
        var monster = monsterTypes.PickValue();
        var level = monsterLevels.PickValue();
        var pos = spawnLocations.PickValue().coordinates;

        var go = Instantiate(monster.monsterPrefab, pos, Quaternion.identity);
        go.GetComponent<MonsterStats>().SetStatsByLevel(level);
    }
}
Influence provider — odds shift with player level
public class PlayerManager : MonoBehaviour, IProbabilityInfluenceProvider
{
    public int playerLevel;
    public string InfluenceInfo => $"Player level: {playerLevel}";
    public float ProbabilityInfluence => ((float)playerLevel).Remap(1, 20, -1f, 1f);
}
Cards with custom colors per rarity
public class Card : ScriptableObject, IProbabilityItemColorProvider
{
    public CardRarity cardRarity;
    public Color ItemColor => cardRarity.rarityColor;
}

public class CardDeck : ScriptableObject
{
    public ProbabilityList<CardRarity> cardRarities;
    public ProbabilityList<Card> cards;
}

Reviews

All 5-star reviews on the Asset Store

This is a dead simple yet powerful RNG solution. In about 10 minutes I had it dropped into my project and had replaced a clunky enemy spawn weight system. This is so much easier to add to, alter weights, and has tons of on-the-fly adjustments you can make. Absolutely excellent.

taboobat

The editor alone is amazing, being able to visualize probabilities and drag them around. It's incredibly intuitive and you can use it right out of the box. I would have spent hours trying to make something like this on my own that wasn't even half as good.

SerketStudios

I got this on sale, and I'd buy it again at full price in a heartbeat. Up there with Odin for essential for me. The team is very responsive and helpful on discord.

stevenairbag

It has already made my project much cleaner by replacing the traditional Random.Range method for randomization. It was very easy for me to learn, and now I want to randomize absolutely everything!

Asset Store reviewer

Best one on the market, it literally has all the use cases I need. Works right out of the box, easy to use.

Tom-Kazansky

Intuitive to work with and fulfills my RNG needs. The UI for the inspector component is well done and customizable.

ItzWatz

Support

You're not on your own

Documentation

Comprehensive guides, tutorials, examples, and a full API reference. Most questions are answered before you need to ask.

docs.rngneeds.com

Discord

Join the community. Chat with other users, share ideas, find inspiration, and get help in real time.

Join Discord

Direct Support

Still stuck? Reach out by email. We respond to every inquiry as quickly as possible.

support@starphase.sk

For all your random needs. Probably.

Available on the Unity Asset Store. Compatible with Built-in, URP, and HDRP. Works with all current LTS versions.