December 12, 2019
HFFWS Generation System Design
Scenario and Create Class Interaction
Detail on Scenario-Create Interaction
My first pass on deciding on how to have the Scenario classes and Create classes interact uses the following flow:
- Scenario holds all parameter ranges
- Scenario picks random values within ranges
- Scenario holds these values in various fields (read only)
- Scenario calls overall creation method within each Create class
- Scenario passes parameters to Create class through this Create method
The overall idea here is that the Scenario class can hold all the parameters necessary for all its Create classes, as well as the Inspector interface for setting the ranges for these parameters (so the designer can design the scenario from this single class object). As the Create classes determine their varied values within the sets of parameters, they can feed information back to the Scenario class to update how the other Create class parameter ranges are set. So if the variation chosen for a certain Create class does not work with certain values in another Create class anymore, that range will be updated to ensure all the Create classes work together properly no matter the values selected as it goes along.
Next Step
Create Scenario Gameobject Hierarchies
I want each generated scenario to be childed to an overall newly generated gameobject. Each scenario should create an empty gameobject overall that acts as the parent for each full, individual scenario. I am hoping the positioning of this object will also serve as an easy way to space out the various scenarios with the DemoManager. This will just help with overall organization when demoing the project in Unity.
Creating New Scenario Objects
Currently the system has a single instance of each ScenarioManager object that has its values updated to create a single scenario, then they get overwritten to make another scenario instance. It may make more sense to create a new instance of that ScenarioManager class everytime a scenario is created so that the data is conserved for me to check later. This will also make sense as I add seeding to the random generation as well.