- Learn
- Build a Game
- Sky Ace
- 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: The Fighter Flies
The game covers your screen, and the editor is gone? Press Alt+F4. It closes the game, and the editor is right behind it.
The game opens, but there’s no frame and no sea? Perhaps it started in another Scene. Look at Start Scene in the Game Settings, under General. It should say Gameplay · 2D.
The frame is there, but its window is a plain blue, and nothing slides? The sea is missing. Open Gameplay’s settings, and pick the Pacific Ocean under Screen Backgrounds, in the Add Background… list.
The frame is there, but a dark strip runs along one edge of its window? Look at the Main View. Width 720 and Height 960 go in first, then Left 600 and Bottom 60. If Bottom went in first, type it again now.
The sea covers the frame, or the frame sits small in a corner? Look at the Screen Frame’s Transform. Its Space should be Window / UI, with the Render Layer on UI. Then check its Sprite’s size, 1920 by 1080.
The frame sits off to one side? Select it in Gameplay, and look at its Screen Offset (px). It should read X 0 and Y 0.
No Fighter? Look in Gameplay for its placement, at X 11.25 and Y 8.125.
The keys do nothing? Open the Fighter and switch the list to Logic, where Top-down Controls should be in the Attached Logic. Then look in the Input Manager, where Fly needs its eight keys, each under its direction.
Two Commands in the Input Manager? If you made a Fly of your own, Top-down Controls never listens to it. It listens only to the Command it brought. Delete yours with the red button beside its pencil, and rename that one Fly.
The Fighter crawls? Perhaps the 10.313 never reached the Fighter. A Fighter flying at 6.875 still has the starting number. Open the Fighter, find moveSpeed under Variables, and type the card’s value into its Value. It wakes up.
The Fighter flies off the edge and keeps going? Keep Inside Box is missing from the Fighter’s Attached Logic, or its four Values still hold the starting numbers. They should read 1.313, 21.188, 7.188 and 30.
E.2 Chapter 2: Machine Guns
Holding Space does nothing at all? Perhaps a block never joined the line. Look for a block with no arrow into it on the canvases of Fighter Guns and Fire a Volley, and join it with Connect to sequence. Check, too, that Fighter Guns is in the Fighter’s Attached Logic, and that its Event’s Command is Fire. Then read the If’s condition in Fighter Guns against the card.
A red block, and a number on the Errors bar? Look at the names. A Cooldown Key takes fireRate bare, and the block adds its own quote marks. The word true needs none. A name with @self. in front, such as @self.fireRateSeconds, has to be one of the Shared Variables, spelled the same way.
The next questions wait for your call. The spark and the gunfire come, but no rounds? So Fighter Guns works, and the trouble is in Fire a Volley. Is the gun level’s Default 1? Do the first two rows of Gun Patterns have gunLevel 1? Is Create Instance’s Object to Create round, and the call’s round @self.round?
The rounds appear and hang in the air? Look at Set Speed. Its Applies To should be created, and its Speed should be speed.
One solid gold stream, with no gaps? Nothing is holding the guns back between volleys, so look at the cooldown. Start Cooldown may be missing from the If, or its key may be spelled differently from Check Cooldown Ready’s. Both Cooldown Key boxes should read fireRate, with the same capital R.
The rounds fly sideways or backward? The direction column’s default is probably not 90. Set it, and fix the rows that took the old one.
The rounds come out of the Fighter’s middle? Look at the offsetY column first: every row should have 1.375, the nose, and a 0 there puts the rounds in the middle. Create Instance’s Position Relative To should be Self as well.
All four pips are lit? Perhaps each pip’s Level box, under Logic, still holds 1, where it starts. Give them 1, 2, 3 and 4, from left to right. Or perhaps Show Gun Level isn’t attached to Power Pip, so nothing ever hides a pip.
No pip at all? Look at the first Set Visible in Show Pip For Gun Level. Its Visible should say true, and false or Yes there hides every pip.
E.3 Chapter 3: Enemy Fighters
The rounds fly through the planes? Check the Tags. MG Round wears Fighter Round, and its Collider meets Tagged Enemy Aircraft. The Zero Fighter wears Enemy Aircraft, and its Collider meets the Fighter and Tagged Fighter Round. Then make sure Breaks on Hit is on MG Round, with Tagged Enemy Aircraft as its Collision Target.
The rounds break with sparks, but the planes never flash? The message isn’t arriving. Compare roundHit in Breaks on Hit and in Takes Hits, letter by letter, and look for quote marks in either box. Breaks on Hit’s Trigger Custom Event on Object should have Other in Applies To.
The planes flash but never go down? Look at the Zero Fighter’s Shared Variables, where maximum and threshold should both be Expressions. With their starting numbers there, a plane would take 100 hits. And check that Takes Hits sends changeMeter, spelled exactly that way, with no quotes: it’s the name the meter listens for. Last, look for Shot Down in the Attached Logic.
A plane stays white? The hitFlash timer isn’t ringing. In Takes Hits, the timer’s name should read hitFlash, and the second Event should be for the named hitFlash timer.
The planes go down, but the score stays at 0? Is Add Points on Game Rules? Its Variable box should read $score, with the $, and its Custom Event should be enemyShotDown, spelled as Shot Down sends it. The Score Text’s Text should be {$score}, braces and all.
The score sits dim behind the bar? The two words need their Z-Index of 120, so the bar is drawn under them.
E.4 Chapter 4: Mission Failed
No music? Look for Mission Music on Game Rules, and check that both Operation lists say Loop.
The Zero Fighters never fire? Is Zero Fighter Guns in the Zero Fighter’s Attached Logic? Look next at its Events. Both should be Combined, with On at start on for every Mode but Shoot Aimed. Perhaps the Game State never became Playing. Mission Start sets it, so look for Mission Start on Game Rules. Last, the timer’s name: enemyFire, bare, in the box Myth asked for and in both Start Recurring Timers.
A plane fires two rounds at once? Then Shoot Straight and Shoot Aimed are both answering. Look at Choose a Pilot. Turn Off Mode should switch off Shoot Straight, and Turn On Mode should switch on Shoot Aimed, both in On the Enemy Fire Timer. Shoot Aimed’s own On at start should be off.
The rounds fly through the Fighter? Check the Tags first, and then the lists on both Colliders. The Enemy Round wears Enemy Fire, and its Collider meets the Fighter. The Fighter’s Collider meets Tagged Enemy Fire. Breaks on Fighter goes on the Enemy Round, with Fighter as its Collision Target.
The rounds break, but nothing else happens, ever? Hurt by Enemies should be on the Fighter. Compare the cooldown’s name in Start Protection and in Hurt the Fighter: both should read "protection". A Fighter whose protection never ends can’t be hurt.
The music stops after a few hits, and the planes go quiet, but the Fighter stays and no screen comes? That’s a lost mission with nothing built yet to end it. Look for Lost With the Last Medkit on the Fighter and Mission Failed on Game Rules.
The Fighter never blinks? Protection Blink’s first Event should be for protectionStarted, spelled the way Start Protection sends it. Look at On at start too: on for Still Protected? and Go Dim, off for Go Bright.
The Fighter stays dim? Look at Still Protected?. Its key should read protection, bare, and its Set Alpha should still hold 1, as it starts.
No medkits at the bottom? Show Medkits belongs on the Medkit Icon, and each of its five placements needs its own level, 1 to 5. Select one of the last four, and Show Medkits’ section should count 1 override.
The Fighter takes hit after hit, and the mission never ends? Look at Lose a Medkit’s If, $medkits <= 0, and at its Set Game State, which should pick Mission Failed.
The Fighter explodes, but no screen comes? Look at Mission Failed on Game Rules, and the timer’s name, resultScreen, bare, in its Start Recurring Timer. Look at the six pieces next. Each needs Show With Results, with self.state in its Check Game State. The name showResults should be spelled the same in Mission Failed and in Show With Results.
The screen is there as soon as the game starts? Each of its six placements needs Visible at Game Start off.
The screen shows, but Enter does nothing? Is Confirm’s key Enter? If it is, look at Mission Failed’s Set Logic State, which should name Fly Again.
Space starts the mission over every time you fire? Fly Again is on when it should be off, so look at its switch on Game Rules. It should be gray.
E.5 Chapter 5: Scenery
Your game won’t start, and a window says Can’t run yet? Open the Errors bar under the canvas. Perhaps Drift in Line’s Change Variable still holds the topEdge part, which waits for Myth. Then keep only @self.follows.transform.position.y.
No islands at all? Look for them in the Scene first. If they’re there but never move, look at Drift in Line’s first Event: 270 for the direction, and speed for the speed.
Two pieces land right on top of each other? Look at each one’s follows. Each should follow the piece that starts nearest below it, and Jungle Island follows Village Island. If those are right, look at Sea Scenery’s row names, each its Object’s name, letter for letter.
A piece leaves and never comes back? Look at Drift in Line’s second Event, When Leaving the View, and at its Set Position.
A cloud has no shadow? Look for Cast Shadow on that cloud, with its own shadow picked. Create Instance’s Object to Create should read @self.shadow. If the shadow stays behind while the cloud drifts on, look at Attach to Parent’s Parent list. It should read Its Creator.
No High Cloud at all? Look for it in the Scene, far above the window. It needs Drift and Return to bring it down.
The High Cloud is solid white? Set Opacity should be on it, with 0.42 for its opacity under Shared Variables. If it passes under the Fighter, its Draw Order should be 60.
E.6 Chapter 6: Mission Timeline
No plane at all? Look at the clock first. Is Mission Clock attached to Game Rules, where Run Mission Timeline is? Is Every Step’s Operator +=, and its Value $deltaTime?
With = there, the mission time never gets past a sixtieth of a second. No row’s time ever comes.
Once the waves are in, the first banner still comes. Its alarm is a countdown, and a countdown runs out whatever the clock says. The planes wait for more. The While lets a row through only when the clock itself has reached the row’s time.
The game won’t start, and Myth says Can’t run yet? Its message names the Logic Component that’s wrong, and what’s wrong with it. Open that Logic, and the Errors bar under its canvas points at the block. Perhaps a box lost a quote or a bracket. Count them against the card.
Only the first V comes, or the rest come late? Look at the While’s condition. Its first half asks whether a row is left, and its second whether that row’s time has come on $missionTime. Look last at the second If’s Start Recurring Timer, whose First Delay ends in - $missionTime.
A formation comes in the wrong shape? Look at that row in Mission Timeline: its formation word must be spelled the way Make a Row Arrive compares it, V, Column, Row or Side Sweep. Then look at that If’s box. The word needs its quotes there.
A side sweep comes in from the wrong side, or flies off the wrong way? Look at Spawn Side Sweep’s two Set Velocities. The True line’s X Velocity is -acrossSpeed, and the False line’s is acrossSpeed. Each should be aimed at its own plane, created or created2.
The banner never shows? Look for Show Banner on both pieces, and waveStarted spelled the same in Run Waves and in Show Banner.
The banner shows but stays? Then the timer and its Event don’t share a name. Show Banner’s Start Recurring Timer names it banner, and so must the When bar of On the Banner Timer.
The banner’s words sit behind the strip? Give the Banner Text’s placement its Z-Index of 111, so the words draw on top.
A dark strip with no words lies across the window from the very start? A banner piece was placed visible. Turn off Visible at Game Start on both placements, and the strip waits for its wave.
The banner says WAVE 2, but the wave under STAGE still reads WAVE 1? Look at Run Waves’ step 3, which puts the wave’s label into $wave. Then look at the Wave Text’s Text. It should be {$wave}, braces and all.
A long number with a tail of decimals sits where the score should be? Score Text still holds {$missionTime}, from when you watched the clock. Type {$score} back into its Text.
E.7 Chapter 7: Other Enemies
No red plane at all? It may be there, out of sight. Is there a row in Enemy Types named Red Ace, exactly as the Object is? A plane with no row of its own gets the starting speed, 0. It waits above the window.
While you borrow the first V, look at the object in Mission Timeline’s first row too. It should say Red Ace. After the last part, that row is the Zero Fighters’ again, and the Red Aces come with ACES HIGH. The file names them Red Ace, so your Object needs that name, spelled the same way.
The Red Aces slide sideways but stop falling? Look at Weave’s Set Velocity. Its Y Velocity box must be empty, since a 0 there sets the fall to nothing, every step.
The Red Aces fall straight, with no sway? Is Weave attached to the Red Ace?
Each Red Ace slides off to one side and leaves the window? Look at the Operator in Weave’s Every Step. It should be Plus, the card’s +=. With a plain =, secondsFlown is only ever one step long, so the wave never moves on. Each plane holds its first sideways speed.
The three rounds fly out as one, on a single line? Look at the Else line’s Set Direction in Fire a Spread. Its Direction ends in local.index / (count - 1). The If above it compares count with 1.
Rounds appear at the middle of the window, or nowhere, though the plane flashes at its nose? In Fire a Spread, Create Instance’s Applies To should be Caller, and its Position Relative To should be Self. Left at World, the rounds start far from the plane, out of sight. The two Set Directions’ Applies To should be created.
A Red Ace never fires? Is Red Ace Guns on the Red Ace, with Enemy Round and Fighter under its Shared Variables? Its timer is named burst, bare, in both Start and Stop Recurring Timer, and in the box Myth asked for when you made On the Burst Timer.
A Dive Bomber never stops? Look first at When Created’s Start Recurring Timer. It belongs on the main line, under the If. Inside the If, it starts only for a plane already below stopY, and the rest fall straight through. After that, look at the timer itself: First Delay holds descentSeconds, and the Timer Name is descent, bare, the name its Event waits for.
It stops but never dives? The hover timer works the same way, and Set Speed with diveSpeed is on the main line, after the Else.
The Heavy Bomber fires from one wing only? Look at Left Wing’s last two steps: Turn Off Mode Left Wing, then Turn On Mode Right Wing. Right Wing’s are the mirror. And Right Wing’s On at start should be off.
The Heavy Bomber goes down like a Zero Fighter? Look in Enemy Types: its switch in the bigExplosion column should be On, not Off.
The game won’t start, and Myth says Can’t run yet? Its message names the Logic Component that’s wrong, and what’s wrong with it. Open that Logic, and the Errors bar under its canvas points at the block. Perhaps a name is spelled another way than on the card, or a quote mark or a bracket went missing along the way.
Nothing new comes until after the last V, and then every plane at once? Your table kept its old rows, and the new ones came in after them, with times long past. Press Clear All Rows, as in the last part, and import the file again.
E.8 Chapter 8: Pickups, Weapons and Bombs
No pickup comes down at all, on the borrowed V? Is Drift Down there, on the pickup the object cell names, in its Logic? A pickup that never moves waits above the window.
A pickup flies up instead of down? In Drift Down’s Set Velocity, the Y Velocity is -@self.fallSpeed, with its minus.
A pickup falls straight, with no sway? Look at the pickup’s Logic: Weave should be there, and under Shared Variables, weaveSpeed 1.719.
You fly through a pickup, and nothing happens? Perhaps the two can’t touch. First, does the pickup wear the Tag Pickup, under its Tags? The Fighter’s Collide Only With should list Tagged Pickup, and the pickup’s should list the Fighter. Last, look at the Collision Target of Collected by Fighter’s Event. It should say Fighter.
The pickup sparkles and goes, but gives nothing? A Spread Shot or Rapid Guns gives nothing until the weapons part is built.
For any other pickup, look in Collected by Fighter: Trigger Custom Event’s box should read @self.collectedEvent, with its @. After that, check the pickup’s collectedEvent spelling against the card, and that Pickup Rewards is on Game Rules.
Every pickup chimes the same? Look at Control Sound in Collected by Fighter. Its Sound should be @self.collectSound, from the bottom of its list, not one sound picked for all.
The reward comes, but no words rise? Look at the Popup Text in that Event, in Pickup Rewards or Weapon Pickups. Its Applies To should say Other. Words that show their own braces, or the data() itself? Count the braces in its Text box, one before the data and one after.
Pick Data Row isn’t in the Action List? Turn on Advanced Mode, under Settings.
No plane ever leaves anything, not even a Heavy Bomber? Is Drops a Pickup on each plane, at the end of its Logic? Is each row’s dropChance typed in Enemy Types? Then look at Shot Down’s second step, Trigger Custom Event on Object, with shotDown. Last, Drops a Pickup’s If compares dropRoll.value with self.enemyStats.dropChance, using <.
You collect Spread Shot, and the guns don’t change? Is Weapon Pickups on the Fighter? Its Switch Mode should name Fire Held · Fighter and Spread Shot.
Spread Shot fires one round, or many on one line? Look at the call to Fire a Spread: count is 1 + 2 * $gunLevel, and arc is spreadArcPerLevel * $gunLevel.
Rapid Guns never ends? Its timer’s name is rapidGuns, bare, in Start and Stop Recurring Timer and on the When bar.
The blue bar never shows? Is Show Rapid Time on the Rapid Meter, with Set Visible on Yes in its first Event?
The bar fades away instead of shrinking? Tween’s Value should be self.transform.scale.x, the bar’s horizontal scale, not self.transform.opacity.
B does nothing? Check the Bomb Command’s two keys in the Input Manager, and that Drops Bombs is on the Fighter. Its If is one box, with $bombs > 0 after the &&.
B clears the rounds, but no plane goes down? Look in Takes Hits for On Bomb Dropped. If it’s there, look at the plane’s Shared Variables: changeAmount should be an Expression that reads damage.
After a bomb, every plane goes down at one hit? Perhaps On Round Hit doesn’t set damage back to roundDamage. Its Change Component Value should give self.enemyStats.damage that value, right before changeMeter.
The bomb icons never change? Is Spend a Bomb on Game Rules, and does Show Bombs’ second Event watch bombs?
Supply drops all come at once, near the end? Your table kept its old rows. Make it new, as in the last part, and import the file again.
The game won’t start, and Myth says Can’t run yet? Its message names the Logic Component that’s wrong. Open it, and the Errors bar under the canvas says which block. Count the quotes. A call to Show the Reward that hands it other is the one Myth refuses for now. A Popup Text takes its place.
E.9 Chapter 9: The Sky Fortress
No WARNING, and no siren? Look at the Waves table: the Boss row’s warning switch should be On. Then in Run Waves, the new If’s condition is data("Waves", self.runWavesData.nextWave, "warning") == true, on the outer If’s True line, right after the banner’s Change Variable. Last, Blink Warning should be on the Warning Banner, with fortressWarning spelled the same in both.
The WARNING shows but never blinks, or never goes? Blink’s switch on the Warning Banner should be gray, off, at the start. Blink Warning’s first Set Logic State says Enable, and its second says Disable.
The music never turns? Look for On Fortress Warning in Mission Music.
Each wave comes, but with no banner at all? Perhaps the old Trigger Custom Event went, but the new one never came back. Its Else should send waveStarted.
The Sky Fortress never comes? Is the Boss row in the Mission Timeline, with Sky Fortress in its object cell? If the cell says missing, the Object didn’t exist yet when you imported. Pick Sky Fortress in it.
It comes down, but keeps going, out of the window? Look at Sky Fortress Battle’s first Event. Its Start Recurring Timer and Trigger Custom Event belong on the main line, after the If. After that, look at its second Event, which switches Patrol on.
It stops, but never fires? Fortress Guns should be attached, switched off, and the Sky Fortress’s Shared Variables should pick Fortress Shell and Fighter. Sky Fortress Battle should switch it on.
Your rounds fly through it, even once it sways? Each of the three rounds needs the Sky Fortress in its Collide Only With, and the Sky Fortress needs Tagged Fighter Round in its own. And Breaks on Hit needs its second Event, When Starting to Hit Sky Fortress.
It flashes white, but the bar never moves? Look at meterField under the Sky Fortress’s Shared Variables. It should say hitsTaken, bare. Takes Hits should send hitCounted after changeMeter, in each Event.
The bar starts empty and grows? Fortress Health Fill’s formula is 1 - event("hitsTaken") / event("health"), with the 1 first.
Half its health goes, and nothing happens? Look at threshold under the Sky Fortress’s Shared Variables, which should be an Expression that reads mark. Next, look at Sky Fortress Battle’s first Change Component Value, which sets mark to half the health.
It’s enraged again and again, and never goes down? Switch Mode in Enraged should pick Go Down, and the Event’s Modes should stay One at a time.
The bar empties, and it flies on? Go Down’s last step sends fortressDown. Sinks When Shot Down should be attached to the Sky Fortress.
It sinks white? Takes Hits’ On Disable should switch the tint off, with Enabled false.
It goes, but the mission never ends? Mission Complete should be on Game Rules, listening for fortressSunk. Sinks When Shot Down sends it, right before it removes itself.
FLY AGAIN shows after a win? In Mission Over, Set Logic State belongs inside the new If, after Check Game State asks for Mission Failed.
The veil or the scores are missing from the won screen? Their placements need Any Ending switched on.
The giant goes down in a few hits? Enemy Types’ Sky Fortress row should say 420 again, not the test’s 36.
The game won’t start? Myth says Can’t run yet, and its message names the Logic Component that’s wrong. Open it, and the Errors bar under the canvas says which block. Count the quotes.
