# \<Sticker Puzzle>Blank Canvas Tutorial

Please Note：This tutorial mainly explains how to create a 2D playable with a <mark style="color:orange;">**drag puzzle / drag‑and‑merge**</mark> mechanic using **Blank Canvas**.\
For the best experience, we recommend checking it together with the DEMO *(you can contact your AM to share it to your account).*

## 📒<mark style="color:blue;">Basic Info</mark> <a href="#h5pts" id="h5pts"></a>

* \[Difficulty]: ⭐⭐⭐
* \[Applicable Products]: Especially suitable for products with puzzle/merge mechanics
* \[Interaction]: Drag to target position、Not dragged to target position
* \[Freedom]: Fully free
* \[Core Assets]: Image
* \[Features]: Drag to target position - Show/Hide layer；Global Variables

## 📒<mark style="color:blue;">Effect Preview</mark>

<table><thead><tr><th width="213.33333333333331" align="center">Best experience for playable on mobile devices</th><th width="224" align="center">Vertical screen</th><th align="center">Horizontal screen</th></tr></thead><tbody><tr><td align="center"><div><figure><img src="/files/GXk25KwAj4qA5FprnMsc" alt=""><figcaption></figcaption></figure></div></td><td align="center"><div><figure><img src="/files/Wb4HOE42riaLvpifpOkd" alt=""><figcaption></figcaption></figure></div></td><td align="center"><div><figure><img src="/files/5R4DJOb3IXhbLmzKkdGA" alt=""><figcaption></figcaption></figure></div></td></tr><tr><td align="center">Scan to play</td><td align="center"><a href="https://playable-portal.mintegral.com/#/mindwork-view?url=https%3A%2F%2Fmmp-cdn.rayjump.com%2Fmindworks-interactive-ads.html%3Furl%3Dhttps%253A%252F%252Fmmp-cdn.rayjump.com%252Fps%252Fpreview%252F25%252F07%252F24%252F6881d2c1b0357%252Findex.html%253Floading%253D1%2526preview%253Dtrue%2526lang%253Dzh-cn%2526preview%253Dtrue%2526itavideo%253D2%2526vconsole%253D0%2526mw_test%253D0%2526loading%253D1%26mw_test%3D0%26is_browser_tips%3D1%26ptloading%3D1%26track_data%3D%257B%2522pid%2522%253A6493551%252C%2522uid%2522%253A142552%252C%2522sct%2522%253A%2522pt_project_ps%2522%252C%2522env%2522%253A%2522p%2522%252C%2522cc%2522%253A%2522HK%2522%257D&#x26;orientation=3&#x26;name=&#x26;language=en">Click to play</a></td><td align="center"><a href="https://playable-portal.mintegral.com/#/mindwork-view?url=https%3A%2F%2Fmmp-cdn.rayjump.com%2Fmindworks-interactive-ads.html%3Furl%3Dhttps%253A%252F%252Fmmp-cdn.rayjump.com%252Fps%252Fpreview%252F25%252F07%252F24%252F6881d2c1b0357%252Findex.html%253Floading%253D1%2526preview%253Dtrue%2526lang%253Dzh-cn%2526preview%253Dtrue%2526itavideo%253D2%2526vconsole%253D0%2526mw_test%253D0%2526loading%253D1%26mw_test%3D0%26is_browser_tips%3D1%26ptloading%3D1%26track_data%3D%257B%2522pid%2522%253A6493551%252C%2522uid%2522%253A142552%252C%2522sct%2522%253A%2522pt_project_ps%2522%252C%2522env%2522%253A%2522p%2522%252C%2522cc%2522%253A%2522HK%2522%257D&#x26;orientation=3&#x26;name=&#x26;language=en">Click to play</a></td></tr></tbody></table>

## 📒<mark style="color:blue;">Gameplay Overview</mark>

**Before starting the production, we need to outline the gameplay logic for this case：**

* When entering the playable, display the puzzle layout and operation guide, leading players to drag puzzle pieces to complete the puzzle.
* Players can freely drag puzzle pieces A/B/C:
  * If a piece is placed in the correct position, play a success feedback, such as starlight particles or a sound effect;
  * If placed in the wrong position, play a failure feedback, such as an error sound or a screen jitter effect.
* Every time a puzzle set is completed, the progress bar advances by one step. After three puzzle sets are completed, the flow redirects to the end page.
* On the end page, the player can tap anywhere on the full screen to redirect to the store.

## 📒<mark style="color:blue;">Production Approach</mark>

**Core Concept:** Minimize the number of animations and events within each scene, maintain clear logic in scene segmentation, and keep the layer structure simple.

**Scene Segmentation:** Based on the content of the "Gameplay Overview," we can split this case into 2 scenes for production: the core gameplay scene and the end page scene.

<table><thead><tr><th width="184">Scene Name</th><th width="300">Scene 1 - Core Gameplay</th><th>Scene 2 - End Page</th></tr></thead><tbody><tr><td><strong>Visual Rendering</strong></td><td><div><figure><img src="/files/n5tTxOuc1rqfs2bJ07zE" alt="" width="128"><figcaption></figcaption></figure></div></td><td><div><figure><img src="/files/k7AR1Ou9aCfF0BJ3g7Qr" alt="" width="126"><figcaption></figcaption></figure></div></td></tr><tr><td><strong>Scene Description</strong></td><td>Player interaction:<br>Drag puzzle pieces A/B/C into the correct positions to complete the puzzle.</td><td>End page: Settlement image + redirect button</td></tr><tr><td><strong>Core Assets</strong></td><td><p><strong>Static Images:</strong> gray background, puzzle pieces &#x26; final result image, background image, progress bar, guiding finger</p><p><strong>Particle effects:</strong> puzzle starlight particles</p><p><strong>Sound effects:</strong> correct feedback sound, error feedback sound</p></td><td><p><strong>Static Images:</strong> settlement image, redirect button</p><p><strong>Particle effects:</strong> confetti particles</p><p><strong>Sound effects:</strong> victory sound</p></td></tr><tr><td><strong>Core Animations</strong></td><td><p><strong>Finger drag guidance:</strong> Displacement Easing+Alpha Easing+Scale Easing</p><p><strong>Progress bar:</strong> Scale Easing</p></td><td><strong>Redirect button:</strong> PulseFront</td></tr><tr><td><strong>Core Events</strong></td><td><p><strong>Trigger Object:</strong> puzzle piece</p><p><strong>Trigger Event:</strong> Drag to target position</p><p><strong>Response Event:</strong> hide the puzzle piece, show the final effect image, Assign the value(Global Variables)</p><hr><p><strong>Trigger Object:</strong> Scene 1</p><p><strong>Trigger Event:</strong> Condition</p><p><strong>Response Event:</strong> play progress bar animation, show guide, redirect to the next scene</p></td><td><p><strong>Trigger Object:</strong> Scene 2</p><p><strong>Trigger Event:</strong> Press</p><p><strong>Response Event:</strong> Redirect to app store</p></td></tr></tbody></table>

## 📒<mark style="color:blue;">**Production Guidelines**</mark> <a href="#qh8tn" id="qh8tn"></a>

\*The core contents are Step 1 \[Scene Setup] & Step4 \[Event Setting].

### **Step 1 - Scene Setup** <a href="#znmfx" id="znmfx"></a>

It is recommended to upload all assets into the "Project Assets" after creating the project for easier access and usage in the future.

#### **1. Global Settings**

In "Global Settings", add BGM and Background Image; set the language.

<figure><img src="/files/sIARLMmNyMRNB34vf82s" alt=""><figcaption></figcaption></figure>

#### **2. Scene 1**

1）Add assets related to the core gameplay to Scene 1.

2）Adjust the position and size of each asset accordingly. And group, arrange, and name the assets based on their types.

⚠️Note: For this type of gameplay (referring to mechanics where an object’s position changes after player interaction), the production logic is as follows: **“Place the object at every possible position where it might appear, then hide the objects that are not shown in the initial state. Through events, show the object at the new position after placement while hiding the original object at its previous position,”** in order to achieve the desired effect.

Therefore: In addition to adding the fragment images on each selectable option, you also need to add those fragment images at the target positions where they will appear after being placed, then hide them. And because there are three sets of finger guidance in different positions, you also need to add three finger images and hide them initially.

<div><figure><img src="/files/i4T7ZAvB4lHIgI57ym6c" alt="" width="177"><figcaption></figcaption></figure> <figure><img src="/files/EW7rntrSVXBBogYn6Y47" alt="" width="176"><figcaption></figcaption></figure></div>

3）**Adjust the initial state of layers:**  Hide all layers that should not be visible at the start (e.g., Guidance Group 2 & Guidance Group 3 & Star Particle 1/2/3 & Placed Object 1/2/3). &#x20;

Later on, we will use events to control when these layers appear or when other layers are hidden.

<div><figure><img src="/files/KL1jQjTBQ3gBHPmOLUb8" alt=""><figcaption><p>Before hiding</p></figcaption></figure> <figure><img src="/files/cDyvPs7SLlrFgYsa0tJU" alt=""><figcaption><p>After hiding</p></figcaption></figure></div>

#### **3. Scene 2**

1）Add assets related to the end page to Scene 2.

2）Similarly, adjust the position and size of each asset accordingly. And group, arrange, and name the assets based on their types.

3）Tick Scene 2 as the \[Ending Scene] so that the system can report the end of the playable session.

<figure><img src="/files/xreOApQhdwwoVPz3JZOX" alt=""><figcaption></figcaption></figure>

### Step 2 - Landscape & Portrait Orientation Adaptation

After completing the layout for portrait orientation, we need to adjust the "layout for landscape orientation" and the "screen adaptation for both landscape and portrait orientations."

#### 1. Adjust the layout for landscape orientation

1）Switch to landscape mode and select **all the top-level layers**.

2）Use the "**Reuse vertical screen position configuration**" function to automatically adjust the layout.

3）Then fine-tune the position and scale of each layer.

4）The same applies to scene 2.

<div><figure><img src="/files/DGkzJztXcdlB3m2LFWGc" alt=""><figcaption></figcaption></figure> <figure><img src="/files/rzZOhlGDc9tW1PhgJ8sX" alt=""><figcaption></figcaption></figure></div>

#### 2. Adjust the screen adaptation

All layers in this case are set to center adapt by default, so there is no need to make special adjustments for screen adaptation.

### Step 3 - Animation Setting <a href="#dcm38" id="dcm38"></a>

In this case, the following motion effects are used:

**Animations:** Drag Guide, Progress Bar Forward, Error Feedback, Redirect Button

**Particle Effects:** Puzzle Feedback (Star Particles), Victory Feedback on End Page (Confetti Particles)

#### 1. Drag Guide

* Select the guide group \[guide1], then add animations in this order: **Universal – Displacement Easing** and **Universal – Alpha Easing**, to create the guiding animation for the finger and the object. Parameter settings are as follows.

<div><figure><img src="/files/9Ioe9AURZFmdqGu53SZc" alt=""><figcaption></figcaption></figure> <figure><img src="/files/p8NRMb91zLCH3hZ3ZA4M" alt=""><figcaption></figcaption></figure></div>

* Optional: Select the finger image \[guide\_finger], then add **Universal – Scale Easing**, with the following parameter settings.
* Select the guide object image \[guide\_prop1], then add **Universal – Alpha Easing**, with the following parameter settings.

<div><figure><img src="/files/0IHW4Qw0ou1WBkbRwjOA" alt=""><figcaption></figcaption></figure> <figure><img src="/files/06L76HpmCEKwQtUsu1dz" alt=""><figcaption></figcaption></figure></div>

* The guide groups \[guide2] and \[guide3] follow the same logic. Copy the animations from \[guide1] and slightly adjust the displacement distance.

#### **2. Progress Bar Forward**

* Select the progress bar image \[progress\_bar], and adjust its anchor point to (0,50).
* Add **Universal – Scale Easing** with the following parameter settings. (Since the progress bar animation is played in three segments, setting the total animation duration to 0.9s helps better control the playback.)

<div><figure><img src="/files/k8esD68w3qdQ9GJkAUKt" alt=""><figcaption></figcaption></figure> <figure><img src="/files/vollzWYYWMsCpR4bVrQJ" alt=""><figcaption></figcaption></figure></div>

#### **3. Error Feedback**

* Select the red cross image \[error\_feedback], then add **Approach – BounceIn** with the following parameter settings.
* Continue by adding **Exit – FadeOut** to make the error feedback automatically hide after playing once. Parameter settings are as follows.

