现充|junyu33

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:

Excerpted from https://en.wikipedia.org/wiki/Stellar_classification

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 ±200): (45223,77614),(46619,76765),(48420,75616). The calculated center is approximately (2193,310), which indeed lies within the star.

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 (0,0); for the planets, first locate a cyan orbit, then follow it—you'll eventually encounter them.

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):

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

  1. This map has boundaries, with a radius of approximately 199,988, also marked by a red line that the spacecraft cannot cross.
  2. The project source code is available on GitHub and is entirely written in Kotlin.
  3. (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.
  4. (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.