Skip to content
Documentation

Logic Does Not Behave as Expected

Check one expected result at a time. In this example, Marker should print Marker ready when it enters Main; you’ll trace the missing message and restore it.

How the Parts Fit

Main creates a live Marker from its saved placement. Marker has an enabled attachment to Report Ready, whose Create Event connects through Mode 1 to Print Debugger Message. Print writes the message to Console.

DiagramFollow one live Marker through its Logic to the expected message.
  1. Check the instanceMarker in Main

    The running Main Scene contains one active Marker.

  2. receives Create

    Check the saved setupReport Ready

    The attachment is enabled, and Create connects to the Print Action.

  3. runs Print

    Check the resultMarker ready

    Console shows one General message with Type Log.

Your Part

Use the Logic Editor’s creation example. It has one Marker in Main, with Report Ready attached once. Its native pictures show the connections and the Print Action’s Message Marker ready, Category General, and Type Log.

Stop the playtest before changing its saved setup. Keep other behavior separate. Each result should have one clear cause. Make one change. Start a fresh Debug Play and compare the runs.

Find the First Missing Message

Check What Console Is Showing

Open Main, select Debug Play, and open Console in the Debugger. Clear Find Console Output, select All Categories, and show the Log message type. The message may be hidden. Filtering changes the view while the running Logic carries on.

Look for Marker ready. A fresh run prints it once: one instance, one connected creation diagnostic. After finding it, filter for Marker ready and General, using the Testing guide’s Console controls for a narrower view.

Check the Live Instance

If the message is missing, switch to Inspect and enter Marker in Filter Scene Instances, whose hint reads Filter by Name or Instance Number. Select its row. Confirm that the current Scene is Main and inspect the instance you’re testing. Several placements can use the same Object.

Is Marker absent? Stop and check its placement in Main. Confirm that it uses the intended Object and has Active in Play Mode on. The Scene guide covers placing and selecting it. Correct the saved placement, then restart the run to test that change.

Check the Attachment

Stop the playtest. Open Marker. Set Object Editor Mode to Logic, then select Report Ready under Attached Logic. Keep Enabled on in Properties. The Toolbox lists resources available to attach; check the Object’s attachment list.

In this example, turning Enabled off leaves Marker in the running Scene but stops its creation message. Turn it on. Check the repair with a fresh Debug Play. Check placement overrides too. Select Marker in Main and inspect its Logic Components section.

Check the Connected Path

Open Report Ready. Follow Create → Mode 1 → Print Debugger Message → End, keeping Print enabled and its Message as Marker ready.

A disconnected Print stays on the canvas. The run skips it. Right-click that unattached block and select Connect to Sequence. Check the new path before another Debug Play; moving a card only changes its position. Use the connection to join the sequence.

For this example, disconnecting Print removes the message while Marker and its enabled attachment remain present. Reconnect it and start a fresh run. The message returns once. Save the repair, reopen the project, and run again to confirm its saved setup.

Choose the Next Check

Now Marker ready appears. Follow the sequence toward the result that’s still wrong. Name another diagnostic for the next connected point. Repeat the same trigger. Record the first missing observation.

Observation What to inspect When to use it
No Marker row in Inspect Current Scene, selected Object, and active placement Start here when the expected instance is missing.
Marker exists, but no creation message Attachment Enabled, the Create path, and Console filters Use this before changing later Actions.
The first message appears, but a later one doesn’t The connected path and the branch taken between those points Narrow the search to that part of the sequence.
The diagnostic appears, but the wrong Object changes The Action’s Applies To and the live instance selected in Inspect Check the recipient before changing the value.
A value differs after a restart Its declaration, owner, initialization, and saved-game loading Compare fresh runs with the same starting conditions.

Check Targets and State

Use Target the Running Owner to distinguish Self from another Object reference. Check the value’s owner and starting conditions too. The Variables guide explains their lifetimes; inspect the gameplay property after the Action runs. Compare the recipient and value with your intended result.

When the engine reports a missing or incompatible connection, read that diagnostic before Play. Check the named resource, required Variable or component, and the supplied type. Repair the reported field with its native picker. Renaming the intended resource and substituting a different resource are separate changes; recheck the connections after either.

Keep the Comparison Small

Use a fresh run with one known instance. Count its messages. If the count differs, inspect the number of live instances and the matching Event handlers before assuming an Action repeated. Check the Event type too: Step and Create have different triggers.

Pause and Continue preserve the current run, while Stop and a new Debug Play restart this creation example. Keep the trigger and starting values consistent. For a closer look, use the Testing guide’s watches and stepping.

Save a small project for your issue report. Keep only what the failure needs. Include the engine version, the Scene, one exact trigger, the expected result, and the first different observation. Save the relevant Console output alongside the project so the next person can follow the same sequence.

Where to Look Next

The Logic Editor explains native workflow and attachment controls. Test and Debug a Game covers Inspect, watches, pause controls, and Console output. The Print Debugger Message reference lists its exact fields.

For a larger connected example, read Dijkstra’s Stop Finding. Follow the named timer and custom Events from sender to receiver, then compare each point with the result expected there.

Myth Engine Documentation