Samuel Jackson's Portfolio
Project: World Seed
Final-Year Project
How Procedural Generation can improve the level-design workflow
World Seed is my Final-Year University project.
The project set out to find a method where a designer can easily and quickly create/modify enviroments. Specifically this project was scoped to specifially for a top-down enviroment.
The key features of the project are the following:
-various Landmarks are used to generate play spaces.
-Fully exposed Blueprint Graph for creating procedural room / Corridor placements.
-Data-Table contains all assets that are used for the project.
Source-Code
World Seed is my Final-Year University project.
The project set out to find a method where a designer can easily and quickly create/modify enviroments. Specifically this project was scoped to specifially for a top-down enviroment.
The key features of the project are the following:
-various Landmarks are used to generate play spaces.
-Fully exposed Blueprint Graph for creating procedural room / Corridor placements.
-Data-Table contains all assets that are used for the project.
Generation System
The main principle behind the generation system is to use the landmarks to inform the system exactly how the designer wants the enviroment to look. Futhermore, as long as the assets are created inside a uniform square box (Size is defined inside the code but can be changed.) an artist can quickly create polished assets for the system. Due to this, a designer can already start blocking out their enviroments and once it's time to add the new assets, all that needs to be done is have them added to the Data-Table.
The main principle behind the generation system is to use the landmarks to inform the system exactly how the designer wants the enviroment to look. Futhermore, as long as the assets are created inside a uniform square box (Size is defined inside the code but can be changed.) an artist can quickly create polished assets for the system. Due to this, a designer can already start blocking out their enviroments and once it's time to add the new assets, all that needs to be done is have them added to the Data-Table.
Landmarks
Types and Features
There are a number of pre-created landmark and when it comes to creating a new landmark, it's as simple as simple as inheriting from the base class and overriding the "ApplyLandmark" Function.
the following landmarks are currently implemented:
Standard: Simple Box shape.
Corridor: Paths from point A to B. You can define the width and add additional anchor points.
Circle: A circular Landmark. Can define radius.
Void: Tells the generator not to generate the meshes for any affected Cell.
Each landmark comes with the ability to set whether it adds to the terrain or removes away from it. Furthermore channel controls the order the landmarks are applied.
There are a number of pre-created landmark and when it comes to creating a new landmark, it's as simple as simple as inheriting from the base class and overriding the "ApplyLandmark" Function.
the following landmarks are currently implemented:
Standard: Simple Box shape.
Corridor: Paths from point A to B. You can define the width and add additional anchor points.
Circle: A circular Landmark. Can define radius.
Void: Tells the generator not to generate the meshes for any affected Cell.
Each landmark comes with the ability to set whether it adds to the terrain or removes away from it. Furthermore channel controls the order the landmarks are applied.
Style Graph
Procedural-Generation Controls
The Style Graph is my solution to providing designers a way to quickly procedurally generate enviroments.
There are currently two versions implemented, a base class and a child class designed for Dungeon like enviroments.
The dungeon class provides plenty of tools used to place rooms and connect them together, furthermore it also has the added functionality to determine when "Rooms" are overlapping, automatically merging them logically inside the algorithm while leaving the Landmarks intact.
The Style Graph is my solution to providing designers a way to quickly procedurally generate enviroments.
There are currently two versions implemented, a base class and a child class designed for Dungeon like enviroments.
The dungeon class provides plenty of tools used to place rooms and connect them together, furthermore it also has the added functionality to determine when "Rooms" are overlapping, automatically merging them logically inside the algorithm while leaving the Landmarks intact.