Thirty — Android 14 Easter Egg Trial
In the previous essay, I mentioned that I bought a Google Pixel 7a in Singapore. A while ago, Android 14 was released, and my phone received the update notification, so I upgraded.
Of course, the first thing I did after upgrading was to check out the Easter egg, just to confirm whether the upgrade was merely a version number change. (Actually, it's been almost a month since the upgrade, and out of sheer boredom, I remembered that I could play around with the Easter egg.)
Process
Entering the Easter Egg
As is well known, the first step to accessing an Easter egg is always to find "About Phone" and then frantically tap the Android version number several times.
This time was no exception—I arrived at this page (though it wasn't full-screen; not sure if that was intentional or just a lazy bug):
Let's take a moment to appreciate this logo. At the top is the outline of an upside-down Android robot, which can also be interpreted as a planet. The green object in the center can be seen as a landing spacecraft, and the surrounding white dots naturally represent other stars. From this, we can deduce that the theme of this Easter egg is likely related to space travel.
Try long-pressing the center logo—you'll notice your phone vibrating, and the stars around the logo begin to move faster (think about it: when a spacecraft takes off, the vibrations inside the cabin are quite noticeable, so this design aligns well with the physics involved).
After about six seconds, you'll enter the main interface of this Easter egg game.
Easter Egg Main Content
It seems that every time you enter the easter egg, you spawn at this fixed coordinate:
Then, when you try to swipe the screen, the game interface changes to this:
There are some relatively technical terms here, so I'll provide explanations:
- STAR: Refers to the star.
- CLASS: I believe this refers to spectral classification. For example, the Sun's spectral class is G2V, so its classification is G. Common classifications, from highest to lowest surface temperature (and from largest to smallest radius), are O, B, A, F, G, K, M (Oh, Be A Fine Gal, Kiss Me).
Excerpted from https://en.wikipedia.org/wiki/Stellar_classification
- RADIUS: Refers to the star's radius. An A-type main-sequence star has a radius approximately 1.4 to 1.8 times that of the Sun, and the Sun's radius is about 696,340 km. This means the radius of an A-type main-sequence star typically ranges from about 976,000 km to 1,253,000 km. The value shown in the image is
5256, so I'm not sure what unit this is. - MASS: Refers to the star's mass. An A-type main-sequence star typically has a mass between about 1.4 and 2.1 solar masses. The Sun's mass is
kg, so the mass range for an A-type main-sequence star is kg. The value in the image is 2.28e+11, so the unit might bekg (though I'm not sure what significance this unit has). - BODIES: Refers to the number of planets captured by the star.
- THR: After asking ChatGPT, I learned this stands for thrust, which essentially means acceleration according to Newton's second law.
- POS: Refers to coordinates, with the same unit as RADIUS. It's unclear what the reference point is, but it's likely the star's center of mass.
- VEL: The spacecraft's velocity. I won't bother with the unit.
Going back to the image, you'll notice a thin cyan line in the upper right corner. If you move around it, you'll see it curves slightly. This suggests it might be a planetary orbit. To test this hypothesis, I asked ChatGPT to write a Python program that calculates the center of a circle given three points:
import numpy as np
def find_circle_center(x1, y1, x2, y2, x3, y3):
"""
Find the center of a circle passing through three points (x1, y1), (x2, y2), and (x3, y3).
"""
# Calculating the midpoints of lines joining points
x12_mid = (x1 + x2) / 2
y12_mid = (y1 + y2) / 2
x23_mid = (x2 + x3) / 2
y23_mid = (y2 + y3) / 2
# Calculating the slopes of lines joining points
m1 = (y2 - y1) / (x2 - x1) if x2 != x1 else float('inf')
m2 = (y3 - y2) / (x3 - x2) if x3 != x2 else float('inf')
# Calculating the slopes of perpendicular bisectors
if m1 != 0:
m1_perp = -1 / m1
else:
m1_perp = float('inf')
if m2 != 0:
m2_perp = -1 / m2
else:
m2_perp = float('inf')
# Handling the case of vertical lines
if m1_perp == float('inf'):
x_center = x12_mid
y_center = m2_perp * (x_center - x23_mid) + y23_mid
elif m2_perp == float('inf'):
x_center = x23_mid
y_center = m1_perp * (x_center - x12_mid) + y12_mid
else:
# Solving linear equations to find the intersection point of the perpendicular bisectors
A = np.array([[1, -m1_perp], [1, -m2_perp]])
B = np.array([y12_mid - m1_perp * x12_mid, y23_mid - m2_perp * x23_mid])
center = np.linalg.solve(A, B)
x_center, y_center = center
return x_center, y_center
# Example coordinates
x1, y1 = (1, 1)
x2, y2 = (4, 5)
x3, y3 = (7, 4)
# Find the circle center
circle_center = find_circle_center(x1, y1, x2, y2, x3, y3)
circle_center
I arbitrarily selected three points on this cyan orbit (it's quite difficult to bring the spacecraft to a complete stop, so the margin of error is about
Therefore, the main task of this game (as far as I can tell) is to find the star and its 9 planets. The methods are straightforward: for the star, just head toward
Stellar Section
Let's start with the stellar part. The star looks like this, white in color, which aligns with the characteristics of an A-type star. There is strong gravity outside the star, but inside it, objects move at a constant velocity (I find it hard to believe there's no gravity inside the star). Also, could those white lines surrounding the star be solar prominences?
I initially thought something special might happen near the star's center of mass (at the coordinate origin), but nothing out of the ordinary occurred.
Outside the star, there are some reddish orbits that fade from light to dark. Their purpose isn't entirely clear.
Planetary Section
Unlike stars, planets have solid interiors. The spacecraft cannot enter them but can land on their surfaces (if landing is successful, a corresponding message will appear in the top-left corner). The red orbit around the planet is likely the satellite orbit (though no actual satellites appear).
According to relevant physical principles, the closer a planet is to the star, the faster its orbital speed. The planet shown in the image is the first from the inside, and it can be seen that I attempted to land multiple times (the length of the green line represents the spacecraft's speed). Ultimately, I succeeded by maintaining a relatively low speed.
Additionally, I tried adjusting speed and trajectory to become a satellite of some larger planets but was unsuccessful.
Below is an explanation of some planetary-related terms displayed in the top-left corner (for specific details there are too many technical terms, and I don't recognize them all please look them up yourself):
- BODY: Planet name, with numbers indicating its position from the inside out.
- TYPE: Planet type.
- ATMO: Atmosphere type.
- FAUNA: Fauna biome.
- FLORA: Flora biome.
In short, after exploring all nine planets, you will notice that the spacecraft information in the bottom-left corner disappears. I believe this means the Easter egg has been completed.
Miscellaneous
- This map has boundaries, with a radius of approximately
, also marked by a red line that the spacecraft cannot cross. - The project source code is available on GitHub and is entirely written in Kotlin.
- (Updated on 11/14/2023) It seems the map changes daily. When I checked today, it had become
Upsidedowncake Alfredo Grotesque, classified as type G. Flying near the star confirmed it was yellow. - (Updated on 11/14/2023) The UDC number also seems to be related to the current date. I speculate that "3" represents 2023, "10" represents November (counting from 0? See here), and "14" represents the day. The specific implementation can be seen at line 104 here.