Get up and running with ProtoTools in under two minutes. Follow the core setup instructions below to load modules directly into your workspace environment.
Installation Loader
To run the modules, fetch and authorize ProtoTools core using the following Luau script snippet in your IDE environment:
You must supply a valid ProtoTools license key to authorize the loader. Keys can be purchased via our checkout page and managed under your Billing Dashboard.
Step-by-Step Guide
1. Copy the loader command above.
2. Replace 'your-license-key' with the token retrieved from your ProtoTools dashboard.
3. Paste the line into your command bar or executor script. The loader will automatically download the latest cache and execute dependencies.
What is ProtoTools?
ProtoTools is an integrated family of high-fidelity optimization and procedural generation scripts designed for Luau game developer ecosystems.
Originally started in 2024 as a series of standalone modules built by a team of friends, it has since evolved into a reliable solution used by developers globally to speed up procedural scene design, handle voxel fluid simulations, and rig physics-based character systems.
Core Principles
Zero Latency: All mathematical solvers run on optimized background threads to maintain a smooth 60 frames per second.
Modular Setup: Download only what you need. Each toolset handles specific physics bounds or asset generations.
Easy Auth: Uses our custom Bizarro-Auth protocol for license tracking and fast package deliveries.
ProtoTree Engine
ProtoTree is a premium procedural foliage generator. It builds randomized and highly optimized tree branches, trunks, leaves, and custom wind vectors on local clients or servers.
Integration Example
Instantiate a procedural forest generation mesh with this block:
tree_generation.luau
local ProtoTools = loadstring(game:HttpGet 'https://prototools.vip/loader') 'your-key'
local TreeEngine = ProtoTools.TreeEngine
TreeEngine.Generate({
Density = 0.65,
FoliageType = "Redwood",
WindStrength = 1.5,
LODScale = 400
})
Configuration Attributes
The Generate function takes a configuration dictionary containing the following keys:
Density (number): Target trees per voxel grid unit. Range: [0.0 - 1.0].
LODScale (number): Grid radius limit where assets shift down to lower render meshes.
ProtoFlow Physics
ProtoFlow Physics is a voxel-based Navier-Stokes hydro-dynamics solver. It simulates highly interactive water currents, dynamic splashes, and floating mesh buoyancies directly in your project.
Voxel Fluid Simulation Example
Define a local voxel grid flow solver boundaries using this function:
Keep GridSizes within 128 units on voxel boundaries to optimize CPU performance on low-end mobile devices.
Constraint Studio
Constraint Studio implements physics-based soft body constraints, custom ragdoll transitions, and active joint alignment scripts for custom character models.
Active Ragdoll Setup
Bind joints procedurally to character meshes with the following configuration script:
ragdoll_setup.luau
local ProtoTools = loadstring(game:HttpGet 'https://prototools.vip/loader') 'your-key'
local ConstraintStudio = ProtoTools.ConstraintStudio
local character = workspace.PlayerCharacter
ConstraintStudio.BindRagdoll(character, {
ActiveJoints = true,
Rigidity = 0.78,
Damping = 0.12,
StateTransitions = true
})
License Verification
ProtoTools validates authorization using our custom validation API. This guarantees that only authorized license holders can boot core module instances.
Troubleshooting Key Errors
Error: Invalid License Key
If you receive this console warning, check that your token matches the license shown in the Billing Dashboard.
Make sure that your key is active and your subscription hasn't expired. If you've recently reset your account, refresh your key in the dashboard or re-authenticate through Whop link bindings.
CLI Arguments
You can customize the initial boot parameters of ProtoTools by supplying options inside the loader command line arguments.
Advanced Loader Arguments
Supply configuration arrays into the loader function call directly: