[
 {
  "name": "Roblox Creator Docs (Creator Hub)",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://create.roblox.com/docs",
  "why": "The official starting point for Studio, scripting, publishing, and monetization."
 },
 {
  "name": "Engine API Reference",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://create.roblox.com/docs/reference/engine",
  "why": "Reference for every engine class, service, event, and property."
 },
 {
  "name": "Official tutorials",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://create.roblox.com/docs/tutorials",
  "why": "Step-by-step learning paths, from your first game to advanced systems."
 },
 {
  "name": "Open Cloud APIs",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://create.roblox.com/docs/cloud",
  "why": "Automate publishing, DataStores, and assets from your own tooling or CI."
 },
 {
  "name": "Analytics docs",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://create.roblox.com/docs/production/analytics",
  "why": "Measure retention, monetization, and funnels to steer your game."
 },
 {
  "name": "Creator Docs on GitHub",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://github.com/Roblox/creator-docs",
  "why": "Open-source source of the docs: track changes and contribute."
 },
 {
  "name": "Luau (official site)",
  "category": "Official docs",
  "type": "tutorial/docs",
  "url": "https://luau.org",
  "why": "Docs for Roblox's scripting language, covering type checking and performance."
 },
 {
  "category": "Official docs",
  "name": "Scripting overview",
  "url": "https://create.roblox.com/docs/scripting",
  "why": "Core scripting concepts: scripts, modules, events, and the client-server model.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Luau guide (Creator Docs)",
  "url": "https://create.roblox.com/docs/luau",
  "why": "Roblox's own guide to Luau types, tables, functions, and idioms.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Studio overview",
  "url": "https://create.roblox.com/docs/studio",
  "why": "Tour of every Studio window, tool, and setting.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Parts and building",
  "url": "https://create.roblox.com/docs/parts",
  "why": "Build with parts, CSG, meshes, and materials.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "User interface docs",
  "url": "https://create.roblox.com/docs/ui",
  "why": "Screen, surface, and billboard UI, layouts, and responsive design.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Animation docs",
  "url": "https://create.roblox.com/docs/animation",
  "why": "Animation Editor, rigs, IK, and playing animations from code.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Audio docs",
  "url": "https://create.roblox.com/docs/audio",
  "why": "Audio assets, the new audio API, and spatial sound.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Particle emitters",
  "url": "https://create.roblox.com/docs/effects/particle-emitters",
  "why": "Create fire, smoke, sparks, and magic effects.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Lighting docs",
  "url": "https://create.roblox.com/docs/environment/lighting",
  "why": "Lighting technologies, atmosphere, and post-processing.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Terrain docs",
  "url": "https://create.roblox.com/docs/parts/terrain",
  "why": "Generate, sculpt, and paint smooth terrain.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Data stores",
  "url": "https://create.roblox.com/docs/cloud-services/data-stores",
  "why": "Persist player data safely with DataStoreService.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Memory stores",
  "url": "https://create.roblox.com/docs/cloud-services/memory-stores",
  "why": "Low-latency cross-server queues, sorted maps, and hash maps.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Cross-server messaging",
  "url": "https://create.roblox.com/docs/cloud-services/cross-server-messaging",
  "why": "MessagingService patterns for global events and announcements.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Teleporting between places",
  "url": "https://create.roblox.com/docs/projects/teleport",
  "why": "Move players between places and reserved servers.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Remote events and callbacks",
  "url": "https://create.roblox.com/docs/scripting/events/remote",
  "why": "How to communicate safely between server and client.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Security tactics and cheat mitigation",
  "url": "https://create.roblox.com/docs/scripting/security/security-tactics",
  "why": "Official guidance on validating remotes and stopping exploits.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Parallel Luau",
  "url": "https://create.roblox.com/docs/scripting/multithreading",
  "why": "Run code across multiple threads with Actors.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Performance optimization",
  "url": "https://create.roblox.com/docs/performance-optimization",
  "why": "Identify and fix CPU, memory, and network bottlenecks.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Monetization overview",
  "url": "https://create.roblox.com/docs/production/monetization",
  "why": "Every way to earn on Roblox, in one place.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Passes",
  "url": "https://create.roblox.com/docs/production/monetization/passes",
  "why": "Sell one-time perks and permanent upgrades.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Developer products",
  "url": "https://create.roblox.com/docs/production/monetization/developer-products",
  "why": "Sell consumables and repeatable purchases with ProcessReceipt.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Subscriptions",
  "url": "https://create.roblox.com/docs/production/monetization/subscriptions",
  "why": "Recurring revenue with experience subscriptions.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Price optimization",
  "url": "https://create.roblox.com/docs/production/monetization/price-optimization",
  "why": "Let Roblox test price points for your products.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Publishing experiences",
  "url": "https://create.roblox.com/docs/production/publishing/publish-experiences-and-places",
  "why": "Publish places and configure experience settings.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Localization",
  "url": "https://create.roblox.com/docs/production/localization",
  "why": "Translate your experience automatically and manually.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Ads Manager",
  "url": "https://create.roblox.com/docs/production/promotion/ads-manager",
  "why": "Run sponsored and search ad campaigns for your game.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Custom events (analytics)",
  "url": "https://create.roblox.com/docs/production/analytics/custom-events",
  "why": "Track any gameplay event you care about.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Open Cloud reference",
  "url": "https://create.roblox.com/docs/cloud/reference",
  "why": "REST API reference for Open Cloud endpoints.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Avatar docs",
  "url": "https://create.roblox.com/docs/avatar",
  "why": "Create, rig, and sell avatar items and bodies.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Art and 3D modeling",
  "url": "https://create.roblox.com/docs/art",
  "why": "Modeling, texturing, and importing art from Blender or Maya.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Characters",
  "url": "https://create.roblox.com/docs/characters",
  "why": "Character appearance, controllers, and humanoids.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Pathfinding",
  "url": "https://create.roblox.com/docs/characters/pathfinding",
  "why": "Move NPCs around obstacles with PathfindingService.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Instance streaming",
  "url": "https://create.roblox.com/docs/workspace/streaming",
  "why": "StreamingEnabled for big maps and mobile performance.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "In-experience text chat",
  "url": "https://create.roblox.com/docs/chat/in-experience-text-chat",
  "why": "Customize TextChatService channels, commands, and bubbles.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Input and controls",
  "url": "https://create.roblox.com/docs/input",
  "why": "Cross-platform input for keyboard, gamepad, touch, and VR.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "MicroProfiler",
  "url": "https://create.roblox.com/docs/performance-optimization/microprofiler",
  "why": "Frame-level profiling for advanced performance work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Debugging",
  "url": "https://create.roblox.com/docs/studio/debugging",
  "why": "Breakpoints, watches, and the call stack in Studio.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Code samples",
  "url": "https://create.roblox.com/docs/samples",
  "why": "Searchable official code samples for common tasks.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Assistant",
  "url": "https://create.roblox.com/docs/assistant/guide",
  "why": "Roblox's built-in AI helper for scripting and building in Studio.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Experience templates",
  "url": "https://create.roblox.com/docs/resources/templates",
  "why": "Official starter places you can open and learn from.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Core curriculum",
  "url": "https://create.roblox.com/docs/tutorials/curriculums/core",
  "why": "Build, script, and publish your first full game.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Education hub",
  "url": "https://create.roblox.com/docs/education",
  "why": "Roblox for educators and structured classroom lessons.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Client-server runtime",
  "url": "https://create.roblox.com/docs/projects/client-server",
  "why": "How replication and the client-server boundary work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Engagement-based design",
  "url": "https://create.roblox.com/docs/production/game-design",
  "why": "Official game design guides: onboarding, retention, and monetization design.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Creator Dashboard",
  "url": "https://create.roblox.com/dashboard/creations",
  "why": "Manage experiences, assets, analytics, and payouts.",
  "type": "tool"
 },
 {
  "category": "Official docs",
  "name": "Roblox Creator Roadmap",
  "url": "https://create.roblox.com/roadmap",
  "why": "See what Roblox is building next for creators.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Roblox Status",
  "url": "https://status.roblox.com",
  "why": "Check outages before debugging your own code.",
  "type": "tool"
 },
 {
  "category": "Official docs",
  "name": "Roblox Creator Hub YouTube",
  "url": "https://www.youtube.com/@RobloxCreatorHub",
  "why": "Official creator videos, RDC talks, and feature walkthroughs.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Roblox Developers on X",
  "url": "https://x.com/Roblox_Dev",
  "why": "Official creator news and feature announcements.",
  "type": "community"
 },
 {
  "category": "Official docs",
  "name": "Luau GitHub",
  "url": "https://github.com/luau-lang/luau",
  "why": "Source of the Luau compiler, VM, and type checker.",
  "type": "tool"
 },
 {
  "category": "Official docs",
  "name": "Luau RFCs",
  "url": "https://github.com/luau-lang/rfcs",
  "why": "Follow upcoming language features before they ship.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Roblox Lua Style Guide",
  "url": "https://roblox.github.io/lua-style-guide/",
  "why": "Roblox's internal style guide for consistent Luau.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Roblox Creator Terms of Use",
  "url": "https://en.help.roblox.com/hc/en-us/articles/115004647846",
  "why": "Know the rules before monetizing or publishing.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Roblox Community Standards",
  "url": "https://about.roblox.com/community-standards",
  "why": "What content is allowed in experiences.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official docs",
  "name": "Maturity & compliance questionnaire",
  "url": "https://create.roblox.com/docs/production/promotion/content-maturity",
  "why": "Get your content maturity label right for discovery.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official updates",
  "name": "DevForum Announcements",
  "url": "https://devforum.roblox.com/c/updates/announcements/36",
  "why": "Official release notes and platform changes.",
  "type": "community"
 },
 {
  "category": "Official updates",
  "name": "DevForum: Updates category",
  "url": "https://devforum.roblox.com/c/updates/45",
  "why": "Parent hub for all official update posts.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official updates",
  "name": "DevForum: Release Notes category",
  "url": "https://devforum.roblox.com/c/updates/release-notes/62",
  "why": "Weekly engine release notes.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official updates",
  "name": "DevForum: Community events by Roblox staff",
  "url": "https://devforum.roblox.com/c/resources/roblox-staff/278",
  "why": "Staff-run resources and events.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official updates",
  "name": "Roblox Newsroom",
  "url": "https://corp.roblox.com/newsroom",
  "why": "Company announcements and RDC news.",
  "type": "tutorial/docs"
 },
 {
  "category": "Official open source",
  "name": "Roblox on GitHub",
  "url": "https://github.com/Roblox",
  "why": "All of Roblox Corporation's public repositories.",
  "type": "community"
 },
 {
  "category": "Official open source",
  "name": "React Luau",
  "url": "https://github.com/Roblox/react-luau",
  "why": "Roblox's official React 17 port used by the Roblox app itself.",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "Rodux",
  "url": "https://github.com/Roblox/rodux",
  "why": "Redux-style predictable state management for Luau.",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "Roact-Rodux",
  "url": "https://github.com/Roblox/roact-rodux",
  "why": "Connect Rodux stores to Roact/React components.",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "Jest Roblox",
  "url": "https://github.com/Roblox/jest-roblox",
  "why": "Official Jest-style test runner for Luau.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Foreman",
  "url": "https://github.com/Roblox/foreman",
  "why": "Roblox's toolchain manager for CLI tools.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Tarmac",
  "url": "https://github.com/Roblox/tarmac",
  "why": "Upload and reference image assets from your repo.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Roblox Blender plugin",
  "url": "https://github.com/Roblox/roblox-blender-plugin",
  "why": "Upload assets straight from Blender via Open Cloud.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Studio MCP server",
  "url": "https://github.com/Roblox/studio-rust-mcp-server",
  "why": "Connect AI assistants to Roblox Studio via MCP. (Archived, still widely referenced.)",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Studio agent plugin",
  "url": "https://github.com/Roblox/roblox-studio-agent-plugin",
  "why": "Official plugin that lets AI coding agents work inside Studio.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Avatar templates",
  "url": "https://github.com/Roblox/avatar",
  "why": "Official avatar body and clothing templates.",
  "type": "asset"
 },
 {
  "category": "Official open source",
  "name": "Gear source",
  "url": "https://github.com/Roblox/gear",
  "why": "Source for classic Roblox gear: great tool examples.",
  "type": "asset"
 },
 {
  "category": "Official open source",
  "name": "Signals",
  "url": "https://github.com/Roblox/signals",
  "why": "Roblox's declarative reactive state library.",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "Dash",
  "url": "https://github.com/Roblox/dash",
  "why": "Core Luau utility functions used inside Roblox.",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "js-to-lua",
  "url": "https://github.com/Roblox/js-to-lua",
  "why": "Convert JavaScript/TypeScript code to Luau.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "rocale-cli",
  "url": "https://github.com/Roblox/rocale-cli",
  "why": "Build, upload, and run projects against Open Cloud Luau Execution.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Cube (3D foundation model)",
  "url": "https://github.com/Roblox/cube",
  "why": "Roblox's open 3D generation model research.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Sentinel",
  "url": "https://github.com/Roblox/Sentinel",
  "why": "Roblox's open safety toolkit for detecting harmful text patterns.",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "TestEZ (archived)",
  "url": "https://github.com/Roblox/testez",
  "why": "Classic BDD test framework still used by many libraries. (Archived, still widely referenced.)",
  "type": "tool"
 },
 {
  "category": "Official open source",
  "name": "Roact (archived)",
  "url": "https://github.com/Roblox/roact",
  "why": "Original declarative UI library; know it to read older code. (Archived, still widely referenced.)",
  "type": "library"
 },
 {
  "category": "Official open source",
  "name": "Open Game Eval",
  "url": "https://github.com/Roblox/open-game-eval",
  "why": "Roblox's open benchmark for evaluating AI on game-dev tasks.",
  "type": "tool"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: Roblox resources hub",
  "url": "https://builtbybit.com/resources/roblox/",
  "why": "The largest independent Roblox asset marketplace: game setups, scripts, maps, UI, VFX, and audio, free and paid.",
  "type": "marketplace"
 },
 {
  "name": "Creator Store",
  "category": "Marketplaces (BuiltByBit & peers)",
  "type": "tool",
  "url": "https://create.roblox.com/store",
  "why": "Official marketplace for models, plugins, audio, and meshes."
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: free Roblox resources",
  "url": "https://builtbybit.com/resources/roblox/scripts/free/",
  "why": "Free scripts and systems you can drop into a prototype.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: Roblox scripts",
  "url": "https://builtbybit.com/resources/roblox/scripts/",
  "why": "Ready-made combat, pet, robbery, and admin systems.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: game setups",
  "url": "https://builtbybit.com/resources/roblox/game-setups/",
  "why": "Complete game templates to learn from or launch.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: maps",
  "url": "https://builtbybit.com/resources/roblox/maps/",
  "why": "Fully built maps: cities, arenas, milsim, and stylized worlds.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: models",
  "url": "https://builtbybit.com/resources/roblox/models/",
  "why": "Model packs: nature, pets, props, and buildings.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: vehicles",
  "url": "https://builtbybit.com/resources/roblox/vehicles/",
  "why": "Cars, boats, aircraft, and emergency vehicles.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: weapons",
  "url": "https://builtbybit.com/resources/roblox/weapons/",
  "why": "Scripted guns, melee weapons, and weapon packs.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: clothing & morphs",
  "url": "https://builtbybit.com/resources/roblox/clothing/",
  "why": "Uniforms, accessories, and morphs for roleplay groups.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: graphics & UI",
  "url": "https://builtbybit.com/resources/categories/roblox-graphics-ui.61/",
  "why": "UI packs, icons, and HUD templates.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: animations & VFX",
  "url": "https://builtbybit.com/resources/roblox/animations-vfx/",
  "why": "Combat VFX, ability packs, and animation sets.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "BuiltByBit: audio",
  "url": "https://builtbybit.com/resources/roblox/audio/",
  "why": "SFX packs and music for Roblox games.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free Icon Pack (gvesster)",
  "url": "https://builtbybit.com/resources/free-icon-pack.54420/",
  "why": "Hugely popular free icon set for simulators and tycoons.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Roblox SFX Megapack",
  "url": "https://builtbybit.com/resources/roblox-sfx-megapack.102645/",
  "why": "Free, ready-to-use sound effect collection.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "100+ Combat VFX Asset Pack",
  "url": "https://builtbybit.com/resources/100-combat-vfx-asset-pack.115026/",
  "why": "Top-rated pack of hit, parry, and dash effects.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free Advanced Emote Wheel",
  "url": "https://builtbybit.com/resources/free-advanced-emote-wheel.96663/",
  "why": "Free radial emote menu system.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free Zone/Region Indicator",
  "url": "https://builtbybit.com/resources/free-zone-region-indicator.83011/",
  "why": "Free area-name popup when players enter zones.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free RNG Rolling System",
  "url": "https://builtbybit.com/resources/free-rng-rolling-system.69747/",
  "why": "Free RNG/aura rolling system template.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free Realistic Water Boat System",
  "url": "https://builtbybit.com/resources/free-realistic-water-boat-system.69658/",
  "why": "Free buoyant boat system.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Tower Defense UI",
  "url": "https://builtbybit.com/resources/tower-defense-ui.58820/",
  "why": "UI kit for tower defense games.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Free Starter Cool UI",
  "url": "https://builtbybit.com/resources/free-starter-cool-ui.124739/",
  "why": "Free starter UI pack.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "gvesster on itch.io",
  "url": "https://gvesster.itch.io/free-icon-pack",
  "why": "The same free icon pack, mirrored on itch.io.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "itch.io: Roblox-tagged assets",
  "url": "https://itch.io/game-assets/tag-roblox",
  "why": "Indie asset packs made for or compatible with Roblox.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "itch.io: free game assets",
  "url": "https://itch.io/game-assets/free",
  "why": "Huge pool of free 2D, 3D, and audio assets.",
  "type": "marketplace"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Creator Store: plugins",
  "url": "https://create.roblox.com/store/plugins",
  "why": "Official store for Studio plugins.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Creator Store: models",
  "url": "https://create.roblox.com/store/models",
  "why": "Official store for models; vet scripts in free models.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Creator Store: audio",
  "url": "https://create.roblox.com/store/audio",
  "why": "Licensed music and sound effects cleared for Roblox use.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Creator Store: fonts",
  "url": "https://create.roblox.com/store/fonts",
  "why": "Fonts available to TextLabels.",
  "type": "asset"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Selling on the Creator Store",
  "url": "https://create.roblox.com/docs/production/sell-on-creator-store",
  "why": "How to sell your own plugins and models for USD.",
  "type": "tutorial/docs"
 },
 {
  "category": "Marketplaces (BuiltByBit & peers)",
  "name": "Sketchfab: Roblox tag",
  "url": "https://sketchfab.com/tags/roblox",
  "why": "3D models tagged for Roblox; check licenses.",
  "type": "marketplace"
 },
 {
  "category": "Studio plugins",
  "name": "Moon Animator 2",
  "url": "https://create.roblox.com/store/asset/4725618216",
  "why": "The most popular advanced animation editor: keyframes, easing, cameras, and more.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Building Tools by F3X",
  "url": "https://create.roblox.com/store/asset/144950355",
  "why": "Fast, precise building tools loved by builders for a decade.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Eclipse Animator",
  "url": "https://create.roblox.com/store/asset/86116556258301",
  "why": "Free, highly rated animation editor with a modern workflow.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Archimedes",
  "url": "https://create.roblox.com/store/asset/144938633",
  "why": "Build smooth arcs and circles from parts in one click.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Part to Terrain",
  "url": "https://create.roblox.com/store/asset/261634767",
  "why": "Convert parts into smooth terrain for natural maps.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "RigEdit Lite",
  "url": "https://create.roblox.com/store/asset/1274343708",
  "why": "Create and edit animation rigs and Motor6D joints.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Rig Editor",
  "url": "https://create.roblox.com/store/asset/2908380847",
  "why": "Create custom rigs by editing joints and bones visually.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "AutoScale Lite",
  "url": "https://create.roblox.com/store/asset/1496745047",
  "why": "Convert UI to Scale and add aspect-ratio constraints for every screen.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant GapFill & Extrude",
  "url": "https://create.roblox.com/store/asset/165687726",
  "why": "Fill gaps between edges and extrude surfaces cleanly.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant ResizeAlign",
  "url": "https://create.roblox.com/store/asset/165534573",
  "why": "Align part faces precisely by resizing to meet each other.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant Model Reflect",
  "url": "https://create.roblox.com/store/asset/217792838",
  "why": "Mirror models across a plane for symmetrical builds.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant Redupe",
  "url": "https://create.roblox.com/store/asset/73064993918325",
  "why": "Repeat-duplicate objects in geometric patterns: rings, grids, stairs.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant Quick Stairs",
  "url": "https://create.roblox.com/store/asset/6917372104",
  "why": "Generate staircases between two points instantly.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Stravant MaterialFlip",
  "url": "https://create.roblox.com/store/asset/166951203",
  "why": "Rotate material grain direction on parts.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "RBXMonkey (Blender animations)",
  "url": "https://create.roblox.com/store/asset/16708835782",
  "why": "Import Blender animations into Roblox for free.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Blender rig exporter/animation importer",
  "url": "https://create.roblox.com/store/asset/716953901",
  "why": "Export rigs to Blender and bring animations back.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Brushtool 2.1",
  "url": "https://create.roblox.com/store/asset/2268520847",
  "why": "Paint clones of trees, rocks, and props onto your map.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Avatar Importer",
  "url": "https://create.roblox.com/store/asset/1921957669",
  "why": "Import any Roblox avatar as a rig for cutscenes or NPCs.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Selection To Camera",
  "url": "https://create.roblox.com/store/asset/15142310521",
  "why": "Move the selection in front of the Studio camera.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Weld (Ozzypig)",
  "url": "https://create.roblox.com/store/asset/148570182",
  "why": "Weld parts and tools together quickly.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Tag Editor",
  "url": "https://create.roblox.com/store/asset/948084095",
  "why": "Visual editor for CollectionService tags.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Rojo plugin",
  "url": "https://create.roblox.com/store/asset/13916111004",
  "why": "Studio side of Rojo: sync your file system into Studio.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Reclass classic",
  "url": "https://create.roblox.com/store/asset/2867765019",
  "why": "Change an instance's class while keeping properties and children.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "DataStore Editor (sleitnick)",
  "url": "https://create.roblox.com/store/asset/701506235",
  "why": "View and edit DataStore entries from Studio.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Color Adjust",
  "url": "https://create.roblox.com/store/asset/4519120204",
  "why": "Shift hue, saturation, and brightness on many parts at once.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "VFX Suite",
  "url": "https://create.roblox.com/store/asset/14328968969",
  "why": "Better emit, preview, and tweak tools for ParticleEmitters.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "VFX Editor",
  "url": "https://create.roblox.com/store/asset/18800449515",
  "why": "All-in-one tool for building visual effects.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Tabby importer",
  "url": "https://create.roblox.com/store/asset/14025724075",
  "why": "Import player outfits and marketplace items into Studio.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "GUI Copilot",
  "url": "https://create.roblox.com/store/asset/12241164223",
  "why": "Quick bulk edits for GUI elements.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Simple Bezier Road Creator",
  "url": "https://create.roblox.com/store/asset/12003902090",
  "why": "Lay out curved roads with Bézier handles.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "IK Rig Plugin",
  "url": "https://create.roblox.com/store/asset/71450312412201",
  "why": "Blender-style IK posing directly inside Studio.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "Studio Tweaks",
  "url": "https://devforum.roblox.com/t/studio-tweaks-disable-selection-box-disable-ui-editor-anchor-new-parts-show-selection-faces-and-more/735827",
  "why": "Restyle Studio icons and themes.",
  "type": "plugin"
 },
 {
  "category": "Studio plugins",
  "name": "AutoVehicle (vehicle rigging plugin)",
  "url": "https://devforum.roblox.com/t/autovehicle-automatic-vehicle-rigging-plugin/825198",
  "why": "Open AI-driven vehicle traffic.",
  "type": "plugin"
 },
 {
  "name": "Rojo",
  "category": "Tools",
  "type": "tool",
  "url": "https://rojo.space",
  "why": "Sync code between your editor and Studio with a Git-friendly workflow."
 },
 {
  "name": "Rokit",
  "category": "Tools",
  "type": "tool",
  "url": "https://github.com/rojo-rbx/rokit",
  "why": "Toolchain manager that pins Rojo, Wally, Selene, and more per project."
 },
 {
  "name": "Wally",
  "category": "Tools",
  "type": "tool",
  "url": "https://wally.run",
  "why": "Package manager for Roblox and Luau libraries."
 },
 {
  "name": "luau-lsp",
  "category": "Tools",
  "type": "tool",
  "url": "https://github.com/JohnnyMorganz/luau-lsp",
  "why": "Language server with autocomplete and type checking for Luau."
 },
 {
  "name": "Selene",
  "category": "Tools",
  "type": "tool",
  "url": "https://github.com/Kampfkarren/selene",
  "why": "Linter that catches bugs and bad patterns in Luau code."
 },
 {
  "name": "StyLua",
  "category": "Tools",
  "type": "tool",
  "url": "https://github.com/JohnnyMorganz/StyLua",
  "why": "Automatic code formatter for a consistent team style."
 },
 {
  "name": "roblox-ts",
  "category": "Tools",
  "type": "tool",
  "url": "https://roblox-ts.com",
  "why": "Write Roblox games in TypeScript, compiled to Luau."
 },
 {
  "name": "Lune",
  "category": "Tools",
  "type": "tool",
  "url": "https://github.com/lune-org/lune",
  "why": "Standalone Luau runtime for scripts and build automation."
 },
 {
  "category": "Tools",
  "name": "Rojo on GitHub",
  "url": "https://github.com/rojo-rbx/rojo",
  "why": "Source, issues, and releases for Rojo.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Rojo VS Code extension",
  "url": "https://github.com/rojo-rbx/vscode-rojo",
  "why": "Start and manage Rojo from VS Code.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "rbx-dom",
  "url": "https://github.com/rojo-rbx/rbx-dom",
  "why": "Rust libraries to read and write Roblox place and model files.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Argon",
  "url": "https://github.com/argon-rbx/argon",
  "why": "Full-featured two-way sync tool and alternative to Rojo.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Azul",
  "url": "https://github.com/Ransomwave/azul",
  "why": "Studio-first two-way sync between Studio and your editor.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Lync",
  "url": "https://github.com/Iron-Stag-Games/Lync",
  "why": "Fast file sync tool with Lune-powered build scripts.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Pesde",
  "url": "https://github.com/pesde-pkg/pesde",
  "why": "Luau package manager supporting Roblox, Lune, and more.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Aftman",
  "url": "https://github.com/LPGhatguy/aftman",
  "why": "Earlier toolchain manager still found in many projects. (Archived, still widely referenced.)",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "darklua",
  "url": "https://github.com/seaofvoices/darklua",
  "why": "Transform and bundle Luau code with rules (e.g. require paths).",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Moonwave",
  "url": "https://github.com/evaera/moonwave",
  "why": "Generate documentation websites from Luau doc comments.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Mantle",
  "url": "https://github.com/blake-mealey/mantle",
  "why": "Infrastructure-as-code deployments for Roblox experiences.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "rbxcloud",
  "url": "https://github.com/Sleitnick/rbxcloud",
  "why": "CLI and Rust library for Open Cloud APIs.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Asphalt",
  "url": "https://github.com/jackTabsCode/asphalt",
  "why": "Upload images and sounds from your repo and reference them in code.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "wally-package-types",
  "url": "https://github.com/JohnnyMorganz/wally-package-types",
  "why": "Fix type exports for Wally packages in luau-lsp.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "luau-lsp.nvim",
  "url": "https://github.com/lopi-py/luau-lsp.nvim",
  "why": "Best-in-class Luau support for Neovim.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Lute",
  "url": "https://github.com/luau-lang/lute",
  "why": "Official standalone Luau runtime for general-purpose scripting.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Zune",
  "url": "https://github.com/Scythe-Technology/zune",
  "why": "Fast standalone Luau runtime written in Zig.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "seal",
  "url": "https://github.com/seal-runtime/seal",
  "why": "Cross-platform Luau runtime for scripting and automation.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "rbxmk",
  "url": "https://github.com/Anaminus/rbxmk",
  "why": "Process and generate Roblox files from scripts.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Roblox-File-Format (C#)",
  "url": "https://github.com/MaximumADHD/Roblox-File-Format",
  "why": "C# library for reading and writing Roblox files.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Roblox Studio Mod Manager",
  "url": "https://github.com/MaximumADHD/Roblox-Studio-Mod-Manager",
  "why": "Custom Studio bootstrapper with FFlag and file overrides.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Vinegar",
  "url": "https://github.com/vinegarhq/vinegar",
  "why": "Run Roblox Studio on Linux.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Bloxstrap",
  "url": "https://github.com/bloxstraplabs/bloxstrap",
  "why": "Open-source Roblox launcher with extra settings and logs.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "OpenCloudTools",
  "url": "https://github.com/jlwitthuhn/OpenCloudTools",
  "why": "Desktop GUI for DataStores and MemoryStores via Open Cloud.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Transparent Pixel Fix",
  "url": "https://github.com/Corecii/Transparent-Pixel-Fix",
  "why": "Remove black edges on scaled transparent images.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "roblox-ts types",
  "url": "https://github.com/roblox-ts/types",
  "why": "Typings for the whole Roblox API in TypeScript.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "roblox-cs",
  "url": "https://github.com/roblox-csharp/roblox-cs",
  "why": "C# to Luau transpiler for Roblox.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Flipbook",
  "url": "https://github.com/flipbook-labs/flipbook",
  "why": "Storybook plugin to preview UI components in isolation.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "UI Labs",
  "url": "https://ui-labs-roblox.github.io/ui-labs-docs/",
  "why": "Storybook for Roblox UI: React, Fusion, Vide, and more.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Hoarcekat",
  "url": "https://github.com/Kampfkarren/hoarcekat",
  "why": "Lightweight storybook for previewing Roact/React components.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Codify",
  "url": "https://devforum.roblox.com/t/codify-convert-anything-to-luau-typescript-vide-fusion-react-rojo-and-more/473076",
  "why": "Convert instances into Luau, React, Fusion, or Rojo code.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Roblox Studio MCP (community)",
  "url": "https://github.com/Chrrxs/robloxstudio-mcp",
  "why": "MCP server for AI-driven playtesting and debugging in Studio.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "rbxts project template (create-roblox-ts)",
  "url": "https://github.com/roblox-ts/create-roblox-ts",
  "why": "Scaffold new roblox-ts projects.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Roblox API Dump (MaximumADHD)",
  "url": "https://github.com/MaximumADHD/Roblox-Client-Tracker",
  "why": "Tracks every client build and API change.",
  "type": "tool"
 },
 {
  "category": "Tools",
  "name": "Roblox Web APIs list",
  "url": "https://github.com/matthewdean/roblox-web-apis",
  "why": "Unofficial index of Roblox web API endpoints.",
  "type": "tool"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Knit",
  "url": "https://github.com/Sleitnick/Knit",
  "why": "Lightweight services/controllers framework many games start with. (Archived, still widely referenced.)",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Nevermore Engine",
  "url": "https://github.com/Quenty/NevermoreEngine",
  "why": "Huge battle-tested collection of modules and a loader.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Flamework",
  "url": "https://github.com/rbxts-flamework/core",
  "why": "Decorator-based framework with dependency injection for roblox-ts.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Prvd 'M Wrong",
  "url": "https://github.com/welcomestohell/prvdmwrong",
  "why": "Type-safe provider framework with lifecycle hooks.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Matter",
  "url": "https://github.com/matter-ecs/matter",
  "why": "ECS with a great debugger and hot reloading.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "ECR",
  "url": "https://github.com/centau/ecr",
  "why": "Sparse-set ECS optimized for Luau.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Planck",
  "url": "https://github.com/YetAnotherClown/planck",
  "why": "Agnostic ECS scheduler with phases and pipelines.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Replecs",
  "url": "https://github.com/PepeElToro41/replecs",
  "why": "Fine-grained replication for jecs worlds.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "ecs-lua",
  "url": "https://github.com/nidorx/ecs-lua",
  "why": "Fast, easy ECS engine for Lua and Roblox.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Charm",
  "url": "https://github.com/littensy/charm",
  "why": "Atomic state management with selectors and sync.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Reflex",
  "url": "https://github.com/littensy/reflex",
  "why": "All-in-one state container inspired by Redux Toolkit.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "Lumine/CanaryEngine",
  "url": "https://devforum.roblox.com/t/lumin-framework-a-lightning-fast-efficient-framework/2189347",
  "why": "Lightweight framework with fast networking built in.",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "AeroGameFramework (archived)",
  "url": "https://github.com/Sleitnick/AeroGameFramework",
  "why": "Classic framework that inspired Knit; useful to read legacy code. (Archived, still widely referenced.)",
  "type": "library"
 },
 {
  "category": "Frameworks & architecture",
  "name": "WCS combat framework",
  "url": "https://devforum.roblox.com/t/25-wcs-a-combat-system-framework/2843521",
  "why": "Framework for skills, status effects, and movesets.",
  "type": "library"
 },
 {
  "name": "RbxUtil (Sleitnick)",
  "category": "Libraries",
  "type": "tool",
  "url": "https://github.com/Sleitnick/RbxUtil",
  "why": "Battle-tested modules: Signal, Trove, Component, TableUtil."
 },
 {
  "name": "Fusion",
  "category": "Libraries",
  "type": "tool",
  "url": "https://elttob.uk/Fusion/",
  "why": "Reactive UI library for complex interfaces."
 },
 {
  "name": "ProfileService",
  "category": "Libraries",
  "type": "tool",
  "url": "https://github.com/MadStudioRoblox/ProfileService",
  "why": "Robust player data with session locking."
 },
 {
  "name": "jecs",
  "category": "Libraries",
  "type": "tool",
  "url": "https://github.com/Ukendio/jecs",
  "why": "Fast ECS framework for games with lots of entities."
 },
 {
  "name": "Blink",
  "category": "Libraries",
  "type": "tool",
  "url": "https://github.com/1Axen/blink",
  "why": "Network IDL compiler for type-safe, efficient remotes."
 },
 {
  "category": "Libraries",
  "name": "Promise (evaera)",
  "url": "https://github.com/evaera/roblox-lua-promise",
  "why": "The standard Promise implementation for async Luau.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Janitor",
  "url": "https://github.com/howmanysmall/Janitor",
  "why": "Clean up connections and instances to stop memory leaks.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "GoodSignal",
  "url": "https://devforum.roblox.com/t/lua-signal-class-comparison-optimal-goodsignal-class/1387063",
  "why": "Benchmarked, widely copied signal class.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "t (runtime typechecker)",
  "url": "https://github.com/osyrisrblx/t",
  "why": "Validate remote arguments and config at runtime.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Sift",
  "url": "https://github.com/cxmeel/sift",
  "why": "Immutable table utilities for Luau.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Typeforge",
  "url": "https://github.com/typeforge-luau/typeforge",
  "why": "Utility type functions for advanced Luau typing.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "spr",
  "url": "https://github.com/fraktality/spr",
  "why": "Small, fast spring animation library.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "msgpack-luau",
  "url": "https://github.com/cipharius/msgpack-luau",
  "why": "MessagePack binary serialization in pure Luau.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Base64 (Reselim)",
  "url": "https://github.com/Reselim/Base64",
  "why": "Fast Base64 encoding and decoding.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "FormatNumber",
  "url": "https://devforum.roblox.com/t/311-formatnumber-a-module-for-formatting-numbers/527979",
  "why": "Abbreviate and localize numbers like 1.2K and 3.4M.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "PartCache",
  "url": "https://devforum.roblox.com/t/partcache-for-all-your-quick-part-creation-needs/246641",
  "why": "Pool parts for bullets and effects instead of creating new ones.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "BoatTween",
  "url": "https://devforum.roblox.com/t/boattween-module/540277",
  "why": "Tweens with more easing styles and controls than TweenService.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Tween+",
  "url": "https://devforum.roblox.com/t/v2-tween-advanced-performant-tweening/3599638",
  "why": "Advanced, performant tweening with more control.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Signal+",
  "url": "https://devforum.roblox.com/t/signal-super-fast-elegant-signals/3552231",
  "why": "Super fast, elegant signal implementation.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "CanvasDraw",
  "url": "https://devforum.roblox.com/t/canvasdraw-a-fast-and-powerful-graphics-library-draw-pixels-lines-triangles-readmodify-image-data-and-much-more/1624633",
  "why": "Pixel-level drawing on EditableImage.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "BehaviorTrees3 + visual editor",
  "url": "https://devforum.roblox.com/t/behaviortrees3-btrees-visual-editor-v30/836158",
  "why": "Behavior trees for NPC AI with a node editor.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "SimplePath",
  "url": "https://github.com/ahmicy/simplepath",
  "why": "Simple, robust pathfinding wrapper for NPCs.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Fiu",
  "url": "https://github.com/rce-incorporated/Fiu",
  "why": "Luau bytecode interpreter written in Luau.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Zlib/Deflate compression",
  "url": "https://devforum.roblox.com/t/string-compression-zlibdeflate/755687",
  "why": "Compress strings before saving or sending.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "RbxCameraShaker",
  "url": "https://github.com/Sleitnick/RbxCameraShaker",
  "why": "EZ Camera Shake ported to Roblox.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "ZonePlus",
  "url": "https://github.com/1ForeverHD/ZonePlus",
  "why": "Detect players and parts entering and leaving zones.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "QuickZone",
  "url": "https://github.com/LDGerrits/QuickZone",
  "why": "Physics-free spatial queries for very many zones.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Nature2D",
  "url": "https://github.com/jaipack17/Nature2D",
  "why": "2D physics engine for UI elements.",
  "type": "library"
 },
 {
  "category": "Libraries",
  "name": "Justice NPC system",
  "url": "https://devforum.roblox.com/t/justice-the-awesome-npc-system/1026927",
  "why": "Combat NPC AI example.",
  "type": "asset"
 },
 {
  "category": "Libraries",
  "name": "Advanced inventory system (open source)",
  "url": "https://devforum.roblox.com/t/open-source-advanced-inventory-system/511932",
  "why": "Open-source inventory to adapt.",
  "type": "asset"
 },
 {
  "category": "UI",
  "name": "Vide",
  "url": "https://github.com/centau/vide",
  "why": "Reactive Luau UI library with a tiny API.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Iris",
  "url": "https://github.com/SirMallard/Iris",
  "why": "Immediate-mode debug UI based on Dear ImGui.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "React Lua (jsdotlua)",
  "url": "https://github.com/jsdotlua/react-lua",
  "why": "Community distribution of React for Roblox.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "rbxts-react typings",
  "url": "https://github.com/littensy/rbxts-react",
  "why": "TypeScript definitions for React Lua.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "pretty-react-hooks",
  "url": "https://github.com/littensy/pretty-react-hooks",
  "why": "Useful hooks for React on Roblox.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "OnyxUI",
  "url": "https://github.com/loneka/onyx-ui",
  "why": "Customizable component library for Fusion.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "PluginEssentials",
  "url": "https://github.com/mvyasu/PluginEssentials",
  "why": "Studio-styled Fusion components for plugins.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "StudioComponents",
  "url": "https://github.com/sircfenner/StudioComponents",
  "why": "React versions of Studio's own widgets for plugins.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "TopbarPlus",
  "url": "https://github.com/1ForeverHD/TopbarPlus",
  "why": "Build topbar icons with dropdowns, menus, and themes.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Satchel",
  "url": "https://github.com/ryanlua/satchel",
  "why": "Modern, customizable replacement for the default backpack.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Purse",
  "url": "https://github.com/ryanlua/purse",
  "why": "CoreGui-decoupled default backpack you can modify.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Charmed icons",
  "url": "https://github.com/littensy/charmed-icons",
  "why": "Icon theme for Roblox project files in your editor.",
  "type": "tool"
 },
 {
  "category": "UI",
  "name": "Text+",
  "url": "https://devforum.roblox.com/t/text-custom-fonts-advanced-control/3521684",
  "why": "Custom fonts and per-character text control.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Screen3D",
  "url": "https://devforum.roblox.com/t/screen3d-a-3d-ui-framework-that-just-works/3273671",
  "why": "3D UI framework that converts 2D UI to depth.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "ezVisualz",
  "url": "https://devforum.roblox.com/t/ezvisualz-uigradient-and-uistroke-effects-made-easy/2470313",
  "why": "Easy UIGradient and UIStroke effects.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "UIStrokeAdjuster",
  "url": "https://devforum.roblox.com/t/uistrokeadjuster-properly-scale-your-uistrokes/1889014",
  "why": "Scale UIStroke thickness with screen size.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Circular/Radial Progress",
  "url": "https://devforum.roblox.com/t/circularradial-progress/454443",
  "why": "Radial progress bars for cooldowns and timers.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "SliderService",
  "url": "https://devforum.roblox.com/t/sliderservice-create-easy-and-functional-sliders/1597785",
  "why": "Functional sliders for settings menus.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "UI Blur",
  "url": "https://devforum.roblox.com/t/ui-blur-automatic/2402850",
  "why": "Automatic frosted-glass blur behind UI.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "rParticle",
  "url": "https://devforum.roblox.com/t/rparticle-the-light-weight-open-source-gui-particle-system/680038",
  "why": "Lightweight particle system for 2D UI.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Proximity Prompt Customizer",
  "url": "https://devforum.roblox.com/t/proximity-prompt-customizer/1663458",
  "why": "Restyle ProximityPrompts without rewriting them.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "ViewportFrame Model Fitter",
  "url": "https://devforum.roblox.com/t/viewportframe-model-fitter/1345611",
  "why": "Frame any model perfectly in a ViewportFrame.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "GridPack",
  "url": "https://devforum.roblox.com/t/gridpack-create-gridtetris-style-inventories/2891897",
  "why": "Grid/Tetris-style inventory UI.",
  "type": "library"
 },
 {
  "category": "UI",
  "name": "Plum's minimap",
  "url": "https://devforum.roblox.com/t/plums-minimap-rotating-map-bordersnapping-blips-and-more/986298",
  "why": "Rotating minimap with border-snapping blips.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Zap",
  "url": "https://github.com/red-blox/zap",
  "why": "IDL that generates fast, typed buffer networking code.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "ByteNet",
  "url": "https://github.com/ffrostfall/ByteNet",
  "why": "Buffer-serialized networking with strict types.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "RbxNet",
  "url": "https://github.com/roblox-aurora/rbx-net",
  "why": "Multi-language networking framework for Luau and TS.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Warp",
  "url": "https://github.com/imezx/warp",
  "why": "Very fast, lightweight networking library.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Packet",
  "url": "https://devforum.roblox.com/t/packet-networking-library/3573907",
  "why": "Modern networking library with buffer packing.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "BridgeNet2",
  "url": "https://devforum.roblox.com/t/bridgenet2-v100-a-blazing-fast-networking-library-for-roblox/2189165",
  "why": "Blazing fast remote wrapper with batching.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Replica",
  "url": "https://devforum.roblox.com/t/replica-server-to-client-state-replication-module/3216980",
  "why": "Server-to-client state replication from the ProfileStore author.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "ReplicaService",
  "url": "https://github.com/MadStudioRoblox/ReplicaService",
  "why": "Selective state replication, pairs well with ProfileService.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Chickynoid",
  "url": "https://devforum.roblox.com/t/chickynoid-server-authoritative-character-replacement/1660558",
  "why": "Server-authoritative character controller with rollback.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Chrono",
  "url": "https://devforum.roblox.com/t/chrono-drop-in-custom-physics-replication-library/3873294",
  "why": "Drop-in custom physics replication.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "BetterReplication",
  "url": "https://devforum.roblox.com/t/betterreplication-vastly-improve-your-combat-experience-by-fighting-lag/3260027",
  "why": "Reduce perceived lag in combat games.",
  "type": "library"
 },
 {
  "category": "Networking",
  "name": "Packet Profiler",
  "url": "https://devforum.roblox.com/t/packet-profiler-easily-measure-all-of-your-remotes/1890924",
  "why": "Measure bandwidth for every remote.",
  "type": "plugin"
 },
 {
  "category": "Networking",
  "name": "How we reduced bandwidth 60x (Astro Force)",
  "url": "https://devforum.roblox.com/t/how-we-reduced-bandwidth-usage-by-60x-in-astro-force-roblox-rts/1202300",
  "why": "Real-world case study in network optimization.",
  "type": "tutorial/docs"
 },
 {
  "category": "Networking",
  "name": "RoSocket",
  "url": "https://github.com/RoSocket/rosocket",
  "why": "WebSocket support via a relay server.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "ProfileStore",
  "url": "https://github.com/MadStudioRoblox/ProfileStore",
  "why": "Session-locked player data saving: successor to ProfileService.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "Lyra",
  "url": "https://github.com/paradoxum-games/lyra",
  "why": "Player data with migrations, transactions, and validation.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "Lapis",
  "url": "https://github.com/nezuo/lapis",
  "why": "DataStore abstraction with session locking and migrations.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "DocumentService",
  "url": "https://github.com/anthony0br/DocumentService",
  "why": "Schema-based, session-locked datastore library.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "DataKeep",
  "url": "https://github.com/noahrepublic/DataKeep",
  "why": "Promise-based auto-saving DataStore library.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "Suphi's DataStore Module",
  "url": "https://devforum.roblox.com/t/suphis-datastore-module/2425597",
  "why": "Modern session-locked alternative to DataStore2.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "DataStore2",
  "url": "https://kampfkarren.github.io/Roblox/",
  "why": "Classic caching DataStore wrapper; common in older games.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "DataDelve",
  "url": "https://github.com/pinehappi/DataDelve",
  "why": "Free graphical DataStore editor.",
  "type": "tool"
 },
 {
  "category": "Data",
  "name": "Free DataStore Editor",
  "url": "https://devforum.roblox.com/t/an-alternative-cheap-datastore-editor-plugin-thousands-of-installs-available-on-github/894063",
  "why": "Cheap open alternative for editing DataStores.",
  "type": "plugin"
 },
 {
  "category": "Data",
  "name": "PlayFab Luau SDK",
  "url": "https://github.com/BrookenRecord/playfab-luau",
  "why": "Use PlayFab backend services from Luau.",
  "type": "library"
 },
 {
  "category": "Data",
  "name": "Details on DataStoreService for advanced devs",
  "url": "https://devforum.roblox.com/t/details-on-datastoreservice-for-advanced-developers/175804",
  "why": "Deep dive into limits, throttling, and caching.",
  "type": "tutorial/docs"
 },
 {
  "category": "Data",
  "name": "Stop using SetAsync() to save player data",
  "url": "https://devforum.roblox.com/t/stop-using-setasync-to-save-player-data/276457",
  "why": "Why UpdateAsync prevents data loss.",
  "type": "tutorial/docs"
 },
 {
  "category": "Data",
  "name": "Saving data on server close",
  "url": "https://devforum.roblox.com/t/how-to-properly-save-player-data-in-data-stores-upon-server-close/313218",
  "why": "Use BindToClose correctly so data isn't lost.",
  "type": "tutorial/docs"
 },
 {
  "category": "Combat & physics",
  "name": "FastCast",
  "url": "https://devforum.roblox.com/t/making-a-combat-game-with-ranged-weapons-fastcast-may-be-the-module-for-you/133474",
  "why": "Projectile physics and hit detection without physics replication.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "FastCast2",
  "url": "https://devforum.roblox.com/t/fastcast2-an-improved-version-of-fastcast-with-parallel-scripting-more-extensions-and-statically-typed-a-powerful-modern-projectile-library/4093890",
  "why": "Parallel, typed successor to FastCast.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Raycast Hitbox",
  "url": "https://devforum.roblox.com/t/raycast-hitbox-401-for-all-your-melee-needs/374482",
  "why": "The go-to melee hit detection module.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "ShapecastHitbox",
  "url": "https://devforum.roblox.com/t/shapecasthitbox-for-all-your-melee-needs-v025/3624241",
  "why": "Modern shapecast-based melee hitboxes.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "ClientCast",
  "url": "https://devforum.roblox.com/t/v2-clientcast-a-client-based-hitbox-system/895217",
  "why": "Client-based hitboxes for responsive combat.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "HitboxClass",
  "url": "https://devforum.roblox.com/t/hitboxclass-v11b-a-powerful-oop-based-hitbox-module/2790395",
  "why": "OOP hitbox module for spatial queries.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Wall stick / gravity controller",
  "url": "https://devforum.roblox.com/t/wall-stickgravity-controller/432598",
  "why": "Walk on walls and custom gravity.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Physics character controllers guide",
  "url": "https://devforum.roblox.com/t/how-to-actually-use-robloxs-physics-character-controllers/3092097",
  "why": "Use Roblox's new physics-based controllers.",
  "type": "tutorial/docs"
 },
 {
  "category": "Combat & physics",
  "name": "R15 / Rthro ragdolls",
  "url": "https://devforum.roblox.com/t/r15-rthro-ragdolls/338580",
  "why": "Ragdolls for R15 and Rthro characters.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "VoxBreaker",
  "url": "https://devforum.roblox.com/t/voxbreaker-an-oop-voxel-destruction-module/2935099",
  "why": "Voxel-based destruction for parts.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Part fracturing system",
  "url": "https://devforum.roblox.com/t/part-fracturing-system-v3/690547",
  "why": "Shatter parts on impact.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "SmartBone 2",
  "url": "https://devforum.roblox.com/t/smartbone-2-simulated-physics-and-collision-solution-for-bones/2728928",
  "why": "Physics for bones: hair, capes, and tails.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Leg Controller (IK)",
  "url": "https://devforum.roblox.com/t/leg-controller-ik-included-a-quality-solution-to-leg-movement/2617356",
  "why": "Procedural leg IK for characters.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "CCDIKController",
  "url": "https://devforum.roblox.com/t/ccdikcontroller-alternate-inverse-kinematics-method-for-motor6d-rigs/968275",
  "why": "CCD inverse kinematics for Motor6D rigs.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Over-the-shoulder camera",
  "url": "https://devforum.roblox.com/t/over-the-shoulder-camera-system/728481",
  "why": "Third-person OTS camera for shooters.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "CameraService",
  "url": "https://devforum.roblox.com/t/cameraservice-a-new-camera-for-a-new-roblox/1988655",
  "why": "Customizable cross-platform camera system.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "SmoothShiftLock",
  "url": "https://devforum.roblox.com/t/smoothshiftlock-module/2180708",
  "why": "Smooth, customizable shift lock.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "EasyFirstPerson",
  "url": "https://devforum.roblox.com/t/easyfirstperson-drag-and-drop-first-person-view-models-updated-102026/1198782",
  "why": "Drag-and-drop first-person viewmodels.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Realism (Character-Realism)",
  "url": "https://github.com/MaximumADHD/Character-Realism",
  "why": "Head look and first-person body for immersion.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "A-Chassis",
  "url": "https://github.com/lisphm/A-Chassis",
  "why": "The most-used open vehicle chassis on Roblox.",
  "type": "library"
 },
 {
  "category": "Combat & physics",
  "name": "Nexus VR Character Model",
  "url": "https://github.com/TheNexusAvenger/Nexus-VR-Character-Model",
  "why": "Play as your full character in VR.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Wind Shake",
  "url": "https://devforum.roblox.com/t/wind-shake-high-performance-wind-effect-for-leaves-and-foliage/1039806",
  "why": "High-performance wind for leaves and foliage.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Lightning Beams",
  "url": "https://devforum.roblox.com/t/effect-v11-lightning-beams-seamless-smooth-and-procedurally-animated-with-beam-like-properties/843534",
  "why": "Procedural animated lightning.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Lumina particles",
  "url": "https://devforum.roblox.com/t/update-020-lumina-a-custom-particle-system/2963557",
  "why": "Custom particle system beyond ParticleEmitter.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Blood Engine",
  "url": "https://devforum.roblox.com/t/blood-engine-a-droplet-emitter-system/2545682",
  "why": "Droplet and splatter emitter.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Collideable Particles FX",
  "url": "https://devforum.roblox.com/t/collideable-particles-fx-v402-cleanup/2279402",
  "why": "Particles that collide with the world.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Lens flare system",
  "url": "https://devforum.roblox.com/t/lens-flare-system-easily-usable-by-builders-or-scripters/4021857",
  "why": "Drop-in lens flares for sun and lights.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "DistanceFade",
  "url": "https://devforum.roblox.com/t/distancefade-a-transparency-falloff-effect-for-your-games/3136828",
  "why": "Fade walls and barriers by distance.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "SkinnedGrass",
  "url": "https://devforum.roblox.com/t/skinnedgrass-performant-interactive-foliage/3364812",
  "why": "Performant interactive grass.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "3DSkybox",
  "url": "https://devforum.roblox.com/t/3dskybox-a-way-to-create-more-immersive-skyboxes-for-your-game/208760",
  "why": "Skyboxes with real 3D depth.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Rain module + plugin",
  "url": "https://devforum.roblox.com/t/rain-module-plugin/157190",
  "why": "Drop-in rain with splashes and sound.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Dynamic Weather Library",
  "url": "https://devforum.roblox.com/t/dynamic-weather-library-beta-10/1547614",
  "why": "Realistic weather simulation.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Yuruzuu's open source VFX",
  "url": "https://devforum.roblox.com/t/yuruzuus-open-source-vfx/1840021",
  "why": "Free anime-style VFX to learn from.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Moon2Cutscene",
  "url": "https://devforum.roblox.com/t/v2-moon2cutscene-play-moon-animator-2-files/3001411",
  "why": "Play Moon Animator camera files as cutscenes.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "CutsceneService",
  "url": "https://devforum.roblox.com/t/cutsceneservice-smooth-cutscenes-using-b%C3%A9zier-curves/718571",
  "why": "Smooth Bézier camera cutscenes.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "crunchyroll animation solver",
  "url": "https://github.com/ffrostfall/crunchyroll",
  "why": "Custom animation solver for advanced rigs.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "R6 IK + FK Blender rig",
  "url": "https://devforum.roblox.com/t/r6-ik-fk-blender-rig-v25/3586405",
  "why": "Animate R6 characters in Blender with IK.",
  "type": "asset"
 },
 {
  "category": "Animation & VFX",
  "name": "LampLight global illumination",
  "url": "https://devforum.roblox.com/t/lamplight-global-illumination-for-roblox-new-v12/1837877",
  "why": "Fake GI for richer lighting.",
  "type": "library"
 },
 {
  "category": "Animation & VFX",
  "name": "Elttob Relight",
  "url": "https://devforum.roblox.com/t/elttob-relight-%E2%80%94-laser-fast-light-painting/2923482",
  "why": "Fast light painting in Studio.",
  "type": "plugin"
 },
 {
  "category": "Animation & VFX",
  "name": "Volumetric Clouds",
  "url": "https://devforum.roblox.com/t/volumetric-clouds-phase-2/1230617",
  "why": "Roblox's dynamic cloud system explained.",
  "type": "tutorial/docs"
 },
 {
  "category": "Admin & moderation",
  "name": "Adonis",
  "url": "https://github.com/Epix-Incorporated/Adonis",
  "why": "Feature-rich admin and moderation system.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Kohl's Admin",
  "url": "https://github.com/kohls-admin/kohls-admin",
  "why": "Modern all-in-one experience management.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Cmdr",
  "url": "https://github.com/evaera/Cmdr",
  "why": "Type-safe, extensible developer command console.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Centurion",
  "url": "https://github.com/paradoxuum/centurion",
  "why": "Flexible command framework for roblox-ts and Luau.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Conch",
  "url": "https://github.com/alicesaidhi/conch",
  "why": "Developer console with its own scripting language.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Nexus Admin",
  "url": "https://github.com/TheNexusAvenger/Nexus-Admin",
  "why": "Admin system aimed at regular players.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Commander",
  "url": "https://devforum.roblox.com/t/commander-open-sourced-admin-panel/503290",
  "why": "Open-source admin panel with a clean UI.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Soft Shutdown script",
  "url": "https://devforum.roblox.com/t/soft-shutdown-script/47588",
  "why": "Move players to a new server when you update.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "SoftShutdown2",
  "url": "https://devforum.roblox.com/t/softshutdown2-%E2%80%94-shutdown-all-servers-with-peace-of-mind/1156844",
  "why": "Updated soft shutdown with a smoother flow.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Form Embedder",
  "url": "https://devforum.roblox.com/t/form-embedder-an-impossibly-simple-way-to-add-a-google-form-to-your-experience/2183701",
  "why": "Collect player feedback via Google Forms.",
  "type": "library"
 },
 {
  "category": "Admin & moderation",
  "name": "Exe admin panel",
  "url": "https://devforum.roblox.com/t/exe-4-exe-5-the-most-stunning-admin-panel-yet/2873667",
  "why": "Open-source game example.",
  "type": "asset"
 },
 {
  "category": "Security",
  "name": "Exploiting explained",
  "url": "https://devforum.roblox.com/t/exploiting-explained/170977",
  "why": "What exploiters can and can't do: start here.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Complete guide: how exploits work",
  "url": "https://devforum.roblox.com/t/a-complete-guide-how-exploits-work-how-to-best-prevent-them/767594",
  "why": "Prevention techniques with examples.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Anticheat methods",
  "url": "https://devforum.roblox.com/t/anticheat-methods/2662072",
  "why": "Catalog of server-side detection methods.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Securing your game: beginner guide",
  "url": "https://devforum.roblox.com/t/how-you-should-secure-your-game-a-beginner-guide-for-secure-networking-and-developing-anticheats/351775",
  "why": "Secure networking and anti-cheat basics.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Why your anti-exploit sucks",
  "url": "https://devforum.roblox.com/t/why-your-anti-exploit-sucks/1643298",
  "why": "Common anti-cheat mistakes to avoid.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Client anti-cheats aren't as bad as you think",
  "url": "https://devforum.roblox.com/t/client-anti-cheats-arent-as-bad-as-you-think/2471974",
  "why": "Balanced take on client-side checks.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "Cookie logging explained",
  "url": "https://devforum.roblox.com/t/cookie-logging-explained/473457",
  "why": "Protect your account from cookie theft.",
  "type": "tutorial/docs"
 },
 {
  "category": "Security",
  "name": "PSA: hacking operation targeting front-page games",
  "url": "https://devforum.roblox.com/t/psa-to-all-roblox-developers-massive-hacking-operation-taking-over-massive-front-page-games/3913726",
  "why": "Recent attack patterns and how to protect your team.",
  "type": "community"
 },
 {
  "category": "Security",
  "name": "Backdoor/infection detector plugin",
  "url": "https://devforum.roblox.com/t/v21-plugin-hidden-backdoorinfection-script-detector-detectsremoves-infections-from-malicious-plugins/216692",
  "why": "Find malicious scripts hidden in free models.",
  "type": "plugin"
 },
 {
  "category": "Security",
  "name": "Knightmare anti-cheat",
  "url": "https://devforum.roblox.com/t/knightmare-server-side-anti-cheat-service-updated-572025/2223732",
  "why": "Server-side anti-cheat service.",
  "type": "library"
 },
 {
  "category": "Security",
  "name": "Anti-Exploit Framework",
  "url": "https://devforum.roblox.com/t/anti-exploit-framework-unknownparabellum/721362",
  "why": "Framework for structuring anti-exploit checks.",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "noblox.js",
  "url": "https://github.com/noblox/noblox.js",
  "why": "Node.js wrapper for Roblox web APIs (groups, ranks). (Archived, still widely referenced.)",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "ro.py",
  "url": "https://github.com/ro-py/ro.py",
  "why": "Async Python wrapper for the Roblox API.",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "OpenBlox",
  "url": "https://github.com/cameronpcampbell/openblox",
  "why": "Type-safe TypeScript wrapper for Open Cloud and web APIs.",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "RoProxy",
  "url": "https://devforum.roblox.com/t/roproxycom-a-free-rotating-proxy-for-roblox-apis/1508367",
  "why": "Proxy for calling Roblox APIs from HttpService.",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "PSA: stop using public proxies",
  "url": "https://devforum.roblox.com/t/psa-stop-using-roblox-proxies-roproxy-rprxyxyz-rprxy/1573256",
  "why": "Why to self-host instead of public proxies.",
  "type": "tutorial/docs"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "WebhookProxy",
  "url": "https://devforum.roblox.com/t/webhookproxy-discord-webhooks-go-brrrrrrr/1491725",
  "why": "Send Discord webhooks from game servers.",
  "type": "library"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "Discord webhooks guide",
  "url": "https://devforum.roblox.com/t/discord-webhooks-integrating-roblox-with-discord/458366",
  "why": "Integrate game events with Discord.",
  "type": "tutorial/docs"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "Collected list of APIs",
  "url": "https://devforum.roblox.com/t/collected-list-of-apis/557091",
  "why": "Community index of Roblox web endpoints.",
  "type": "tutorial/docs"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "Error tracking with Sentry",
  "url": "https://devforum.roblox.com/t/error-tracking-with-sentry-on-roblox/49751",
  "why": "Ship errors from live servers to Sentry.",
  "type": "tutorial/docs"
 },
 {
  "category": "Open Cloud & web APIs",
  "name": "Google Sheets as a database",
  "url": "https://devforum.roblox.com/t/using-google-spreadsheets-as-a-database/12658",
  "why": "Lightweight external config and data.",
  "type": "tutorial/docs"
 },
 {
  "category": "Testing & CI",
  "name": "Jest Lua",
  "url": "https://github.com/jsdotlua/jest-lua",
  "why": "Community distribution of Jest for Luau.",
  "type": "library"
 },
 {
  "category": "Testing & CI",
  "name": "run-in-roblox",
  "url": "https://github.com/rojo-rbx/run-in-roblox",
  "why": "Run scripts inside Studio from the command line.",
  "type": "tool"
 },
 {
  "category": "Testing & CI",
  "name": "Open Cloud Luau Execution",
  "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution",
  "why": "Run tests in real Roblox servers from CI.",
  "type": "tutorial/docs"
 },
 {
  "category": "Testing & CI",
  "name": "fitumi",
  "url": "https://www.npmjs.com/package/@rbxts/fitumi",
  "why": "Fake Roblox instances in unit tests.",
  "type": "library"
 },
 {
  "category": "Testing & CI",
  "name": "selene GitHub Action",
  "url": "https://github.com/marketplace/actions/selene-linter",
  "why": "Lint Luau on every pull request.",
  "type": "tool"
 },
 {
  "category": "Testing & CI",
  "name": "StyLua GitHub Action",
  "url": "https://github.com/JohnnyMorganz/stylua-action",
  "why": "Check formatting in CI.",
  "type": "tool"
 },
 {
  "category": "roblox-ts",
  "name": "roblox-ts docs",
  "url": "https://roblox-ts.com/docs/",
  "why": "Guides for writing Roblox games in TypeScript.",
  "type": "tutorial/docs"
 },
 {
  "category": "roblox-ts",
  "name": "roblox-ts compiler",
  "url": "https://github.com/roblox-ts/roblox-ts",
  "why": "Source for the TypeScript-to-Luau compiler.",
  "type": "tool"
 },
 {
  "category": "roblox-ts",
  "name": "awesome-roblox-ts",
  "url": "https://github.com/Coyenn/awesome-roblox-ts",
  "why": "Index of every @rbxts package.",
  "type": "tutorial/docs"
 },
 {
  "category": "roblox-ts",
  "name": "@rbxts/services",
  "url": "https://www.npmjs.com/package/@rbxts/services",
  "why": "Typed access to every Roblox service.",
  "type": "library"
 },
 {
  "category": "roblox-ts",
  "name": "@rbxts/react",
  "url": "https://www.npmjs.com/package/@rbxts/react",
  "why": "React for roblox-ts.",
  "type": "library"
 },
 {
  "category": "roblox-ts",
  "name": "eslint-plugin-roblox-ts",
  "url": "https://www.npmjs.com/package/eslint-plugin-roblox-ts",
  "why": "Lint rules that catch roblox-ts pitfalls.",
  "type": "tool"
 },
 {
  "category": "roblox-ts",
  "name": "Slither (example game)",
  "url": "https://github.com/littensy/slither",
  "why": "Polished open-source roblox-ts game to learn from.",
  "type": "asset"
 },
 {
  "category": "Tutorials: scripting",
  "name": "All about Object-Oriented Programming",
  "url": "https://devforum.roblox.com/t/all-about-object-oriented-programming/8585",
  "why": "The classic OOP-in-Luau guide.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "All about metatables",
  "url": "https://devforum.roblox.com/t/all-you-need-to-know-about-metatables-and-metamethods/503259",
  "why": "Metatables and metamethods explained clearly.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Avoiding wait() and why",
  "url": "https://devforum.roblox.com/t/avoiding-wait-and-why/244015",
  "why": "Why task.wait and events beat legacy wait().",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Pcalls: when and how to use them",
  "url": "https://devforum.roblox.com/t/pcalls-when-and-how-to-use-them/393687",
  "why": "Error handling done right.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Coroutines: when and how",
  "url": "https://devforum.roblox.com/t/coroutines-when-and-how-to-use-them/541683",
  "why": "Practical guide to coroutines.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "How to use ModuleScripts",
  "url": "https://devforum.roblox.com/t/how-to-use-module-scripts/572047",
  "why": "Structure code with modules.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "CollectionService in a nutshell",
  "url": "https://devforum.roblox.com/t/collectionservice-in-a-nutshell/668984",
  "why": "Tag-driven code for many objects.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "PSA: connections can memory leak instances",
  "url": "https://devforum.roblox.com/t/psa-connections-can-memory-leak-instances/90082",
  "why": "Disconnect events to avoid leaks.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Garbage collection and memory leaks",
  "url": "https://devforum.roblox.com/t/garbage-collection-and-memory-leaks-in-roblox-what-you-should-know/374954",
  "why": "How Luau GC works and how leaks happen.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Type checking for beginners",
  "url": "https://devforum.roblox.com/t/type-checking-for-beginners/1027242",
  "why": "Get started with Luau types.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Type annotations guide",
  "url": "https://devforum.roblox.com/t/type-annotations-a-guide-to-writing-luau-code-that-is-actually-good%E2%84%A2/2843221",
  "why": "Write strong types for safer code.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Performance optimization guide",
  "url": "https://devforum.roblox.com/t/improved-how-to-actually-improve-performance-in-your-games/1221842",
  "why": "Make scripts faster with measurable wins.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "table.find vs dictionaries",
  "url": "https://devforum.roblox.com/t/algorithm-efficiency-and-alternatives-to-tablefind/764774",
  "why": "Pick the right lookup structure.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "FindFirstChild best practices",
  "url": "https://devforum.roblox.com/t/findfirstchild-and-waitforchild-addressing-common-bad-practices-and-habits-of-each/317491",
  "why": "When to use FindFirstChild and WaitForChild.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Serialization",
  "url": "https://devforum.roblox.com/t/how-to-save-parts-and-the-idea-of-serialization/524311",
  "why": "Turn instances and data into savable formats.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Weighted chance systems",
  "url": "https://devforum.roblox.com/t/weighted-chance-system/1373953",
  "why": "Loot tables and gacha probabilities done right.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Scripting for beginners",
  "url": "https://devforum.roblox.com/t/full-tutorial-how-to-script-on-roblox-beginners/1991385",
  "why": "Beginner-friendly entry into scripting.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Scripting basics",
  "url": "https://devforum.roblox.com/t/scripting-basics-beginner-guide-to-lua-and-roblox/359838",
  "why": "Variables, functions, and events in one place.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Lua starter guide",
  "url": "https://devforum.roblox.com/t/lua-scripting-starter-guide/394618",
  "why": "Language fundamentals for new scripters.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "How to learn to script",
  "url": "https://devforum.roblox.com/t/learn-to-script-learn-to-code-in-5-steps/1043259",
  "why": "A roadmap for self-taught scripters.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "How to create a plugin",
  "url": "https://devforum.roblox.com/t/how-to-create-your-own-plugin/1711475",
  "why": "Build and publish your first Studio plugin.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Network optimization",
  "url": "https://devforum.roblox.com/t/network-optimization-best-practices-how-to-keep-your-games-ping-low/1913475",
  "why": "Reduce remote traffic and lag.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "DataStore2 guide",
  "url": "https://devforum.roblox.com/t/how-to-use-datastore2-data-store-caching-and-data-loss-prevention/136317",
  "why": "How to save data reliably with DataStore2.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "DataStores for beginners",
  "url": "https://devforum.roblox.com/t/datastore-tutorial-for-beginners/733973",
  "why": "First steps with DataStoreService.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "DataStores: beginner to advanced",
  "url": "https://devforum.roblox.com/t/datastores-beginners-to-advanced/1275421",
  "why": "Full DataStore course in one thread.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Global leaderboards",
  "url": "https://devforum.roblox.com/t/how-to-make-a-simple-global-leaderboard/256754",
  "why": "Build OrderedDataStore leaderboards.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Daily shops",
  "url": "https://devforum.roblox.com/t/how-to-make-server-synced-daily-shops/632401",
  "why": "Rotating daily shop with seeded time.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: scripting",
  "name": "Crate/case opening system",
  "url": "https://devforum.roblox.com/t/creating-a-cratespin-system/260895",
  "why": "Build an animated unboxing system.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Understanding CFrames",
  "url": "https://devforum.roblox.com/t/how-to-think-about-cframes/11743",
  "why": "Position and rotation explained.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "CFrame tricks",
  "url": "https://devforum.roblox.com/t/a-couple-of-advanced-cframe-tricks/337682",
  "why": "Practical CFrame patterns.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Cross and dot products",
  "url": "https://devforum.roblox.com/t/the-ultimate-guide-to-vector3cross-and-vector3dot/953984",
  "why": "Vector math for gameplay.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Vector math",
  "url": "https://devforum.roblox.com/t/vector-mathematics-101-volume-i/157718",
  "why": "Vectors for game developers.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Trigonometry for games",
  "url": "https://devforum.roblox.com/t/basic-trigonometry/554329",
  "why": "Angles, circles, and orbits.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Quaternions",
  "url": "https://devforum.roblox.com/t/how-to-think-about-quaternions/143295",
  "why": "Rotation without gimbal lock.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Projectile motion",
  "url": "https://devforum.roblox.com/t/modeling-a-projectiles-motion/176677",
  "why": "Arcs, trajectories, and aim prediction.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Raycasting gun",
  "url": "https://devforum.roblox.com/t/how-to-make-a-raycasting-gun/723716",
  "why": "Build a raycast weapon from scratch.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "FPS framework: writing an FPS",
  "url": "https://devforum.roblox.com/t/writing-an-fps-framework-2020/503318",
  "why": "Viewmodels, aiming, and recoil.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "FPS framework for beginners",
  "url": "https://devforum.roblox.com/t/designing-an-fps-framework-beginners-guide/1198208",
  "why": "Simpler entry into FPS systems.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Furniture placement system",
  "url": "https://devforum.roblox.com/t/creating-a-furniture-placement-system/205509",
  "why": "Grid placement with saving.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Dragging objects",
  "url": "https://devforum.roblox.com/t/dragging-objects-with-the-mouse/403766",
  "why": "Physics-friendly object dragging.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Dungeon generation",
  "url": "https://devforum.roblox.com/t/dungeon-generation-a-procedural-generation-guide/342413",
  "why": "Procedural room-and-corridor dungeons.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Greedy meshing",
  "url": "https://devforum.roblox.com/t/consume-everything-how-greedy-meshing-works/452717",
  "why": "Optimize voxel worlds.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Procedural animation",
  "url": "https://devforum.roblox.com/t/procedural-animation-what-it-is-and-how-to-do-it/564782",
  "why": "Code-driven animation for creatures.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Day/night cycle",
  "url": "https://devforum.roblox.com/t/a-guide-to-a-better-looking-and-more-realistic-daynight-cycle/392643",
  "why": "Animate lighting over time.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "How to rig a car",
  "url": "https://devforum.roblox.com/t/how-to-rig-a-car/523855",
  "why": "Constraint-based vehicles.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Tweening models",
  "url": "https://devforum.roblox.com/t/introduction-to-tweening-models/315253",
  "why": "Move whole models smoothly.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "First-person elements",
  "url": "https://devforum.roblox.com/t/the-first-person-element-of-a-first-person-shooter/160434",
  "why": "Viewmodel arms and first-person feel.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: math & mechanics",
  "name": "Optimizing humanoids",
  "url": "https://devforum.roblox.com/t/how-to-optimize-humanoids/389801",
  "why": "Make NPC-heavy games run well.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Shadowmap lighting",
  "url": "https://devforum.roblox.com/t/how-to-make-your-lighting-more-realistic-in-shadowmap/367805",
  "why": "Get the most out of Future lighting.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Building optimisation",
  "url": "https://devforum.roblox.com/t/building-optimisation-tips-and-tricks/235059",
  "why": "Lower part counts and draw calls.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "MeshPart performance",
  "url": "https://devforum.roblox.com/t/meshpart-usage-performance-optimizations/1319217",
  "why": "How mesh settings affect performance.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Large terrain creation",
  "url": "https://devforum.roblox.com/t/large-scale-roblox-terrain-the-ultimate-guide/405672",
  "why": "Plan and build huge terrain maps.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Mesh oceans",
  "url": "https://devforum.roblox.com/t/realistic-oceans-using-mesh-deformation/1159345",
  "why": "Animated ocean meshes with bones.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Glass distortion effect",
  "url": "https://devforum.roblox.com/t/hidden-glass-distortion-effect-with-real-time-reflections-tutorial/2338789",
  "why": "Fake refraction with ViewportFrames.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Black outline effect",
  "url": "https://devforum.roblox.com/t/fixing-images-in-roblox-ui-black-outlines/75817",
  "why": "Cartoon outlines for models.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Blender rig exporter guide",
  "url": "https://devforum.roblox.com/t/blender-rig-exporteranimation-importer/34729",
  "why": "Animate Roblox rigs in Blender.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Animating tool parts",
  "url": "https://devforum.roblox.com/t/how-to-animate-tool-parts-guns-knifes-etc/359484",
  "why": "Animate weapons and held tools.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Animations guide",
  "url": "https://devforum.roblox.com/t/jespones-guide-to-animations/225752",
  "why": "How animation priority, weights, and loading work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Moon Animator 2 guide",
  "url": "https://devforum.roblox.com/t/getting-started-with-moon-animator-2-unofficial/476330",
  "why": "Learn the most popular animator.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "Camera animations",
  "url": "https://devforum.roblox.com/t/camera-animations-for-cutscenes-and-gameplay/1181691",
  "why": "Cinematic camera work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "2D animations",
  "url": "https://devforum.roblox.com/t/advanced-ui-introduction-to-2d-animations/459849",
  "why": "Sprite sheets in UI.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "VFX tutorial",
  "url": "https://devforum.roblox.com/t/vfx-tutorial-roblox/872437",
  "why": "Make your first effects.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: building & art",
  "name": "VFX scripting",
  "url": "https://devforum.roblox.com/t/full-beginners-guide-on-scripting-animefighting-vfxvisual-effects-part-1/1610853",
  "why": "Trigger and time effects in code.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "UI starter guide",
  "url": "https://devforum.roblox.com/t/ui-design-starter-guide/53461",
  "why": "Basics of Roblox GUI.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "Ultimate UI design guide",
  "url": "https://devforum.roblox.com/t/the-ultimate-ui-design-guide/1236916",
  "why": "Layout, color, and hierarchy.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "Aspect ratios and scaling",
  "url": "https://devforum.roblox.com/t/keeping-the-aspect-ratio-of-your-guis/17171",
  "why": "UI that fits every screen.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "SliceCenter (9-slice)",
  "url": "https://devforum.roblox.com/t/how-to-use-slicecenter-robloxs-9-slice-gui-property/18313",
  "why": "Scalable rounded panels.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "ViewportFrame masking",
  "url": "https://devforum.roblox.com/t/viewportframe-masking/2964839",
  "why": "Advanced masking tricks.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "Mobile buttons",
  "url": "https://devforum.roblox.com/t/the-correct-way-to-design-mobile-buttons/2494558",
  "why": "Touch controls that work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: UI & UX",
  "name": "Accessibility",
  "url": "https://devforum.roblox.com/t/making-accessible-games-for-the-disability-aware-era-a-not-fully-comprehensive-guide-by-an-actual-disabled-developer/1375919",
  "why": "Make games playable for more players.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Game design theory",
  "url": "https://devforum.roblox.com/t/game-design-theory-planning-a-game-and-implementing-features/62838",
  "why": "Core loops, retention, and fun.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Coming up with game ideas",
  "url": "https://devforum.roblox.com/t/creating-unique-game-ideas/53482",
  "why": "Brainstorming methods that work.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Monetisation 101",
  "url": "https://devforum.roblox.com/t/monetisation-101-how-to-effectively-generate-revenue-in-your-roblox-game/246902",
  "why": "Ethical, effective monetization.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Economics of advertising",
  "url": "https://devforum.roblox.com/t/the-economic-guide-to-profitable-game-advertising/122318",
  "why": "How ad spend translates into players.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Game advertising 101",
  "url": "https://devforum.roblox.com/t/game-advertising-101/574695",
  "why": "Run ads that convert.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "How to grow your game",
  "url": "https://devforum.roblox.com/t/how-to-successfully-grow-your-game-ft-senseideveloper-vikinglaw-promoting-and-advertising-your-game/2535279",
  "why": "Practical growth playbook.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "GameAnalytics guide",
  "url": "https://devforum.roblox.com/t/using-gameanalytics-retention-and-monetisation-ez-mode/41083",
  "why": "Set up analytics in your game.",
  "type": "tutorial/docs"
 },
 {
  "category": "Tutorials: game design & growth",
  "name": "Building a portfolio",
  "url": "https://devforum.roblox.com/t/how-to-make-a-good-portfolio/550447",
  "why": "Get hired as a Roblox dev.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Luau: Programming in Lua (book, 5.1)",
  "url": "https://www.lua.org/pil/contents.html",
  "why": "The classic Lua book; most still applies to Luau.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Luau type checking guide",
  "url": "https://luau.org/typecheck",
  "why": "Official type system documentation.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Luau syntax differences",
  "url": "https://luau.org/syntax",
  "why": "What Luau adds to Lua 5.1.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Luau performance notes",
  "url": "https://luau.org/performance",
  "why": "How the VM is optimized and what that means for you.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Luau library reference",
  "url": "https://luau.org/library",
  "why": "Built-in globals and standard library.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Curriculum: gameplay scripting",
  "url": "https://create.roblox.com/docs/tutorials/curriculums/gameplay-scripting",
  "why": "Official course for a full laser-tag game.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Curriculum: building",
  "url": "https://create.roblox.com/docs/tutorials/curriculums/building",
  "why": "Official course from greybox to polish.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Curriculum: UI",
  "url": "https://create.roblox.com/docs/tutorials/curriculums/user-interface-design",
  "why": "Official UI design course.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Roblox Education",
  "url": "https://education.roblox.com/",
  "why": "Lessons and programs for classrooms.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "CS50 games track (Lua/LÖVE)",
  "url": "https://cs50.harvard.edu/games/",
  "why": "Free game dev course that teaches Lua concepts.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Learn X in Y minutes: Lua",
  "url": "https://learnxinyminutes.com/docs/lua/",
  "why": "One-page Lua refresher.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Game Programming Patterns",
  "url": "https://gameprogrammingpatterns.com/",
  "why": "Free book on patterns used in game code.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Red Blob Games",
  "url": "https://www.redblobgames.com/",
  "why": "Interactive guides to pathfinding, grids, and noise.",
  "type": "tutorial/docs"
 },
 {
  "category": "Learning paths",
  "name": "Inigo Quilez articles (graphics math)",
  "url": "https://iquilezles.org/articles/",
  "why": "Math for procedural generation and effects.",
  "type": "tutorial/docs"
 },
 {
  "name": "TheDevKing (YouTube)",
  "category": "YouTube channels",
  "type": "tutorial/docs",
  "url": "https://www.youtube.com/@TheDevKing",
  "why": "Approachable scripting series from beginner to advanced."
 },
 {
  "name": "BrawlDev (YouTube)",
  "category": "YouTube channels",
  "type": "tutorial/docs",
  "url": "https://www.youtube.com/@BrawlDevRBLX",
  "why": "Structured scripting courses organized as playlists."
 },
 {
  "category": "YouTube channels",
  "name": "AlvinBlox",
  "url": "https://www.youtube.com/@AlvinBlox",
  "why": "Long-running beginner scripting tutorials.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "GnomeCode",
  "url": "https://www.youtube.com/@GnomeCode",
  "why": "Project-based series such as tower defense and horror.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "B Ricey",
  "url": "https://www.youtube.com/@BRicey",
  "why": "Clear beginner tutorials and devlogs.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "Suphi Kaner",
  "url": "https://www.youtube.com/@5uphi",
  "why": "Deep technical Luau and systems videos.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "Stewiepfing",
  "url": "https://www.youtube.com/@Stewiepfing",
  "why": "Studio tips for builders and scripters.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "Okeanskiy",
  "url": "https://www.youtube.com/@Okeanskiy",
  "why": "Modules, OOP, and game systems.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "RoBuilder",
  "url": "https://www.youtube.com/@RoBuilder",
  "why": "Building and modeling tutorials.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "Sleitnick",
  "url": "https://www.youtube.com/@sleitnick",
  "why": "Author of Knit and RbxUtil: tooling and architecture.",
  "type": "tutorial/docs"
 },
 {
  "category": "YouTube channels",
  "name": "Ozzypig",
  "url": "https://www.youtube.com/@Ozzypig",
  "why": "Studio and scripting tips from a long-time creator.",
  "type": "tutorial/docs"
 },
 {
  "category": "Assets",
  "name": "Kenney",
  "url": "https://kenney.nl/assets",
  "why": "Thousands of free CC0 game assets: 3D, UI, audio.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Poly Haven",
  "url": "https://polyhaven.com/",
  "why": "Free CC0 HDRIs, textures, and models.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "ambientCG",
  "url": "https://ambientcg.com/",
  "why": "Free CC0 PBR materials for MaterialVariants.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Quaternius",
  "url": "https://quaternius.com/",
  "why": "Free low-poly CC0 model packs.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "OpenGameArt",
  "url": "https://opengameart.org/",
  "why": "Community library of free game art and audio.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Mixamo",
  "url": "https://www.mixamo.com/",
  "why": "Free character animations to retarget to Roblox rigs.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Blender",
  "url": "https://www.blender.org/",
  "why": "Free 3D modeling and animation tool used by most Roblox artists.",
  "type": "tool"
 },
 {
  "category": "Assets",
  "name": "Figma",
  "url": "https://www.figma.com/",
  "why": "Design UI before building it in Studio.",
  "type": "tool"
 },
 {
  "category": "Assets",
  "name": "Penpot",
  "url": "https://penpot.app/",
  "why": "Free, open-source design tool alternative to Figma.",
  "type": "tool"
 },
 {
  "category": "Assets",
  "name": "Google Material Symbols",
  "url": "https://fonts.google.com/icons",
  "why": "Free icon set for clean game UI.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Lucide icons",
  "url": "https://lucide.dev/",
  "why": "Open-source icon set; Studio picker plugin exists.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Fluent icons",
  "url": "https://fluenticons.co/",
  "why": "Microsoft Fluent icon set.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Game-icons.net",
  "url": "https://game-icons.net/",
  "why": "4,000+ free game icons (CC BY).",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Cartoon UI Pack",
  "url": "https://devforum.roblox.com/t/free-cartoon-ui-pack/219831",
  "why": "Open-source cartoon-style Roblox UI kit.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Epic UI Pack",
  "url": "https://devforum.roblox.com/t/updated-plugin-epic-ui-pack-user-interface-assets/2206337",
  "why": "Free UI pack for Roblox games.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Vanilla 3 icons",
  "url": "https://devforum.roblox.com/t/vanilla-3-the-pragmatic-icon-set-for-roblox-studio/935745",
  "why": "Clean icon set designed for Roblox.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Fluency icons for Roblox",
  "url": "https://devforum.roblox.com/t/fluency-icon-library-smooth-outline-icons-2k-icons/2038503",
  "why": "Fluent-style icons packaged for Roblox.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Infinite terrain generator",
  "url": "https://devforum.roblox.com/t/infinite-terrain-plugin/1405906",
  "why": "Procedural terrain generation.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "City Loader",
  "url": "https://devforum.roblox.com/t/city-loader-plugin-templates-for-real-life-buildingscities-in-studio/696886",
  "why": "Generate city blocks for big maps.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Mass uncopylocked games list",
  "url": "https://devforum.roblox.com/t/mass-uncopylocked-35-free-games-and-projects/2880269",
  "why": "Learn from uncopylocked places.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Free games for you to use",
  "url": "https://devforum.roblox.com/t/lots-of-free-open-sourced-games/525670",
  "why": "Open-sourced full games to study.",
  "type": "asset"
 },
 {
  "category": "Assets",
  "name": "Photobooth",
  "url": "https://devforum.roblox.com/t/photobooth-plugin/3401720",
  "why": "Capture in-game screenshots and thumbnails.",
  "type": "asset"
 },
 {
  "category": "Audio",
  "name": "ZapSplat",
  "url": "https://www.zapsplat.com/",
  "why": "Large free sound effect library (check license for uploads).",
  "type": "asset"
 },
 {
  "category": "Audio",
  "name": "Freesound",
  "url": "https://freesound.org/",
  "why": "Community sound library with CC licenses.",
  "type": "asset"
 },
 {
  "category": "Audio",
  "name": "Pixabay sound effects",
  "url": "https://pixabay.com/sound-effects/",
  "why": "Royalty-free sound effects and music.",
  "type": "asset"
 },
 {
  "category": "Audio",
  "name": "Sonniss GDC bundles",
  "url": "https://sonniss.com/gameaudiogdc",
  "why": "Free yearly royalty-free game audio bundles.",
  "type": "asset"
 },
 {
  "category": "Audio",
  "name": "Audacity",
  "url": "https://www.audacityteam.org/",
  "why": "Free editor for trimming and normalizing sounds.",
  "type": "tool"
 },
 {
  "category": "Audio",
  "name": "RoSound",
  "url": "https://devforum.roblox.com/t/rosound-221-audio-discovery-made-simple-15k-installs/1564911",
  "why": "Sound management module.",
  "type": "library"
 },
 {
  "category": "Audio",
  "name": "3D sound system",
  "url": "https://devforum.roblox.com/t/3d-sound-system-realistic-frequency-dampening/287330",
  "why": "Better spatial audio and occlusion.",
  "type": "library"
 },
 {
  "category": "Audio",
  "name": "Audio API docs",
  "url": "https://create.roblox.com/docs/audio/objects",
  "why": "AudioPlayer, emitters, listeners, and effects.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Immersive ads",
  "url": "https://create.roblox.com/docs/production/monetization/immersive-ads",
  "why": "Earn from ad units placed in your world.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Commerce products",
  "url": "https://create.roblox.com/docs/production/monetization/commerce-products",
  "why": "Sell physical merchandise inside experiences.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Developer Exchange FAQ",
  "url": "https://en.help.roblox.com/hc/en-us/articles/13061189551124",
  "why": "DevEx requirements and rates.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Promotion overview",
  "url": "https://create.roblox.com/docs/production/promotion",
  "why": "Thumbnails, events, and discovery basics.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Experience events",
  "url": "https://create.roblox.com/docs/production/promotion/experience-events",
  "why": "Run events that surface in discovery.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Notifications",
  "url": "https://create.roblox.com/docs/production/promotion/experience-notifications",
  "why": "Bring players back with opt-in notifications.",
  "type": "tutorial/docs"
 },
 {
  "category": "Monetization & growth",
  "name": "Friend invite prompts",
  "url": "https://create.roblox.com/docs/production/promotion/invite-prompts",
  "why": "Grow through social invites.",
  "type": "tutorial/docs"
 },
 {
  "category": "Analytics",
  "name": "GameAnalytics Roblox SDK",
  "url": "https://github.com/GameAnalytics/GA-SDK-ROBLOX",
  "why": "Free third-party analytics with funnels and cohorts.",
  "type": "library"
 },
 {
  "category": "Analytics",
  "name": "GameAnalytics",
  "url": "https://gameanalytics.com/",
  "why": "Dashboards for retention, progression, and revenue.",
  "type": "tool"
 },
 {
  "category": "Analytics",
  "name": "RoMonitor Stats",
  "url": "https://romonitorstats.com/",
  "why": "Public CCU and visit charts for any experience.",
  "type": "tool"
 },
 {
  "category": "Analytics",
  "name": "Bloxbiz / Super Biz analytics",
  "url": "https://www.superbiz.gg/",
  "why": "Analytics and in-game ads network for Roblox.",
  "type": "tool"
 },
 {
  "category": "Analytics",
  "name": "Retention analytics docs",
  "url": "https://create.roblox.com/docs/production/analytics/retention",
  "why": "Understand D1/D7/D30 retention.",
  "type": "tutorial/docs"
 },
 {
  "category": "Analytics",
  "name": "Monetization analytics docs",
  "url": "https://create.roblox.com/docs/production/analytics/monetization",
  "why": "Revenue, ARPDAU, and payer conversion.",
  "type": "tutorial/docs"
 },
 {
  "category": "Analytics",
  "name": "Performance analytics docs",
  "url": "https://create.roblox.com/docs/production/analytics/performance",
  "why": "Find crashes, memory, and FPS issues in live servers.",
  "type": "tutorial/docs"
 },
 {
  "category": "Analytics",
  "name": "Error report analytics",
  "url": "https://create.roblox.com/docs/production/analytics/error-report",
  "why": "Group live script errors.",
  "type": "tutorial/docs"
 },
 {
  "name": "Roblox Developer Forum",
  "category": "Community",
  "type": "community",
  "url": "https://devforum.roblox.com",
  "why": "Official forum: announcements, help, feedback, and bug reports."
 },
 {
  "name": "DevForum – Community Resources",
  "category": "Community",
  "type": "community",
  "url": "https://devforum.roblox.com/c/resources/community-resources/",
  "why": "A gold mine of open-source modules, plugins, and tools."
 },
 {
  "name": "Talent Hub",
  "category": "Community",
  "type": "community",
  "url": "https://talent.roblox.com",
  "why": "Official platform for finding scripters, builders, and artists."
 },
 {
  "name": "r/robloxgamedev",
  "category": "Community",
  "type": "community",
  "url": "https://www.reddit.com/r/robloxgamedev/",
  "why": "Large subreddit for feedback, devlogs, and questions."
 },
 {
  "category": "Community",
  "name": "r/ROBLOXStudio",
  "url": "https://www.reddit.com/r/ROBLOXStudio/",
  "why": "Active subreddit for Studio help and showcases.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "r/robloxgamedev wiki",
  "url": "https://www.reddit.com/r/robloxgamedev/wiki/index/",
  "why": "FAQ and resource links curated by mods.",
  "type": "tutorial/docs"
 },
 {
  "category": "Community",
  "name": "r/RobloxDevelopers",
  "url": "https://www.reddit.com/r/RobloxDevelopers/",
  "why": "Another subreddit for development discussion.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "r/lua",
  "url": "https://www.reddit.com/r/lua/",
  "why": "General Lua language community.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Help and Feedback",
  "url": "https://devforum.roblox.com/c/help-and-feedback/54",
  "why": "Ask scripting, building, and design questions (read before posting).",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Scripting Support",
  "url": "https://devforum.roblox.com/c/help-and-feedback/scripting-support/55",
  "why": "Searchable archive of solved scripting problems.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Creations Feedback",
  "url": "https://devforum.roblox.com/c/help-and-feedback/creations-feedback/56",
  "why": "Get feedback on games and builds.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Community Tutorials",
  "url": "https://devforum.roblox.com/c/resources/community-tutorials/46",
  "why": "All community-written tutorials.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Resources category",
  "url": "https://devforum.roblox.com/c/resources/71",
  "why": "Parent hub for community resources and tutorials.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Community Events",
  "url": "https://devforum.roblox.com/c/resources/community-events/196",
  "why": "Game jams and community events.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "DevForum: Feature Requests",
  "url": "https://devforum.roblox.com/c/feature-requests/32",
  "why": "See what developers are asking Roblox for. (Posting requires DevForum Member trust level.)",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "Roblox Developers Discord (RoDevs)",
  "url": "https://discord.gg/rodevs",
  "why": "Big dev community with hiring channels (reference only).",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "Luau GitHub discussions",
  "url": "https://github.com/luau-lang/luau/discussions",
  "why": "Language questions with the Luau team.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "Bloxy News (X)",
  "url": "https://x.com/Bloxy_News",
  "why": "Fast news on Roblox updates.",
  "type": "community"
 },
 {
  "category": "Community",
  "name": "rojo-rbx GitHub org",
  "url": "https://github.com/rojo-rbx",
  "why": "Home of Rojo ecosystem projects.",
  "type": "tool"
 },
 {
  "category": "Community",
  "name": "Useful Roblox resources (loominatrx)",
  "url": "https://github.com/loominatrx/useful-roblox-resources",
  "why": "Large curated list of Roblox libraries, plugins, and assets.",
  "type": "tutorial/docs"
 },
 {
  "category": "Community",
  "name": "awesome-roblox",
  "url": "https://github.com/awesome-roblox/awesome-roblox",
  "why": "Community-curated list of Roblox resources.",
  "type": "tutorial/docs"
 },
 {
  "category": "Community",
  "name": "Resources mega thread",
  "url": "https://devforum.roblox.com/t/game-development-resources-mega-thread/177780",
  "why": "DevForum index of community resources.",
  "type": "tutorial/docs"
 },
 {
  "category": "Talent & jobs",
  "name": "Hidden Developers (hiddendevs.com)",
  "url": "https://hiddendevs.com/",
  "why": "Commission hub run by the Hidden Developers community.",
  "type": "community"
 },
 {
  "category": "Talent & jobs",
  "name": "DevForum: Collaboration",
  "url": "https://devforum.roblox.com/c/collaboration/81",
  "why": "Find collaborators and post portfolios (read rules first).",
  "type": "community"
 },
 {
  "category": "Talent & jobs",
  "name": "RoDevs Talent",
  "url": "https://rodevs.com/",
  "why": "Job board tied to the RoDevs Discord.",
  "type": "community"
 },
 {
  "category": "Talent & jobs",
  "name": "Talent Hub: job posts",
  "url": "https://talent.roblox.com/jobs",
  "why": "Browse current Roblox job listings.",
  "type": "community"
 },
 {
  "category": "Talent & jobs",
  "name": "Roblox careers",
  "url": "https://careers.roblox.com/",
  "why": "Jobs at Roblox Corporation itself.",
  "type": "community"
 },
 {
  "category": "Talent & jobs",
  "name": "Fiverr Roblox developers",
  "url": "https://www.fiverr.com/categories/programming-tech/game-development/roblox",
  "why": "Freelance marketplace for short gigs.",
  "type": "community"
 },
 {
  "category": "Open-source games",
  "name": "Ruddev's Battle Royale",
  "url": "https://devforum.roblox.com/t/os-game-ruddevs-battle-royale-open-sourced/340548",
  "why": "Full battle royale to study.",
  "type": "asset"
 },
 {
  "category": "Open-source games",
  "name": "Vesteria source",
  "url": "https://github.com/berezaa/vesteria",
  "why": "Open-sourced MMORPG codebase.",
  "type": "asset"
 },
 {
  "category": "Open-source games",
  "name": "Miner's Haven on GitHub",
  "url": "https://github.com/berezaa/minershaven",
  "why": "Tycoon code on GitHub.",
  "type": "asset"
 }
]