Signal Hunter
Game Design Document: “Signal Hunter”
Objective: Be the first player to sync your gamepad to the robot PU by scanning for its secret radio channel.
1. Game Overview
In this fast-paced technical challenge, a “Judge” hides the robot’s communication frequency. Players must use their knowledge of the gamepad’s interface to cycle through channels, testing for a connection. The first person to “hijack” the robot and prove they found the number wins.
2. Game Setup
- The Robot (PU): * The Judge selects a random Radio Group between 0 and 50.
- The Judge programs the robot to perform a clear action when it receives a specific signal (e.g., “On Radio Received ‘A’, Show Icon: Heart”).
- The Gamepads:
- Each player starts with a gamepad set to Channel 0.
- The gamepad must have a way to change the
radio set group(e.g., Pressing Button A increases the channel number).
- The Arena: The robot is placed in the center of the room so all players can see its LED display or movements.
3. Gameplay Mechanics
Phase 1: The Lockdown
The Judge moves out of sight, sets the Robot PU to the secret channel, and starts the robot. The Judge then announces: “The Signal is Live!”
Phase 2: The Search
- Tuning: Players use their gamepad buttons to increment their radio channel.
- Testing: After changing the channel, the player presses a “Test” button (e.g., Button B) which sends a command to the robot.
- Visual Feedback: Players must watch the robot. If the robot reacts (spins, displays an icon, or makes a sound), the player has found the correct frequency.
Phase 3: The Claim
To win, the player must:
- Demonstrate Control: Make the robot perform the designated action three times in a row.
- Report the Channel: Shaking the gamepad or looking at the screen, the player must shout out the exact channel number (0–50).
4. Technical Configuration (MakeCode)
To make this game work, you can use these logic snippets in your extension/program:
For the Robot (PU):
Code snippet
radio.setGroup(randint(0, 50)) // Set by Judge
radio.onReceivedString(function (receivedString) {
if (receivedString == "ping") {
basic.showIcon(IconNames.Heart)
basic.pause(500)
basic.clearScreen()
}
})
For the Player Gamepad:
Code snippet
let currentChannel = 0
input.onButtonPressed(Button.A, function () {
currentChannel += 1
if (currentChannel > 50) currentChannel = 0
radio.setGroup(currentChannel)
basic.showNumber(currentChannel)
})
input.onButtonPressed(Button.B, function () {
radio.sendString("ping")
})
5. Win Conditions
- The Winner: The first player to successfully trigger the robot’s “Heart” icon and correctly identify the Radio Group number.
- The Penalty: If a player shouts the wrong number or claims they have it without the robot reacting, they must sit out for 30 seconds (a “Signal Timeout”).
