High-Level Project Summary
The project is an interactive 3D game for viewing moonquakes from specific missions on the moon or specific moonquake events in a 5-year time series. In the game, 3 planets–Earth, Mercury, and Venus–and the Sun were designed to create a mini-solar system, and most importantly, the moon. The project creates scientifically accurate, visually appealing moonquake maps. Being a game, the project provides a fun, interactive way that invites scholars to see moonquake maps–as the user is a spaceship pilot. The project used longitude and latitude values from the provided .csv files to create the moonquake maps–in a process that converts 2D plots to 3D objects, and finally components of the game.
Link to Final Project
Link to Project "Demo"
Detailed Project Description
Overview of the game experience
Our project plots moonquake maps in the form of an engaging, interactive game. The game works where the player is a pilot on a spaceship. He can view the controls and instructions. Then, he can move the spaceship freely or land on any plant in a small solar system–consisting of three planets, Earth, Mercury, Venus, and the Sun. Most importantly, he can view the moon in 3d and land on it. The player can toggle between the normal view of the moon and 6 other moonquake maps, with each map representing the moonquake data presented in the .csv files of the Apollo Passive Seismic Experiment Expanded Event Catalog. Furthermore, when the player is viewing the moon –the normal view of the moon– , they can toggle 35 different moonquake events from 1971 to 1976–this is the only range of years provided due to the limited data available.
Extracting data from .csv files & creating 2d plots
First, we extract the longitude and latitude values from the columns in the .csv files. Then, we apply a formula to change the longitude and latitude values from degrees to x, y coordinates to be plotted on a 2d plane. The 2D plotted points are represented on a 1024*512 moon map. The moon map is the texture that will be later applied on the 3d sphere. Afterwards, we used the ‘Folium’ library to create a heatmap-like gradient to represent the moonquake location. Code cells are made for each .csv file; and, the code is run to create a plot for each latitude and longitude value to create a moonquake map for that .csv file–which is stored in google drive folder.
We made sure to use all the data available for use to increase the project’s credibility. We also provided a time-series for the user to view a moonquake time lapse but at his own speed–as he can navigate freely through the 35 dates provided. The time-series, the navigation, and the toggling between different sources of data (.csv files) is completely functional and easy to do.
Blender & 3d object creating
First, the planets, the sun, and the normal map of the moon were 3D designed using blender in the shape of a sphere and saved. Then, each 2D moonquake map was designed in 3D and saved in separate folders indicating what .csv files they were extracted from, or if they will be used in the time series, the year and Julian day they occurred on. Furthermore, the spaceship was designed in detail using blender. The pilot can move within the spaceship once he lands on the moon. All of the objects were designed in high resolution and great detail so it doesn’t impact the user’s experience negatively.
Unity and game development
All of the organized 3D objects were uploaded to Unity using their names that indicate either their date of occurrence or which .csv file they were extracted from. The gravity between the Sun, the planets, and the moon was calculated in Unity using Newton's law of universal gravitation and planets were placed in their orbits. Also, lighting from the sun and its reflection from the moon were added to produce a more realistic solar system. Then the moving controls and instructions for moving the ship or landing it were added. The ship moves freely in the mini-solar system. It can also lock on targets so the way to travel to them is clear. Furthermore, the speed of the spaceship is visible. The spaceship can move up, down, left, and right. Now for the most important part, we provided two options for the player in Unity. The first is toggling between the 5 .csv file sources and viewing different moonquake maps. Each map has only the moonquake data presented in its .csv source file. The user presses a number from 2-6 with each representing a certain .csv file. If the user presses 1, he will view the normal moonquake map.
The second option is viewing the time-series from 1971 to 1976. As mentioned before, we created a 3D moonquake map for each of the 35 different moonquake events in that range. The user has first to toggle that mode by clicking T then the user can press the right arrow button to move forward in time–with each press moving him one event at a time. After moving forward in time, he can press the left arrow button to go back in time and can go back to .csv viewing by pressing T again. The dates of each moonquake event are shown at the top of the screen.
The project was uploaded to SIMMER.io. It takes about 2 minutes to load as it is a free website and our app is large in size.
What benefits does the project have?
The project offers an engaging, fun way for people to view moonquakes. It provides a game experience to view the moonquake events throughout 5 years and different collections of moonquake data representations. The graphics and game experience are made to be fun, attractive for users, and without errors. We used the project to represent complex numerical data and plots to create a 3D, first person perspective game that shows moonquake maps engagingly.
What do we hope to achieve?
We wish to give users a light experience to view moonquake events and their locations on the moon. We wish to invite gamers to engage in astronomy and explore the vast events in the galaxies–in this case, moonquakes.
What tools, coding languages, hardware, or software did we use to develop our project?
We used google colab for writing the python code and creating the 2D plots–using the .csv files provided by NASA’s Passive Seismic Experiments left on the moon during the Apollo mission. We used blender to design the 3D objects using the 2D plots and data. Then we used Unity, utilizing all the previously created objects to create the game. We created a mini-solar system using Unity, calculating gravity, orbits, light directions, and light reflections to create a scientifically accurate mini-solar system to represent the moonquake map.
Space Agency Data
Using NASA’s catalogs about moonquakes, the data used came from five catalogs: Gagnepian 2006, Lognonne 2003, Nakamura 1979 smlocations, Nakamura 1983 ai locations, and Nakamura 2005 dm locations. All five resources were used to create maps thanks to the info about longitudes and latitudes, and Nakamura 1979_sm and 1983_ai were used to create the time series part of the project.
Hackathon Journey
Our journey can be easily described in one statement: it was an adventure into new territories. Whether it was about how real-life data looks or how programming can be used to model such data, the whole team ended up learning novel concepts. Starting with how longitudes and latitudes can be used to model coordination on digital maps, we learnt about mercator projection and web Mercator projection. Furthermore, we learnt about how data in real life tables modeled can sometimes be incomplete(whether it was about coordinates or magnitudes of the quakes) or in a difficult to use format(time dates). In addition, we learnt how to simulate such findings into a meaningful format such as an interactive game.
We chose the challenge of making the moon map because of how much symbolism we attribute to the moon. It is a symbol for the constant flow of time and how life is always in a state of change. Furthermore, one of our favorite movies -a silent voice, a Japanese animated movie- had a scene where the heroine, who had difficulties in speaking, mispronounced the phrase “I like you(Suki Da)” with “moon(Tsuki)”. This made the main character misunderstand the girl and talk about the moon. To this day, this scene remains one of the funniest and wholesome scenes we have watched, which helped us in choosing the name of our group.
When working on the project, our aim was to generate a 3D map, so we divided our workflow into two sections. The first tackled the formation of the map that would be projected onto the sphere. The second was about creating a unity game that would work as an interactive medium to view the map. However, during the work, multiple problems arose. Luckily, none were unsolvable in the face of our constant research(how to create the heatmap effect) for new information and our resilience to work(having to screenshot each map individually to produce the best results possible). In the end, the journey was a wild one, and we thank god for guiding us through it all and seeing it to the end.
References
- NASA lunar seismic data
- https://pds-geosciences.wustl.edu/lunar/urn-nasa-pds-apollo_seismic_event_catalog/data/
- Blender
- https://docs.blender.org/
- Unity
- https://docs.unity3d.com/Manual/index.html
- Web Mercator projection
- https://en.wikipedia.org/wiki/Web_Mercator_projection#Formulas
- Python
- Folium
- https://python-visualization.github.io/folium/
- Pandas
- https://pandas.pydata.org/docs/user_guide/index.html
Tags
#moonquake, #moon, #game, #open_world, #3D, #map

