Procedural Coastline Generation Tool in Unreal Engine
A Wave Function Collapse (WFC)-based tool for artists and designers to generate island coastlines procedurally.

🎓 About the Project
This project was a collaboration between students at Breda University of Applied Sciences. I focused on creating a procedural coastline generation tool for artists and designers.
The tool was developed using C++ and integrated into Unreal Engine. The initial prototype was built in Unity.
📂 Source Code
This project was hosted on Perforce as part of a collaborative workflow, and the source code is not publicly available.
🛠️ Skills Developed
- C++ Development: Implemented the tool’s core logic and Unreal Engine integration.
- Agile Methodology: Worked iteratively in a team, conducting regular stand-ups and sprints.
- Collaboration: Coordinated with designers and artists to align tool functionality with creative goals.
- Research Skills: Studied Wave Function Collapse algorithm and implementations to establish feasibility of the tool.
- Prototyping: Built the initial tool prototype in Unity for rapid testing and feedback.
- Unreal Engine Workflow: Integrated C++ tools into Unreal Engine and ensured usability for non-programmers.
⚙️ Key Highlights
Tile-Based Input for Procedural Generation
I initially tried using the 2D tile editor in Unreal Engine, but I found Tiled to be much more efficient for the designers and artists.
The tool uses a .tmx file specifying tile types. The system dynamically generates the coastline and mainland tiles that fit together based on the their user defined sockets.



Constraint-Based Tile Placement
Designed a WFC algorithm that enables defining 3D tiles and their connections with other tiles using sockets. It also generates all the sockets for rotated tiles if the user enables that setting.



A* Pathfinding for Road Generation
Incorporated an A* pathfinding algorithm to generate roads between specified points. The algorithm avoids obstacle objects, ensuring that roads go around the island's gameplay objectives or props.

🎥 Watch the Trailer
In addition to creating the procedural tool, I also created the trailer for this project.