Spelunky is © 2008, 2009 Derek Yu and Mossmouth, LLC, and is used under the [Spelunky User License v1.1b](https://spelunky.ai/LICENSE.txt). spelunky.ai is an unofficial fan project, not affiliated with or endorsed by Mossmouth. The game and its assets may not be sold.

Music by George Buzinkai and Jonathan Perry; sound effects made in SFXR. From Spelunky Classic 1.1, © 2008, 2009 Derek Yu and Mossmouth, LLC.

# Moon Room

From the spelunky.ai wiki: <https://spelunky.ai/wiki/moon-room>.

This page describes a secret.

The Moon Room is a bonus room of Spelunky Classic, opened by a win in 10:00 or less, where the player shoots flying targets with a bow for 60 seconds.

![A round target, red with a yellow centre, in a dark ring](https://spelunky.ai/wiki/media/sprites/sHoopsIcon/frames/0%404x.png)

| Moon Room |                                                                   |
| --------- | ----------------------------------------------------------------- |
| Part of   | [High scores room](https://spelunky.ai/wiki/high-scores-room)[^1] |

It's the second of the three secret challenges behind the trophies of the [high scores
room](https://spelunky.ai/wiki/high-scores-room), the ARCHERY CHALLENGE, and the reward for a fast win ([Speedrunning basics](https://spelunky.ai/wiki/speedrunning-basics)). One room, built in
the room editor: ledges on the left for the player, a [Bow](https://spelunky.ai/wiki/bow) to pick up, and an open hall over a floor
of [Spikes](https://spelunky.ai/wiki/spikes), where three bat-shaped targets fly up and down. It's the only bonus room the player can
finish alive: the challenge runs on a 60-second timer.

## Generation

### Getting there

A best time of 600 seconds or less, 10:00 on the game's clock, puts a gold trophy second from the top of the
high scores room's column of trophies, and a door to the Moon Room under it[^1]. Only a win from level 1, without a
[shortcut](https://spelunky.ai/wiki/tunnel-man-shortcuts), sets a time ([Scoring](https://spelunky.ai/wiki/scoring#the-high-scores)). Climbing up beside it, the
board reads MOON ROOM and the goal, SHOOT THE MOVING TARGETS WITH YOUR BOW AND ARROWS\![^2]. It shows the goal for any win, though, however slow, while
the door needs the 10:00 ([The Moon Room's goal for any win](https://spelunky.ai/wiki/moon-room-goal-any-win))[^3]. In the clip, with one win at
11:40, the board shows the goal beside a silver trophy with no door[^4].

**Clip: The Moon Room's goal for a slow win.** With one win timed at 11:40, the high scores room has the time's silver trophy but no Moon Room door. The player climbs the ledges beside the trophies: the Changing Room and the Stars Room read LOCKED, but beside the trophy the Moon Room's goal shows as if it were unlocked. ([video](https://spelunky.ai/wiki/media/clips/quirks/moon-room-goal-any-win/clip.mp4))

### The room

The room editor laid out the whole room, a screen wide: the entrance on the highest of the ledges at the
left, the Bow beside it, Spikes along the hall's floor and a [Spring Trap](https://spelunky.ai/wiki/spring-trap)[^5]. A carved crescent moon hangs on the back wall. As in every bonus room, the bricks
around its edge can't be broken[^6], the player has
8 hearts[^7], and his bombs and ropes can't
be used outside a level ([Sun Room](https://spelunky.ai/wiki/sun-room#the-room)). The room gives him 100 arrows, and picking up its Bow adds
the 6 a new Bow brings[^8][^9].

### The challenge

**Clip: The archery challenge.** In the Moon Room the player picks up the bow, and ARCHERY CHALLENGE BEGINS IN 3... counts down as three bat-shaped targets fly up and down at the right. The 60-second timer starts, and he shoots an arrow every two seconds: one hits the nearest target for a point, and a new one flies in from the top in its place; six seconds later another arrow hits it for a second point. ([video](https://spelunky.ai/wiki/media/clips/moon-room/archery/clip.mp4))

ARCHERY CHALLENGE BEGINS IN 3... counts down at the bottom of the screen, and as it ends three targets fly in
from the top[^10][^11].
They look like Bats, and each flies straight up and down, between 64 and 160 pixels from the top,
as fast as it's worth:

| Target             | Points | Speed                              |            |
| ------------------ | ------ | ---------------------------------- | ---------- |
| Nearest the player | 1      | 1 pixel per step (30 per second)   | [^12][^13] |
| Middle             | 2      | 2 pixels per step (60 per second)  | [^12]      |
| Furthest           | 4      | 4 pixels per step (120 per second) | [^12]      |

From 100 steps in, the timer at the top counts down from 60, a second every 30 steps[^14][^15][^16]. An arrow that hits a target scores its points, beside the
target icon at the top, and the target bleeds and is gone; a new one flies in from above in its place[^17][^18].
Landing on one scores it too, and bounces the player up, as a stomp does; any other touch costs him a heart
and knocks him back, at most once every 30 steps[^19]. In the clip, the player
picks up the Bow, and from the countdown on looses an arrow every 2 seconds from the ledge: the nearest
target falls to the first that hits, for a point, and to the next, 6 seconds later[^20].

### The last 20 seconds

**Clip: The archery challenge's last 20 seconds.** With 20 seconds or less left in the Moon Room, the targets that come back are UFOs, worth 2 more points and faster, and the targets sway as they rise and fall. The player's arrows down a UFO every two seconds, each for 3 points, until the timer runs out at 35 points: FINISHED!, the entrance turns into a door, and he goes through it to the high scores room. ([video](https://spelunky.ai/wiki/media/clips/moon-room/ufos/clip.mp4))

With 20 seconds or less left, each target that comes back is a UFO, worth 2 points more and flying 2
pixels a step faster, and one shot down crashes rather than bleeds[^21][^22].
Every target also sways sideways as it flies below the top of its path, up to 32 pixels to the left, toward the player's ledges[^23].
A shot target's replacement still comes in at its own place, but a stomped one's comes in where the target
had swayed to: it isn't at the middle or far target's place, so it's worth what the nearest is, 3 as a UFO,
and sways from there[^24][^25][^26].

When the timer runs out, the score is kept as the room's best in the high scores, up to 99; the targets
vanish in puffs of smoke, and the entrance becomes a door back to the high scores room[^27]. FINISHED! comes up, then 30 steps later YOU SET A NEW
RECORD! if the score beat the room's best, or BETTER LUCK NEXT TIME..., and the music stops[^28][^29]. The door
leads out to the high scores room, in front of the Moon Room's door[^30][^31].
A death before then ends the challenge at once, with the same score kept[^32]. In the clip, the player downs a UFO every 2 seconds, 3
points each, until the timer runs out at 35 points; he walks off the ledge onto the new door and goes back to
the high scores room[^33][^34].

## Hazards

| Hazard                                              |                                                        |       |
| --------------------------------------------------- | ------------------------------------------------------ | ----- |
| [Spikes](https://spelunky.ai/wiki/spikes)           | Along the hall's floor, below the targets              | [^5]  |
| [Spring Trap](https://spelunky.ai/wiki/spring-trap) | One                                                    | [^5]  |
| The targets                                         | A touch costs a heart, unless the player lands on them | [^35] |

## Trivia

- The room was a basketball game first. Its score is `baskets`, the icon beside it is `sHoopsIcon`, and
  its code still has the lines that made a basket and its rim, commented out[^36]. The basketball itself is in the game, scoring 1 for a
  dunk, 2 for a shot and 3 off a wall, but nothing makes it[^37][^38].
- An older target is in the code as well, a bullseye that scores 1 to 5 by how near its middle an arrow hits
  and sways when 30 seconds are left. Nothing makes it, though the arrow's code still keeps arrows from
  flying through it[^39][^40][^41].

## FAQ

### How do you unlock the Moon Room in Spelunky Classic?

Win a game in 10:00 or less on the game's clock, from level 1 without a shortcut. The [high scores room](https://spelunky.ai/wiki/high-scores-room) then has a gold trophy for the time, and a door beside it into the Moon Room.

### What do you do in the Moon Room in Spelunky Classic?

Shoot the targets flying up and down the room with the [Bow](https://spelunky.ai/wiki/bow) for 60 seconds. Each target is worth 1, 2 or 4 points, and 2 more in the last 20 seconds, when they come back as UFOs.

### How many arrows do you get in the Moon Room in Spelunky Classic?

106: the room gives the player 100, and picking up its Bow adds the Bow's own 6.

### Why does the high scores room show the Moon Room's goal when its door is locked?

That's [a quirk](https://spelunky.ai/wiki/moon-room-goal-any-win): the board tests the best time against 600,000, a number of milliseconds, while the time is kept in seconds, so any win shows the goal. The door itself needs 600 seconds or less.

## See also

- **Related:** [Sun Room](https://spelunky.ai/wiki/sun-room), [Stars Room](https://spelunky.ai/wiki/stars-room), [Scoring](https://spelunky.ai/wiki/scoring), [Bow](https://spelunky.ai/wiki/bow), [The Moon Room's goal for any win](https://spelunky.ai/wiki/moon-room-goal-any-win), [Speedrunning basics](https://spelunky.ai/wiki/speedrunning-basics)
- **Found here:** [Block](https://spelunky.ai/wiki/block), [Bow](https://spelunky.ai/wiki/bow), [Door](https://spelunky.ai/wiki/door), [Spelunker](https://spelunky.ai/wiki/spelunker), [Spikes](https://spelunky.ai/wiki/spikes), [Spring Trap](https://spelunky.ai/wiki/spring-trap)

## References

[^1]: [`objects/oHighscores/create.gml:50-66`](https://spelunky.ai/wiki/source/objects/oHighscores/create#L50-L66)

[^2]: [`objects/oHighscores/draw.gml:41-66`](https://spelunky.ai/wiki/source/objects/oHighscores/draw#L41-L66)

[^3]: [“The Moon Room's goal shows for any winning time.”](https://spelunky.ai/wiki/moon-room-goal-any-win), [docs/quirks.md §1](https://github.com/851-labs/spelunky/blob/441458fcee127d2a4bff9d1cb9b930574f50004a/docs/quirks.md?plain=1#L78)

[^4]: Clip [quirks/moon-room-goal-any-win](https://spelunky.ai/wiki/moon-room#clip-quirks-moon-room-goal-any-win)

[^5]: Room [`rMoon`](https://spelunky.ai/wiki/source/rooms/rMoon), as the room editor placed it

[^6]: [`objects/oMoonRoom/create.gml:11-18`](https://spelunky.ai/wiki/source/objects/oMoonRoom/create#L11-L18)

[^7]: [`objects/oMoonRoom/create.gml:1`](https://spelunky.ai/wiki/source/objects/oMoonRoom/create#L1)

[^8]: [`objects/oMoonRoom/create.gml:9`](https://spelunky.ai/wiki/source/objects/oMoonRoom/create#L9)

[^9]: [`objects/oPlayer1/step.gml:1216-1220`](https://spelunky.ai/wiki/source/objects/oPlayer1/step#L1216-L1220)

[^10]: [`objects/oMoonRoom/draw.gml:10-18`](https://spelunky.ai/wiki/source/objects/oMoonRoom/draw#L10-L18)

[^11]: [`objects/oMoonRoom/alarm_3.gml:1-12`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_3#L1-L12)

[^12]: [`objects/oBatTarget/create.gml:5-7`](https://spelunky.ai/wiki/source/objects/oBatTarget/create#L5-L7)

[^13]: [`objects/oBatTarget/step.gml:1-16`](https://spelunky.ai/wiki/source/objects/oBatTarget/step#L1-L16)

[^14]: [`objects/oMoonRoom/create.gml:4-6`](https://spelunky.ai/wiki/source/objects/oMoonRoom/create#L4-L6)

[^15]: [`objects/oMoonRoom/alarm_0.gml:19`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_0#L19)

[^16]: [`objects/oMoonRoom/alarm_11.gml:1-28`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_11#L1-L28)

[^17]: [`objects/oBatTarget/collision_oArrow.gml:1-11`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oArrow#L1-L11)

[^18]: [`objects/oMoonRoom/draw.gml:5-6`](https://spelunky.ai/wiki/source/objects/oMoonRoom/draw#L5-L6)

[^19]: [`objects/oBatTarget/collision_oCharacter.gml:1-30`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oCharacter#L1-L30)

[^20]: Clip [moon-room/archery](https://spelunky.ai/wiki/moon-room#clip-moon-room-archery)

[^21]: [`objects/oBatTarget/create.gml:10-14`](https://spelunky.ai/wiki/source/objects/oBatTarget/create#L10-L14)

[^22]: [`objects/oBatTarget/collision_oArrow.gml:9-10`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oArrow#L9-L10)

[^23]: [`objects/oBatTarget/step.gml:18-22`](https://spelunky.ai/wiki/source/objects/oBatTarget/step#L18-L22)

[^24]: [`objects/oBatTarget/collision_oArrow.gml:7`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oArrow#L7)

[^25]: [`objects/oBatTarget/collision_oCharacter.gml:13`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oCharacter#L13)

[^26]: [`objects/oBatTarget/create.gml:5-14`](https://spelunky.ai/wiki/source/objects/oBatTarget/create#L5-L14)

[^27]: [`objects/oMoonRoom/alarm_11.gml:2-26`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_11#L2-L26)

[^28]: [`objects/oMoonRoom/alarm_10.gml:1-9`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_10#L1-L9)

[^29]: [`objects/oGame/draw.gml:76-98`](https://spelunky.ai/wiki/source/objects/oGame/draw#L76-L98)

[^30]: [`objects/oPlayer1/other_animation_end.gml:96-109`](https://spelunky.ai/wiki/source/objects/oPlayer1/other_animation_end#L96-L109)

[^31]: [`objects/oHighscores/create.gml:109-113`](https://spelunky.ai/wiki/source/objects/oHighscores/create#L109-L113)

[^32]: [`objects/oPlayer1/step.gml:1903-1908`](https://spelunky.ai/wiki/source/objects/oPlayer1/step#L1903-L1908)

[^33]: Clip [moon-room/ufos](https://spelunky.ai/wiki/moon-room#clip-moon-room-ufos)

[^34]: Replay [`fidelity/replays/bonus-moon-archery.txt`](https://github.com/851-labs/spelunky/blob/441458fcee127d2a4bff9d1cb9b930574f50004a/fidelity/replays/bonus-moon-archery.txt), which the clips [The archery challenge](https://spelunky.ai/wiki/moon-room#clip-moon-room-archery) and [The archery challenge's last 20 seconds](https://spelunky.ai/wiki/moon-room#clip-moon-room-ufos) play

[^35]: [`objects/oBatTarget/collision_oCharacter.gml:18-30`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oCharacter#L18-L30)

[^36]: [`objects/oMoonRoom/alarm_0.gml:1-17`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_0#L1-L17)

[^37]: [`objects/oBasketball/step.gml:31-55`](https://spelunky.ai/wiki/source/objects/oBasketball/step#L31-L55)

[^38]: [“oJordans, oRopeBag, oBasketball and oFireFrogArmed are unreachable”](https://github.com/851-labs/spelunky/blob/441458fcee127d2a4bff9d1cb9b930574f50004a/docs/quirks.md?plain=1#L76), [docs/quirks.md §1](https://github.com/851-labs/spelunky/blob/441458fcee127d2a4bff9d1cb9b930574f50004a/docs/quirks.md#1-bugs-and-leftovers-in-the-11-source)

[^39]: [`objects/oTarget/collision_oArrow.gml:1-22`](https://spelunky.ai/wiki/source/objects/oTarget/collision_oArrow#L1-L22)

[^40]: [`objects/oTarget/step.gml:35-39`](https://spelunky.ai/wiki/source/objects/oTarget/step#L35-L39)

[^41]: [`objects/oArrow/step.gml:24-37`](https://spelunky.ai/wiki/source/objects/oArrow/step#L24-L37)

### Source code

- [`objects/oMoonRoom/create.gml`](https://spelunky.ai/wiki/source/objects/oMoonRoom/create)
- [`objects/oMoonRoom/alarm_0.gml`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_0)
- [`objects/oMoonRoom/alarm_3.gml`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_3)
- [`objects/oMoonRoom/alarm_11.gml`](https://spelunky.ai/wiki/source/objects/oMoonRoom/alarm_11)
- [`objects/oMoonRoom/draw.gml`](https://spelunky.ai/wiki/source/objects/oMoonRoom/draw)
- [`objects/oBatTarget/create.gml`](https://spelunky.ai/wiki/source/objects/oBatTarget/create)
- [`objects/oBatTarget/step.gml`](https://spelunky.ai/wiki/source/objects/oBatTarget/step)
- [`objects/oBatTarget/collision_oArrow.gml`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oArrow)
- [`objects/oBatTarget/collision_oCharacter.gml`](https://spelunky.ai/wiki/source/objects/oBatTarget/collision_oCharacter)
- [`objects/oHighscores/create.gml`](https://spelunky.ai/wiki/source/objects/oHighscores/create)