<div><figure><img src="/files/XEwIswr9hShYkKWiuWPH" alt=""><figcaption></figcaption></figure> <figure><img src="/files/TtrCbhoRLTHFQ9cJsxL9" alt=""><figcaption></figcaption></figure></div>

#### **4. Redirect Button**

In Scene 2, select the jump button group \[group\_cta], and add **Emphasize – PulseFront** with the following parameter settings.

<figure><img src="/files/qQcJfyW12wtf5K2N8Luk" alt=""><figcaption></figcaption></figure>

**5. Particle Effects**

* In the 「Asset Library」, choose suitable particle effects as feedback for puzzle completion.
* Since there are three different puzzle areas in this case, duplicate the particle layer twice.
* Adjust each particle effect’s position to its corresponding area, then set them to “hidden” state. Later, we will control their display and playback through events.

<figure><img src="/files/8q8D2i32gxefl66C9Cqf" alt=""><figcaption></figcaption></figure>

* For the victory feedback particle effect in Scene 2, since it plays automatically upon entering, you can add it directly without hiding it.

<figure><img src="/files/8zJQVo5f19rSjt493sTN" alt=""><figcaption></figcaption></figure>

### <mark style="background-color:red;">Step 4 -</mark> <mark style="background-color:red;"></mark> <mark style="background-color:red;"></mark><mark style="background-color:red;">**Event**</mark> <mark style="background-color:red;"></mark><mark style="background-color:red;">Setting</mark> <a href="#lnpxj" id="lnpxj"></a>

Core Events in this case are mainly focused on the “three puzzle pieces” and “Scene 1.”  Let’s go through them step by step according to the operation sequence.

<mark style="background-color:green;">**\[Global Variables]**</mark>   To achieve the following:

a. **Count successful actions:** Every time the player completes a puzzle group, the progress bar moves forward; after completing all three puzzle groups, the end page is triggered.

b. **Sequential guide:** By default, play the animation of guide group 1. When the player completes puzzle piece 1, play the animation of guide group 2, and so on.

To implement the above effects, you need to use ["Global Variables." ](/playable-tools-content-editor/content-editor-user-guide/editing-page-module-intro/top-asset-library/global-variables.md)  Below is a summary of the variables used in this case.  *(If you don’t need these effects in your production, you can simply delete the related variables.)*

<figure><img src="/files/SZezc3lLUqZYEwAGzufm" alt=""><figcaption></figcaption></figure>

#### <mark style="color:red;">**1. Add**</mark> <mark style="color:red;"></mark><mark style="color:red;">Global Variables</mark>

* Click the **Global Variables** icon at the top to add a variable named *placed*.
* Set the variable type and initial value.
* Using the same method, continue adding two variables: *item1\_guide* and *item2\_guide*.

<div align="left"><figure><img src="/files/TseCO5v5cGHYW66SVqwm" alt="" width="287"><figcaption></figcaption></figure></div>

#### <mark style="color:red;">2. Add trigger events and response events for the three puzzle pieces</mark>

Taking the first piece \[drag\_prop1] as an example, select this layer:

1）Add Event – **Drag to target position**

* Edit the drag area and set the drag direction to “any direction”.
* Add response event: Assign the value placed +1 (means: one puzzle group completed)
* Add response event: Assign the value item1\_guide = false (means: piece 1 placed, Guide Group 1 can be hidden)
* Add response event: Hide piece 1, show the successfully placed piece 1, show and play the particle effect at piece 1’s position, and play the correct sound effect once.&#x20;
* Check \[Valid only once].

<figure><img src="/files/yfDcFSnoKTJxPEDtjUCJ" alt=""><figcaption></figcaption></figure>

2）Add Event – **Not dragged to target position**

* Edit the drag area and set the drag direction to “any direction”.
* Enable “Release Reset”.
* Add response event: Screen jitter.
* Add response event: Play error feedback animation and play the error sound effect once.

<figure><img src="/files/PBaSlZ8GnwPJORyUlbXG" alt=""><figcaption></figcaption></figure>

3）Add Event – **Press**

* Add response event: Hide the entire guide group.

4）Add Event – **Lift up**

* Add response event: Execution delay 1s, then show the entire guide group and play all animations.

<div align="left"><figure><img src="/files/i1P9E8DKKc8JzqH7HhPT" alt=""><figcaption></figcaption></figure></div>

