Created in Unreal Engine, my Weather Tool is an editor utility that creates a dynamic weather system in the project to which it is atatched. It is aimed towards designers who may want a weather system in their project but do not have the time or ability to create one themselves.
The tool's functionality comes in two main parts: the editor utility widget and the Weather Volume. When attached to a project, the user must place one or more weather volumes in the level - these are boxes that are invisible during gameplay but will contain all of the generated weather. Next, they can run the editor utility widget, and they will be presented with a series of options to help them create their desired weather. They may choose which season they would like, as well as which climate, from the options of Tropical, Arid, Polar, Mediterranean and Temperate. The Erraticism value determines how quickly the weather changes. Enabling the day/night cycle will make the sun start moving in the sky, the rate of which is controlled by the value in the Day Length box.
I created this project entirely in Unreal C++. Though I began by prototyping using Blueprint, I quickly realised that it wasn't providing me with all the options I needed, so I turned to code to achieve the results I wanted. All of the weather calculations are performed in the editor utility, and it finds the information it needs by reading a data table that stores all the information about each weather type, season and climate. It cross-references the table with the data entered by the user and generates the correct weather based on the inputs. This data is stored in structs and is read by the Weather Volume, which is referenved by the editor utility via a function that looks to find the Weather Volumes in the world. The volume then stores the data in its own structs, and uses Niagara parameters to make the weather visible. To enable the erraticism, the editor utility will generate multiple different versions of weather that can fit the criteria, using maximum and minimum values for weather features such as rain and snow. These will then be added to a queue in the Weather Volume, which the program will go through at the rate determined by the erraticism value. When weather is dequeued, it gets enqueued at the back of the queue so that, once the system has reached the end, it will start again, ensuring that the level never "runs out" of weather. Weather is also scaled to fit the dimensions of the weather volumes, so that there are a reasonable number of particles to fit the shape.Â
Demonstration Video