- Learn
- Build a Game
- Pitch Shot
- Appendices
- E Troubleshooting
Appendix E — Troubleshooting
Every chapter’s If it didn’t work names the slips most likely in that chapter, and how to find each one. Here they are together, chapter by chapter.
Two checks find most of them. First, names must match exactly: a message, a timer or a table row is matched letter for letter, capitals included. Second, compare with the chapter’s game. Every chapter’s Goal holds the game as it is at the end of that chapter, and its catch-up download is that chapter’s finished project. Play it next to yours.
E.1 Chapter 1: A Stage Stands
Myth won’t run the game, and says Can’t run yet? Read its message, because it names the Logic Component and what’s wrong.
Sky blue, and nothing else at all? Perhaps Pixels per Meter went in after Reference Size’s Y, so check that it says 100. Next, type 1000 into Reference Size’s Y and press Enter. After that, type 1080 and press Enter again. Each new Y value measures the screen again, at the Pixels per Meter it has now.
The wrong place, or Sunny Meadow on every stage? Then Backdrop Of The Place isn’t finding the place it was asked for. Perhaps it isn’t attached to the Backdrop. Or a name in the Places table is spelled a little differently from the Stages table. Sunny meadow, with a small m, is not Sunny Meadow. Then look at each row’s backdrop cell, which should name that place’s own painting.
The meadow, but no tower and no notes? Then Build The Stage never ran at all, so look for why. Is Game Rules placed in the Field, and is Build The Stage in its Attached Logic? Look for a block with no arrow into it, and join it with Connect to sequence.
The notes, but no tower? Look at Place A Block. Its Object to Create should be the box holding kind, and its Applies To should say builder. Then look at the Materials table. Each support and plank cell should name a block.
A tower with no notes? Look at Build The Stage’s Create Instance, whose Object to Create should be @self.singingNote. Then open Game Rules: its singingNote Value should say Singing Note, not None.
Both notes in the same floor? Look at floorNumber in Where A Note Sits, and count its brackets: the whole difference, pitch - lowestPitch, is divided before it’s rounded.
Posts sunk halfway into the grass, or floating? Look at the y of the two Place A Block calls inside Build A Floor’s Repeats, and the + 0.5 in each. Then look at the row names in Block Kinds: each one should match its Object’s name letter for letter.
Notes hidden behind the planks? The Singing Note’s Scene Depth Draw Order should be 35, more than the blocks’ 30.
Notes that stand still? Perhaps the timer’s name differs. The When bar says bob, and so does Start Recurring Timer’s Timer Name. A note that drifts higher and higher? Its Target should start from self.noteState.homeY, as the card’s does.
E.2 Chapter 2: Listening
The notes never sing? Perhaps stageBuilt never reaches them. Look at Build The Stage’s step 31, and at Sing In The Opening’s When bar. Both should say stageBuilt, letter for letter. Then look at the Singing Note’s Attached Logic. Is Sing In The Opening there, with Note State among its components?
Both notes sing at once? Look at the singTurn timer’s Repeat Every box. It needs self.noteState.turn * @self.secondsBetweenNotes, so each note waits for its own turn, and step 29 of Build The Stage is what gives each note that turn.
The notes sing, but the same pitch twice? Perhaps placed isn’t arriving, so each note still has its starting pitch of 60. Look at step 30’s Applies To, which should be newNote, and at the path in the placed Event’s Change Component Value.
No sound at all, though the notes swell? Play Piano Note can’t find the Sound, so look at the Pitches table. Do its noteSound cells name the note Sounds, Note F3 up to Note G5, and does each midi match its row’s name?
A note that swells up and stays big? Look at the swellFull timer, and at its Tween. Its Target should be 1.
The pill never shows? Perhaps the Message Pill isn’t placed, or its Z-Index is missing. Or perhaps the row name in Messages differs from what Logic sets: lowToHigh, with a capital T and a capital H.
Space does nothing? Is the key’s Command in a context that isn’t active? Hear It Again belongs in Field, and Field should say Active at Start.
No tune at all? Play The Place’s Tune finds the place by its name. So look at the Places table’s name column, where Sunny Meadow must be spelled as the Stages table spells it, capitals and all. Then look at its tune cell, which names Music Sunny Meadow.
The music never comes back? Look at musicBack, whose first step sets targetLoudness to 1. And in fadeMusic, look at the last If, which stops the timer only once loudness has arrived.
E.3 Chapter 3: Aiming
The note never arrives? Perhaps Load The Happy Note isn’t on the Slingshot, or its happyNote box is empty. Look at its Attached Logic. Or maybe its If reads instanceCount("Happy note"), with a small n. The name must match the Object’s exactly.
Pressing does nothing? Is Pull Back on the Happy Note? Are you pressing too high, above 8.8 meters, where the buttons live? Press right on the note.
The note follows, but it won’t stop at the limit? Look at Aim At’s step 4. Its formula is min(1, maxPull / happyNote.shotSums.pullLength), with min, not max.
No bands, or bands from the wrong place? Each Band Piece remembers where it’s placed, so look at their two placements, 2.59 and 3.39. And look at Stretch The Band’s Step. Does On Pull Started’s Switch Mode pick Stretched, in its Mode list?
The bands stretch the wrong way, short and fat? Look at Set Scale. Its Horizontal Scale takes the long formula, and its Vertical Scale stays 1.
No dots? Perhaps Make The Aiming Dots isn’t attached, or Show The Flight’s Shown Mode never comes. Or perhaps all 33 dots are there, the same size, sitting at the slingshot. Then the size never came, so look at step 4 of Make The Aiming Dots, which sends placed to newDot.
The dots curve up instead of down? Look at dotY. It ends - $gravity / 2 * t * t, a minus. And is $gravity 9.8?
The keys turn the wrong way? Look at the 2D Axis Command’s rows, where each key needs the direction the card gives it.
E.4 Chapter 4: Flying
You let go, and the note stays where you left it, in the air? So happyNoteLaunched went out, but Fly didn’t hear it. Is Fly on the Happy Note, and is its When bar spelled happyNoteLaunched, letter for letter?
The note drops straight down, or flies off the wrong way? Look at Set Velocity: its two boxes take $launchVX and $launchVY, in that order, across and then up.
The note springs home every time, as it did in Chapter 3? That means Let Go isn’t being called. Look at Pull Back’s When Letgo Is Pressed and When the Left Mouse Button Is Released. Each should end with Let Go, not Drop The Pull.
The note hangs in mid-air, frozen? Perhaps step 2 of Fly’s first Event says true where the card says false. A fixed body doesn’t fall.
The note rolls on and on, far across the meadow? Look at step 8, the If that asks about rollingHeight. It belongs after the first If.
The note stops, but never goes, and no new note comes? Look at step 10’s checks joined by ||. Then look at how shotEnded is spelled, in Fly’s step 13 and in Load The Happy Note’s When bar.
The new note drops out of the band the moment it appears? Look at Affected by Gravity under the Happy Note’s Transform. Leave it Off. Fly turns it on when the shot leaves.
The tower scatters when hit? Start from Chapter 3’s catch-up download, as Set up says. Its blocks have the Fixed setting that the editor has no switch for yet.
Two notes in the band, or none? Look at Put A Note In The Band’s If: instanceCount("Happy Note") == 0, with the Object’s exact name.
The count stays at 0? Look at the Shots Count’s Text, {$shots}, braces and all, and at Count The Shots on Game Rules.
E.5 Chapter 5: Wrong Notes
No note ever answers? Perhaps $aimedPitch never leaves 0. Look at Build The Stage’s two Set Data Cells. Is Notes picked in Table, and is Column "x" or "y", with quotes? Then look at Fly. Is Judge The Shot joined into its line, between Set Velocity and Control Sound, and not left Unattached?
Every note shakes, or the wrong one? Look at the first If of Answer The Shot’s Waiting. It compares self.noteState.pitch with $aimedPitch, and the If inside it compares it with $calledPitch, with != between them.
A note answers twice in one shot? Look at step 2 of Waiting. It should switch On Shot Arrived to Answered, in its second list.
The happy note bumps a singing note like a wall? Its Collision is Solid. Pick Sensor.
A wrong note shakes, but the pill still says Missed!? Look at Ask Again’s first Event. Its steps sit inside an If that asks $aimedPitch == 0.
The arrow never shows? Is the Hint Arrow placed in the Field? Is hintWanted spelled the same in Ask Again and in Point To The Call’s When bar? Or perhaps the arrow points the wrong way. Look at its two Set Rotations, 0 under the If and 180 under the Else.
E.6 Chapter 6: The Tower Comes Down
The right note never bursts? Look at Answer The Shot’s Else, at step 8. It belongs to the If at step 3, the one that compares the note with $calledPitch.
It bursts, but no flourish? Look at the Pitches table. Do its flourishSound cells name Sounds, or are they still None? If they’re still None, import pitch-shot-pitches-ch06.csv again.
The tower never falls? Perhaps no block hears shotNear. Look at step 8 of Fly’s On Happy Note Launched, which should switch Every Step to Hard. And is Come Down When Struck attached to each of the five blocks, each with a Collider?
The whole tower falls, every time, wherever you hit it? Look at On Struck’s If. Is it top less than the cut, with <? And does Reset Data Table run before Build The Stage makes any blocks, so every cut starts at 99?
Blocks fall, but nothing knocks? Is Fall With A Knock on each block, and does On Came Loose switch Every Step to Falling? Or perhaps the Materials table’s knockSound cells are still None.
Ice never shatters? It shatters only while a tower is falling, and the first ice stands in stage 32. Look at the Ice Cube’s row in Block Kinds, where its material should be ice, and then at On Shatter’s "ice".
E.7 Chapter 7: Winning
The tower falls, and a new note loads anyway? Look at Load The Happy Note’s loadNext Event, and at Win The Stage on Game Rules. Is the Game State set to Stage Won on callFound?
The card never comes up? Is Bring Up The Card on Game Rules? Perhaps a part of the card is hidden because Show With The Card missed it. Look at that part’s Logic, and at its Z-Index.
The card comes up empty, a panel with no stars? Perhaps the Card Stars aren’t placed, or their Z-Index is under the panel’s 10050.
Every star lights, every time? Look at each placement’s Star Number, because all three may still say 1.
The message is missing? Look at the Card Message’s UI Interaction, whose Element Type should be Text.
The bar fills and nothing happens? Is Go On To The Next Stage on Game Rules? Is barFull spelled the same, letter for letter, in both Events of Fill The Bar, the one that starts the timer and the one that hears it?
Enter lets go of a note instead of going on? Look at Bring Up The Card’s On Card Due, where Field goes off and Card goes on. And is Go On in the Card context, not in Field?
A stage gets skipped? Look at step 1 of On Go on, which switches the Logic off before anything else can happen.
E.8 Chapter 8: The Title and the Maps
The Field still opens first? Look at Start Scene under General > Startup. The list should have Title picked, so the game starts at its front door.
Play opens an empty map? Is Places Director placed in Place Map, and is placeCard set to Place Card under its Variables? The Director makes the cards, so a missing Director leaves a blue screen.
Every place shows the same picture? Look at the Place Picture’s Attached Logic. Belong To A Place goes before Show The Place Picture. And does Lay Out A Place Card give each newPicture its cardIndex before sending placed?
The back arrow opens the wrong Scene? Look at the order from Set up. Previous Scene uses the project’s stored order, which is separate from the alphabetical Resources list. Put Field last with the copy-and-paste move there, or compare with this chapter’s catch-up project. The back arrows lead home.
The picture is right, but the name is missing? Look at Place Name’s Text template and its Map Spot. Attach Belong To A Place to the name before you test it, so its Map Spot gets filled in. The picture and the name each need their own cardIndex before placed arrives.
You click the beach, but Sunny Meadow’s stages appear? Look at Stages Director’s placement. Set Select It to No under Per Instance Variables. Now the place you clicked stays chosen, instead of being replaced by the next stage without stars.
Every stage’s stars look the same? Look at Lay Out A Stage Card’s newStar.starNumber, and at Light A Stage Star on Stage Star. Each star needs both its stage number and its own number.
Escape does nothing on a map? That’s expected in this chapter. Use the back arrow; Menus gets Back in Chapter 9. If Escape does nothing in the Field, add Back to both Field and Card’s Command Sets.
E.9 Chapter 9: Locks and Keys
The beach opens while its lock is showing? Look at On Chosen. Its Scene change belongs inside the isOpen If. Move it there, and the lock and the click agree again.
A lock shows on Sunny Meadow? Look at Place Lock’s Logic order. Belong To A Place must run before Show A Lock. The lock needs the answer before it can show it.
Stage 1 stays locked? Look at Belong To A Stage’s If. Its first condition opens stage 1 without asking for a preceding star. Restore that condition, and there’s somewhere to begin.
The keys do nothing? Is Choose in Menus, with its directional keybindings? Do both Directors carry Choose With The Keys? The Field’s Aim Command has its own keys; the maps need Choose.
Up or Down steps the wrong distance? Look at the layout’s two Map Grid assignments. cardsInARow takes columns, and cardCount takes the map’s count. The keys read these values from the same Director.
The first key leaves the ring hidden, though the second makes it appear? Check Show The Ring’s Variable Changed Event for isChoosing. That change reveals the ring when the selected number stays put.
Every ring appears on the first card? Look at the makers’ newRing.cardIndex, before placed. Each ring needs the number of the map card that made it.
Escape leaves a map open? Select Menus and reuse Back there, with Escape as its keybinding. Keep Field and Card’s bindings too, so Escape continues to work while aiming and after a win.
E.10 Chapter 10: Remembering, Settings and Finish
Stars show until the game closes? Look at Win The Stage’s starsCounted message, outside its best-stars If. Keep The Stars needs that message. Restore the message, find the call again, and reopen the game from Title.
Every place returns the same stars? Compare Places’ starsKey cells. Each place needs its own key, and both the load and Save must read that cell. Fix the repeated key before trying another win.
The load returns no stars? Start the project from Title, with Read Back What Was Kept on Title Director. Running Field alone skips that Object. Start at Title.
An icon changes but its choice disappears next time? Check its Save’s Key against the matching Load in Read Back What Was Kept. Match the text exactly. Click the button once more, then restart to see whether its choice returns.
Calm notes stop halfway through a swing? Look at Bob While Waiting’s Variable Changed Event. Control Tween must name self.transform.position.y, followed by Set Position with homeY. That brings each note back to rest.
The welcome hides, but the notes stay silent? Check Close How To Play’s howToPlayClosed message and Sing In The Opening’s Event with that name. One sends the invitation; the other starts singTurn. Join them again.
The last win tries to restart an absent stage? Look at Go On To The Next Stage’s outer If. Then sends the finale message. Otherwise increments the stage and restarts Field. Put them back under the matching branches and try the last stage again.
The finale appears, but the old card covers it? Check On Finale Shown in Show With The Card and Show The Next Stage. Each must hide its Object. Run again, and the farewell should have the whole card to itself.
