2019 NASA Space App ChallengeNovember 08, 2019
- Second Place in Taipei Region
- Global Finalist
- Global Honorable Mention
THE CHALLENGE | BUILD A PLANET
Your challenge is to create a game that will allow players to customize the characteristics of a star and design planets that could reasonably exist in that star system. Ensure that this game provides an educational experience for players!
Set physics and chemistry dual-engine in one game! Let you build your own simulation star system for just 30 seconds!
We design a modular game program, and let the players set their own parameters in the game. Through the scientific engine developed by our team, in addition to the physical principle design through the modular way, we also add the chemical engine. This environment is not really arbitrary. Through the scientific engine, we can ensure that players’ design can exist reasonably. The concept of the physical and chemical dual engine of science engine will greatly expand the freedom of the game in the environment setting, and cut into more simulations: players can customize the environment parameters, and the generator of science engine can generate the atmosphere color changes due to different chemical components. In the future, it is possible to even simulate the planet's environment that can gestate life!
With modern technology, we have been able to visualize the mystery of the cosmic operation and evolution through many sandbox games and simulators. Since our childhood, we have already known that in our solar system the eight planets are quite different in size and chemical characteristics. Now we also know that there are many exoplanetary systems and they are greatly different from one another. Over the years, we have been able to categorize the stars, planets, and their relationship into different types, which seem to demonstrate large varieties. With such, perhaps there does exist a kind of stellar system of your preferred design and that would be your Pandora!
At present, most simulators in games use only physical engines to build up the environment and human actions. However, the outputs of some engines could be quite different from the real-life experience. In particular, the consideration of chemistry is often ignored although, in reality, it is sometimes of equal importance as physics, being a key for making our world beautiful.
Therefore, we decided to create our own game for the public in order for them to simulate their own planetary environment with properly built-in physics and chemistry. Through the game, we wish to embed science education into an entertaining experience.
Our goal is very clear, that is to design a science engine including physical and chemical engines, and turn it into a game program so that our science engine can let players experience the most real dream world in the game.
- 1. Architecture design
First of all, we design an architecture for this project to ensure the direction of the team's work and redefine the objectives to be achieved. The following is the framework of our work:
Figure 1. Adam plan architecture
We use Grafect architecture to do system design through simple and clear graphical way to describe system process architecture and to use the traditional text description method to clearly express the action and state, and make the process architecture easier to understand. Combined with modular design, we can not only improve the efficiency of system design but also bring convenience for future open source and for future projects expansion.
In the system design, we can divide the system into upper and lower parts with "enter the game" as the boundary. The upper part is "environment generating program" and the lower part is "simulator running program". We will explain the design and how to use it in the following.
- 2. Environment Builder
We will generate three pieces of data: surface, terrain height, and atmospheric coating (2). The environment generating program is mainly generated by simulating the surface texture in NASA's planetary atlas.
Figure 2. The surface data (upper right), the terrain height (upper left), the atmosphere (lower left) are generated by the environment generation program and wrapped on the three-dimensional sphere.
It can be grinded from (1). The environment generation program has four actions, which can be divided into two major items:
- 2.1 Human-machine interaction
Considering that our target audience is beginners and amateurs of science, we hope to reduce the simulation of gate biology and achieve the goal of promoting education through the starting point of "you don't need a line of code to play in the environment you want".
We use a webpage and the simple operation of drag bar (3) to let players keep the right of environment setup, and let players create their own planet step by step through the guided interface.
Figure 3. Setting human-machine interface through the simple guided environment
- 2.2 Engine generator and checker
The generator and checker is a function of our science engine. The checker will calculate whether the model conforms to scientific principles after the generator synthesizes data. We can clearly see the items that the inspector will check as below:
- 2.2.1 Star checker:
In astronomy, the classification of stars is to classify the temperature of the stars following the photosphere, along with the spectral characteristics, and then the various properties derived.
According to Wien's display law, the temperature of the object surface can be measured by the wavelength, so we can classify it by the absorption spectral lines of the spectrum. Because within a certain temperature range, only specific spectral lines will be absorbed, so the temperature of the star can be determined by examining the absorbed spectral lines in the spectrum. 
Spectral classification we choose is the most basic star classification: "Harvard spectral classification":
Table 1. Harvard spectral classification
- 2.2.2 Planet checker:
In the part of the planet, we reserve all the rights for players, so players can play their own creativity on the planet. Players can use more than 40 elements provided by us to freely match the proportion of air, water, and land ingredients. Through the chemical engine in science engine, the planet will present different colors.
Figure 4. We have designed a variety of chemical elements for players to choose from.
- 3. Simulator running program
In the part of the simulator, we designed the component architecture as follows (5):
Figure 5. Simulator component architecture
- 4. Science engine
- 4.1 Basic parameters
At present (2019 / 10 / 20), this work presents 3D environment from 2D perspective, so in the third dimension of basic parameters, we will deal with it through the way of "perspective conversion" in the physical engine.
- Position (3D)：m
- Velocity (3D)：m/s
- Acceleration (3D)：m/s^2
- Radius of the planet (1D)：m
- Mass (1D)：kg
- Gravity (2D)：N = kgm/s^2
- Inertia (2D)：N = kgm/s^2
- Friction (2D)：N = kgm/s^2
4.2 Physical engine
- 4.2.1 Orbit simulation
Richard Feymann published his “The Feynman Lectures on Physics” when he was teaching at California Institute of Technology. He talked about the calculation of planetary orbits in Volume I, Chapter 9, section 7, planetary motion :
"The above analysis (numerical analysis) is obviously good for the oscillating motion of the object suspended on the spring. So can we use a similar method to analyze the motion of planets around the sun? We want to know if we can use this method to get an ellipse like orbit. To simplify the problem, we will ignore the motion of the sun itself. Suppose a planet starts from a certain position and moves forward at a certain speed, and it moves around the sun along a certain curve: we will use Newton's law of motion and the law of gravity to analyze the motion of the planet, hoping to understand its trajectory. " ——The Feynman Lectures on Physics
Feynman used (6) in  to get equation (1).
Figure 6. The force of gravity on the planet.
- 4.2.2 Numerical Analysis
In short, using computers to solve some problems. Although the answer can't be completely summed up, it can be very close to the desired solution. Taking the orbit simulation as an example, we will divide the elliptic curve into finite points and calculate the position, velocity and acceleration of the planet at each time point. To calculate these changes, the concept is like differentiation:
Time is a continuous thing, changing all the time. Time can be divided continuously, but in this way, the amount of data must be infinite. Therefore, we can only use a short period of time as the basic unit to limit it to a limited amount, and the amount of change varies with the minimum unit time.
In mathematical definition, ϵ can be as small as it should be, which is also known as infinitesimal. However, computers are not human beings after all, unable to deal with continuous things. We can only minimize the dispersion and approach the continuity. So drawing orbit is actually a difference and a sum, not a calculus. There is still a time difference to consider, and it is impossible to meet the requirements of infinitesimal.
- 4.2.3 Projectile motion
The projectile motion can be divided into horizontal and oblique. Because of the independence of motion, the motion of a particle in a plane can be regarded as one-dimensional motion in two vertical directions, and the motions in two directions do not interfere with each other. The projectile motion can be regarded as composed of the equal velocity motion in horizontal direction and the equal acceleration motion in vertical direction. Because of the independence of the motion, the two directions can be treated separately and independently.
The projectile motion can be divided into oblique (3) (4) and horizontal (5) (6). The application of oblique motion, including throwing and figure moving, can be regarded as oblique motion. The horizontal motion can be used to simplify collision.
- 4.2.4 Perspective transformation
At of 2019 / 10 / 20, this work presents 3D environment from 2D perspective. So in the third dimension of basic parameters, we will deal with it through the way of "perspective conversion" in the physical engine. We are looking at the simulator from the perspective of the top view in the three views of the project. Due to the expansion of the field of view, the higher the object flies, the larger the object will feel subjectively; and vice versa.
Figure 7. According to the top view, the higher the height, the larger the object.
Therefore, we multiply the length and width of each object by a parameter equal to its altitude to achieve this effect.
- 4.3 Chemical engine
Physics engine has been widely used in the game. For Adam Project, physics is important, but we need to use the color of elements to describe a more colorful simulator.
In this work, we add 40 elements and compounds to the chemical engine, including 24 solid elements and molecular compounds, 10 liquid solutions and 10 gas elements and compounds. We can make these unique properties present in our game through chemistry. Here is the chemical formula we are adding at present:
- S8 + 8 Fe → 8 FeS
- 2 Fe + 3 Cl2 → 2 FeCl3
- 32 FeCl2 + 8 SO2 + 32 HCl → 32 FeCl3 + S8 + 16 H2O
1. Game system results
1.1 create environment
- star temperature: 8169 K
- star radius: 4.4 solar radius
- stellar mass: 1.4 solar mass
- planetary radius: 7580 km
- planetary mass: 28086.37 earth mass
- planetary atmospheric composition: O2 36%
- composition of planetary highland region: Fe 42%
- composition of low-lying area of Planet: 22% H2O
- planetary rotation speed: 11 km / HR
- distance from Star: 1 Au
Figure 8. Create environment page
- 1.2 Simulator screen
- 1.2.1 Character moving forward, rotation and throwing and Planetary system orbit simulation
- 1.2.2 Game over
When a planet's orbit is too close or too far to its center of gravity, falls into a star, or escapes from the star system, it is judged as the end of the game.
Figure 9. The end of the game is equivalent to your planet falling into a star
2. Science engine results
- 2.1 Generators and inspectors
When choosing star parameters, we can define how many radii and masses a star needs at least if it needs to buy enough temperature according to Harvard spec classification.
- 2.2 Planetary orbit simulator
Figure 10. Track simulator in the upper right corner of the game
Figure 11. Track chart simulated by Python
1. Build on the network
We set up the experience environment on the web, so players don't need to install any hardware and software. Players can play the game as long as they connect to WiFi. The game adopts modular design, it provides developers the feasibility to develop more applications or add more resources to enrich the engine.
2. Building a low threshold scientific community
We hope to develop this game and science engine into an online community in the future. Through this community, some senior professionals or experts can conduct more physical simulation under our platforms, such as adding hydrodynamics, relativity, and even quantum phenomena into the engine, or making some more advanced integrated applications, such as we can try four spins on the moon can wing UAV fly? or on Mars? What are the alternatives if the quadrotor is not working?
These problems are very interesting, but at present, it is not easy to do simulation, let alone experiment. So I hope that through our works, we can use a very simple form of the eb page to lower the threshold of entry and retain all the functionality behind him. We also hope that more and more people will be able to join this community in the future.
3. Combining with the trend of modern science and technology, developing infinite application
Of course, we are not only able to develop. We are extremely looking forward to this experience from combining AR, Mr, VR, through the first-person 3D form to bring the planet we created to us. Through the emerging technology of our era, combined with the game we developed, we hope that experiments that were only possible in space or even in dreams can be realized by our side. I believe these are very helpful and exciting for many entrants, educational institutions, amateur science lovers, and many other occasions!