In September of 2016, Thomas Petitjean, Krishna Sriram, Yang Zhang, Marco Cermusoni, and myself formed a team to take on the challenge of the Centre for Digital Media's rookie Design Jam. Having just met each other, we quickly find a groove and had 48 hours to create a prototype that fit into an educational museum exhibition about outer space.
We did an inventory of skill sets, and the strongest idea that came out of our brainstorming was to create a planet generator, that would educate students in the age bracket of 8-14 years old, about what makes life on Earth possible.
Because we only had 48 hours, we started out very low resolution, proving out that we could create what we had envisioned. We created paper prototypes to test some of our ideas, and had something functional by the end of the 48 hour period. Our project was received very well, and after the design jam we had the option to disband and start completely new projects. We were all in agreement that we wanted to continue working on and polishing the planet generator we had started. So we undertook an extended design jam over the remainder of the term, finishing our prototype.
We worked in iterative cycles, or sprints, slowly building towards our goal of creating a robust planet generator that could teach something substantial. We did a lot of research into the sciences and school curriculums, to ensure our design was well informed. We reached out to local elementary schools, to conduct interviews with teachers and get out prototype into the hands of people of the education environment and students. We learned a lot about testing our ideas in this phase, and about what it takes to function well as a team working on numerous different tasks.
We used Substance Designer and Unity to simulate the effects of a planet changing with several variables, and had a mathematical model that governed the accuracy of these variables. The physical attributes of the planet within the solar system would then affect the outcome of what kind of planet you generate. These variables included:
- Distance to the Sun
- Water to Land Ratio
- Atmospheric Composition
- Planet Scale
We encountered several challenges here from a design perspective, such as how best to illustrate the composition of planetary atmospheres. Our solution was create a coloured glow around the planet, each colour representing a different element present in Earth's Atmosphere. Because our application was meant to educate students about what makes life on Earth possible, our generator only explores variations of Earth-like planets. In the future, if we had more time to develop this application, we could further explore different kinds of planets that you might find life on.
This is a video capture of our final prototype, delivered after 3 months of iteration. We created a companion character, Chuck Woodlands, to guide the user on their journey of creating a planet.
My main task in this project was to create the planet generator functions in Substance Designer, and implement them in Unity with our Programmer Rafael. This is the master graph for the Substance that drives our procedural generator in Unity. Creating this graph was my main task for the semester. With it you can change many parameters that allow you to alter the surface of your planet. From a icy wastelands, to hot lava worlds, to Earth-like planets, the generator can dynamically change the planet based on the physical variables in Unity of the planet, and mathematical model we created to correspond with this generator.
For instance, if you move your planet to close to the sun, it will turn into a hot lava world. If you move it too far away, it gradually transforms into an icy wasteland. Our application focused on educating middle school students between the ages of 10-13 about the goldilocks zone, and the fine balance of what makes life on Earth possible.
In this Substance Graph in particular, I learned a lot about optimization. Because we needed the generator to perform well on relatively low-end computers, we needed it to be quick. To optimize Substance graphs, one key trick is to re-use the same noise nodes as many times as you can. In the bottom left of the Master graph you can see that I isolated 5 noise nodes that we used innumerable times through each section of the graph. This vastly improved the performance of the generator. When using Uniform Colour nodes, you can also set them to Absolute in terms of their hierarchy status, to reduce their draw size to 16*16 pixels. Because they are one solid colour, it is unnecessary to have a lot of resolution. Make sure that any subsequent node is set to "Relative to Parent," so that the 16*16 resolution is not propegated down to your output.
This was a wonderful project to work on as an introduction to what was in store for us in the next semester at the CDM. Because we were doing a project related to education, we go a head start on most of our cohort in approaching a project with a ton of research. We also got to get in touch with some working professionals in the education industry that we essential in shaping the educational content of our project. I have nothing but great memories of this project, which despite the challenge, turned out really well.