{"id":45981424,"url":"https://github.com/pcgex/pcgextendedtoolkit","last_synced_at":"2026-05-10T18:20:29.462Z","repository":{"id":207494517,"uuid":"709389965","full_name":"PCGEx/PCGExtendedToolkit","owner":"PCGEx","description":" The missing pieces for Unreal's PCG. Graph theory, advanced pathfinding, spatial ops, filtering, asset management, and more. ","archived":false,"fork":false,"pushed_at":"2026-04-12T16:14:44.000Z","size":190311,"stargazers_count":610,"open_issues_count":1,"forks_count":82,"subscribers_count":17,"default_branch":"main","last_synced_at":"2026-04-12T18:12:53.939Z","etag":null,"topics":["delaunay","diagrams","graph","minimum-spanning-tree","pathfinding","pcg","plugin","procedural-generation","relational-model","sorting","toolkit","unreal","unreal-engine-5","unreal-engine-plugin","unrealengine","voronoi"],"latest_commit_sha":null,"homepage":"https://pcgex.gitbook.io/pcgex","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PCGEx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORTERS.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"nebukam"}},"created_at":"2023-10-24T16:07:56.000Z","updated_at":"2026-04-12T11:41:08.000Z","dependencies_parsed_at":"2023-12-08T07:39:39.099Z","dependency_job_id":"8c2bb1dc-8c65-419a-9074-43187e2040cc","html_url":"https://github.com/PCGEx/PCGExtendedToolkit","commit_stats":null,"previous_names":["nebukam/pcgextendedtoolkit","pcgex/pcgextendedtoolkit"],"tags_count":138,"template":false,"template_full_name":null,"purl":"pkg:github/PCGEx/PCGExtendedToolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PCGEx%2FPCGExtendedToolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PCGEx%2FPCGExtendedToolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PCGEx%2FPCGExtendedToolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PCGEx%2FPCGExtendedToolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PCGEx","download_url":"https://codeload.github.com/PCGEx/PCGExtendedToolkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PCGEx%2FPCGExtendedToolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31825515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"online","status_checked_at":"2026-04-15T02:00:06.175Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["delaunay","diagrams","graph","minimum-spanning-tree","pathfinding","pcg","plugin","procedural-generation","relational-model","sorting","toolkit","unreal","unreal-engine-5","unreal-engine-plugin","unrealengine","voronoi"],"created_at":"2026-02-28T18:03:53.761Z","updated_at":"2026-04-15T04:00:51.992Z","avatar_url":"https://github.com/PCGEx.png","language":"C++","funding_links":["https://github.com/sponsors/nebukam","https://www.patreon.com/c/pcgex"],"categories":[],"sub_categories":[],"readme":"![UE 5.7](https://img.shields.io/badge/UE-5.7-darkgreen) ![5.6](https://img.shields.io/badge/5.6-darkgreen) ![5.5](https://img.shields.io/badge/5.5-gray) ![5.4](https://img.shields.io/badge/5.4-gray) ![5.3](https://img.shields.io/badge/5.3-gray) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Nebukam/PCGExtendedToolkit)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Nebukam/PCGExtendedToolkit/refs/heads/docs/_sources/smol-logo.png\" alt=\"PCGEx Logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ePCG Extended Toolkit (PCGEx)\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e200+ nodes for advanced procedural generation in Unreal Engine\u003c/strong\u003e\u003cbr\u003e\n  Graph theory, pathfinding, spatial queries, asset management, and more.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pcgex.gitbook.io/pcgex\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"https://pcgex.gitbook.io/pcgex/working-with-pcgex/getting-started/installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"https://pcgex.gitbook.io/pcgex/changelogs\"\u003eChangelogs\u003c/a\u003e •\n  \u003ca href=\"https://discord.gg/mde2vC5gbE\"\u003eDiscord\u003c/a\u003e •\n  \u003ca href=\"https://www.patreon.com/c/pcgex\"\u003eSupport on Patreon\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is PCGEx?\n\n### PCGEx is a **low-level, use-case agnostic toolkit** extending Unreal Engine's PCG framework with **200+ nodes**.\n\nVanilla PCG excels at scattering and rule-based placement. PCGEx adds what's missing: **structure**. Build graphs from points, find paths through them, analyze topology, and work with explicit connections—not just proximity. Delaunay, Voronoi, MST, convex hulls, A* pathfinding, and more.\n\nGraph theory is just the headline. PCGEx is also a comprehensive data manipulation toolkit: spatial queries, sampling, blending, path operations, polygon booleans, asset management, filtering, sorting—the low-level primitives that vanilla PCG doesn't provide. Reusable sub-nodes (filters, heuristics, blenders) plug into operations to keep your graphs clean. \n\n_It doesn't solve specific problems for you. _It gives you the tools to solve them yourself._\n\n---\n\n## Getting Started\n\n### Installation\n\nPCGEx is available through multiple channels:\n\n- **[FAB](https://www.fab.com/listings/3f0bea1c-7406-4441-951b-8b2ca155f624)** — Epic's official marketplace\n- **[Source](https://github.com/Nebukam/PCGExtendedToolkit)** — Build from GitHub\n\nSee the [Installation Guide](https://pcgex.gitbook.io/pcgex/working-with-pcgex/getting-started/installation) for detailed instructions.\n\n### Example Project\n\nThe best way to learn PCGEx is through the **[Example Project](https://pcgex.gitbook.io/pcgex/working-with-pcgex/getting-started/example-project)**, which contains hundred of annotated graphs and complex examples demonstrating PCGEx capabilities.\n\n\u003cimg width=\"1256\" height=\"902\" alt=\"image\" src=\"https://github.com/user-attachments/assets/017164af-ac4c-4ff2-b0ae-a76a32d40ed2\" /\u003e\n\n### Documentation\n\n- **[Gitbook Documentation](https://pcgex.gitbook.io/pcgex)** — Comprehensive guides and tutorials\n- **[Discord Server](https://discord.gg/mde2vC5gbE)** — Community support and discussion\n\n---\n\n## Key Features\n\n### Clusters \u0026 Graphs\nThe heart of PCGEx. Transform points into connected networks via Delaunay, Voronoi, convex hulls, MST, and custom builders. Every connection is data you can query, filter, refine, and build upon. This is what vanilla PCG can't do.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/09d29b95-b7f5-4e77-87b0-56d1b4b7d86e\" /\u003e\n\n\n### Filter Ecosystem\nDefine selection logic once, reuse everywhere. AND/OR composition, attribute tests, spatial queries, bitmasks—all as portable sub-nodes that plug into operations. No more duplicating filter chains across your graph.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/556df727-c17a-4cb7-835b-653a8411d74e\" /\u003e\n\n### Asset Collections\nCurate meshes, actors, and data assets with weighted distribution, tags, and per-entry property overrides. Define a collection once, use it consistently everywhere. The asset management layer vanilla PCG lacks.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6f1c453b-8010-496f-bdf8-5a809e36849d\" /\u003e\n\n\n### Paths\nSmooth, simplify, subdivide, cut, fuse, offset, bevel. Tangent operations for clean curves. Convert freely between points, paths, and splines. A complete path manipulation toolbox.\n\n\u003cimg width=\"3840\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/698a107c-6429-4310-89b1-ddf52c032f27\" /\u003e\n\n\n### Pathfinding\nA*/Djikstra routing through your clusters with pluggable heuristics. Weight by distance, slope, attributes, or custom logic. Find optimal paths when you need them, _without a single loop_.\n\n\u003cimg width=\"3840\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/7686097c-ee02-42b4-85bc-dfc9e763a265\" /\u003e\n\n\n### Spatial Operations\n**Point fusion** is foundational—merge nearby points with attribute blending. Beyond that: Lloyd relaxation, bin packing, octree queries, bounds analysis. Power tools for when you need them.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1e36d60e-0830-4a5c-aa6c-ad99fc0f542d\" /\u003e\n\n\n### Sampling \u0026 Blending\nTransfer data between point sets, surfaces, splines, textures. Configurable weighting and falloff. The glue that connects disparate data sources.\n\n\u003cimg width=\"3840\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/664a0725-9e76-4593-9e1e-81dc7814199d\" /\u003e\n\n\n### Tensors \u0026 Vector Fields\nSpatial effectors that influence transforms. Stack them for complex directional fields—orienting objects, extruding paths, guiding growth.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/85bd53fa-c9f1-42d7-a278-ec3da68b1804\" /\u003e\n\n\n### Probing\nBuild clusters from connection rules—define how points should connect based on spatial relationships and let PCGEx figure out the graph.\n\n\u003cimg width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ffcf4a0f-f05b-4c66-bd83-7165379ada3c\" /\u003e\n\n\n### Supporting Tools\n**Shapes** — 2D/3D primitives, Clipper2 polygon booleans.  \n**Topology** — Boundary detection, flood fill, island analysis.  \n**Noise** — 3D procedural noise for natural variation.  \n**Bridges** — Convert between meshes, clusters, and paths.  \n**Utilities** — Sorting, partitioning, attributes, hashes, so much more.  \n\n\n\u003cimg width=\"3840\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/487c9a31-7af2-4e10-b10c-919d92c80c70\" /\u003e\n\n\n\n---\n\n## Interop Plugins\n\nPCGEx has companion plugins for specialized integrations:\n\n| Plugin | Description |\n|--------|-------------|\n| **[PCGEx + ZoneGraph](https://github.com/Nebukam/PCGExtendedToolkitZoneGraph)** | Generate ZoneGraph data for AI navigation from PCGEx clusters |\n| **[PCGEx + Watabou](https://github.com/Nebukam/PCGExtendedToolkitWatabou)** | Import procedural maps from Watabou's generators |\n\n---\n\n## For C++ Developers\n\nPCGEx is designed for extensibility. The plugin provides a robust framework for creating custom PCG nodes with:\n\n- **Processor Pattern** — Per-input processing with automatic parallelization across threads\n- **Factory System** — Pluggable operations (filters, blenders, samplers) via a Settings → Factory → Operation pipeline\n- **Data Facades** — Type-safe, cached attribute access with thread-safe buffer management\n- **Cluster Infrastructure** — Full graph/topology data structures ready for custom algorithms\n\n### Architecture\n\nThe plugin is organized into **core modules** (foundational infrastructure) and **element modules** (node implementations):\n\n**Core Modules:**\n```\nPCGExCore          → Data facades, threading primitives, macros, containers\nPCGExGraphs        → Graph/cluster structures, node/edge topology\nPCGExFilters       → Composable filter system with manager orchestration\nPCGExBlending      → Attribute blending with multiple blend modes\nPCGExCollections   → Asset collection management, weighted picking\nPCGExFoundations   → Polylines, tangents, geometric primitives\nPCGExProperties    → Unified property system across modules\nPCGExMatching      → Pattern matching framework\nPCGExHeuristics    → Heuristic calculations for pathfinding\nPCGExNoise3D       → Procedural noise\n```\n\nAll processing runs **off the game thread** with pre-allocated buffers and parallel-safe patterns. Custom nodes inherit these capabilities automatically by extending the appropriate base classes.\n\nSee [CONTRIBUTING.md](https://github.com/Nebukam/PCGExtendedToolkit/blob/main/CONTRIBUTING.md) for development guidelines.\n\n---\n\n## Support the Project\n\nPCGEx is free and open source under the MIT license. If it's useful to your work, consider:\n\n- ⭐ **Starring** the repository\n- 💬 **Joining** the [Discord community](https://discord.gg/mde2vC5gbE)\n- ❤️ **Supporting** on [Patreon](https://www.patreon.com/c/pcgex)\n\n---\n\n## Acknowledgments\n\n### Supporters\nCheck out the [Supporters page](https://pcgex.gitbook.io/pcgex/supporters) on Gitbook!\n\nSpecial thanks to [Sine Nomine Associates](https://sinenomine.net/) for generously providing and maintaining the automated Linux build infrastructure.\n\n### Special Thanks\n\n| | |\n|---|---|\n| **[@MikeC](https://github.com/mikec316)** | Reckless experiments, feedback, and suggestions that shaped the plugin into what it is today |\n| **[@Amathlog](https://github.com/Amathlog)** | Epic Games staff, invaluable PCG framework guidance |\n| **[@Erlandys](https://github.com/Erlandys)** | Advanced C++ insights |\n| **[@Syscrusher](https://github.com/sna-scourtney)** | Linux support and maintenance |\n| **[@staminajim](https://github.com/staminajim), [@MaximeDup](https://github.com/MaximeDup)** and **[@EmSeta](https://github.com/EmSeta)** | macOS compatibility |\n\nAnd all the [contributors](https://github.com/Nebukam/PCGExtendedToolkit/graphs/contributors) who make this project better! ❤️\n\n### Third-Party Libraries\n\n- **[delaunator-cpp](https://github.com/delfrrr/delaunator-cpp)** — Fast Delaunay triangulation\n- **[Clipper2](https://github.com/AngusJohnson/Clipper2)** — Polygon clipping and offsetting (modified C++ port, v2.0.1) by Angus Johnson\n\n---\n\n## License\n\n**MIT License** — Free for personal and commercial use. Attribution appreciated but not required.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcgex%2Fpcgextendedtoolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpcgex%2Fpcgextendedtoolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpcgex%2Fpcgextendedtoolkit/lists"}