Developed over winter break between semesters, the Map Generation System represents a deep dive into procedural generation within game development. Inspired by the breathtaking landscapes of Genshin Impact, this project sought to replicate the thrill of exploring a stylized world through procedurally generated maps. With features like biomes, roads, rivers, and cliffs, the system pushes the boundaries of dynamic environment customization and interactivity. Also allowing for users to edit and create Maps
The backbone of the Map Generation System lies in its sophisticated use of Voronoi diagrams, Delaunay triangulation, and simplex noise to craft diverse and engaging landscapes. This procedural foundation allows for the creation of:
Interactive Maps: Using Unreal Engine's Slate UI framework, I developed a custom element that enables users to pan across the map, zoom into details, and select nodes for editing. This was achieved by managing a virtual viewport that renders only the visible portions of the map, optimizing performance.
Dynamic Biomes: Two layers of simplex noise, representing elevation and moisture, dynamically assign biomes to nodes. This method ensures a rich variety of environments, from lush forests at lower elevations with high moisture to arid deserts at higher, drier locations.
Natural Borders and Features: Applying Bézier curves to Voronoi edges introduces organic shapes to the terrain, delineating roads, rivers, and cliffs with naturalistic precision. Each node is capable of representing distinct biomes, further enriched by a mesh generation process that visualizes the terrain's varied features.
Venturing into Unreal Engine for the first time presented a steep learning curve, from mastering the Slate UI system to understanding mesh generation. Key challenges included:
Self-Learning Advanced Concepts: Delving into delaunay triangulation, voronoi nodes, and simplex noise without prior experience required extensive research and experimentation.
Optimizing Performance: Implementing efficient rendering techniques for the procedural map, ensuring that only the necessary parts of the map are processed and displayed at any given time.
This project was not only a technical challenge but also a profound learning opportunity, solidifying my understanding of OOP principles, algorithm optimization, and the intricacies of game engine architecture.
The journey of the Map Generation System is far from over. Future directions include:
3D Landscape Rendering: Leveraging the existing map data to transition from 2D representations to fully realized 3D landscapes, aiming to create even more immersive exploration experiences.
Performance Optimization: Focusing on node instancing and refining the procedural generation algorithms to enhance scalability and responsiveness for larger, more complex maps.
Expanded Map Features: Continuing to enrich the map with additional elements such as settlements, bridge generation, dynamic markers.