5）Quickly **copy events** to the other two puzzle pieces&#x20;

* After setting up all events for piece \[drag\_prop1], click to copy layer.&#x20;
* Hold Ctrl and select \[drag\_prop2] and \[drag\_prop3].&#x20;
* Click the Paste button and choose Paste Layer Events Only.

<figure><img src="/files/cYyLg5pRVaiyyo2rKaji" alt=""><figcaption></figcaption></figure>

* This way, the other two puzzle pieces also have the corresponding drag, press, and lift-up events.
* Then simply adjust the response targets for the Drag to target position events of the two other pieces (all other events can remain unchanged).

<div><figure><img src="/files/JzV5VFARE02CzsTswumq" alt=""><figcaption></figcaption></figure> <figure><img src="/files/jKmwSVmO4xKVOAXyLdQN" alt=""><figcaption></figcaption></figure></div>

Above, we have completed the event settings for the three puzzle pieces. Next, we add events to scene 1.

#### <mark style="color:red;">3. Add Conditions and response events to Scene 1</mark>

Select Scene 1 - Add Event - Condition.

#### **1）Condition 1-3:** Counting successful operations

* Edit Condition 1: placed = 1 (means: player has completed one puzzle group)
* Check Valid only once.
* Add response event: Play progress bar animation, then Execution delay 0.3s and pause the progress bar animation. *(Since the progress bar animation lasts 0.9s in total, playing it for 0.3s each time achieves a one‑third progress per completion.)*

<div align="left"><figure><img src="/files/oavsnogXWT65raA2W4rR" alt=""><figcaption></figcaption></figure></div>

* Similarly, set Condition 2: placed = 2 (means: player has completed two puzzle groups)
* Add response event: Continue playing the progress bar animation, then Execution delay 0.3s and pause.
* Condition 3: placed = 3 (means: player has completed three puzzle groups)
* Add response event: Continue playing the progress bar animation (now fully completed).
* Add response event: Hide the entire guide group, then Execution delay 1s and redirect to the next scene.

<div align="left"><figure><img src="/files/GdHEezEin97MgcMozIDR" alt=""><figcaption></figcaption></figure></div>

#### 2）Condition 4–5: Sequential guide

* Edit Condition 4: item1\_guide = false AND item2\_guide = true (means: piece 1 placed, show Guide Group 2)
* Check Valid only once.
* Add response event: Hide Guide Group 1, show Guide Group 2.

<div align="left"><figure><img src="/files/hv0AWtf4Saq5Fh9xlVdy" alt=""><figcaption></figcaption></figure></div>

* Edit Condition 5: item1\_guide = false AND item2\_guide = false (means: piece 1 and piece 2 placed, show Guide Group 3)
* Check Valid only once.
* Add response event: Hide Guide Group 1 and Guide Group 2, show Guide Group 3.

<div align="left"><figure><img src="/files/wY9SYkk1xsUeFNmRWABc" alt=""><figcaption></figcaption></figure></div>

#### 4.Scene: Scene 2

Finally, remember to set a “redirect to app store” event for Scene 2 or the redirect button.\
Do not check Valid only once.

<div align="left"><figure><img src="/files/0nAgxPsOxZsFb2g6ADPk" alt=""><figcaption></figcaption></figure></div>

These are all the events used in this case. With the completion of all event settings, our playable is completed.

### Step 5 - Overall Preview <a href="#q96z9" id="q96z9"></a>

1）It is advisable to preview your work promptly after completing each step in the creation process to check if the settings are correct.

2）Once everything is completed, it is recommended to perform an overall preview on **different devices**, **languages**, and **orientations** to ensure everything is working correctly.

<figure><img src="/files/tRnRq4VeYBbjK1L6Tk0W" alt=""><figcaption></figcaption></figure>

## 📒<mark style="color:blue;">Assets Provision</mark>

At the end of the tutorial, we have **provided all the assets used in this case** for you. Click on the compressed file to download it.&#x20;

You can use these assets to follow the tutorial and try to make it, so that you can start using the Content editor to make such playables as soon as possible.

{% file src="/files/cpPAwrUWaKqWSOE64UNE" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.playturbo.com/playturbo-case-study/playable-content-editor/other-puzzle-gameplay-cases/less-than-sticker-puzzle-greater-than-blank-canvas-tutorial.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
