<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Katana Works </title>
    <description>The latest articles on DEV Community by Katana Works  (@katanaworks).</description>
    <link>https://dev.to/katanaworks</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4144687%2F483136d9-7620-4fc3-88d4-0ed552be4d7e.png</url>
      <title>DEV Community: Katana Works </title>
      <link>https://dev.to/katanaworks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/katanaworks"/>
    <language>en</language>
    <item>
      <title>3 GDevelop Mistakes That Silently Break Your Game (And How to Fix Them)</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Fri, 16 Oct 2026 02:27:28 +0000</pubDate>
      <link>https://dev.to/katanaworks/3-gdevelop-mistakes-that-silently-break-your-game-and-how-to-fix-them-25ln</link>
      <guid>https://dev.to/katanaworks/3-gdevelop-mistakes-that-silently-break-your-game-and-how-to-fix-them-25ln</guid>
      <description>&lt;p&gt;GDevelop’s no-code event system makes it easy to start building immediately — which is also why beginners hit specific walls that are almost invisible when you’re inside them. These aren’t “I forgot a condition” bugs. They’re workflow-level mistakes that send you debugging in the wrong direction for hours.&lt;/p&gt;

&lt;p&gt;Here are three I’ve run into firsthand, with the fixes that actually work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fep5yd7f68cs49givco0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fep5yd7f68cs49givco0y.png" alt=" " width="799" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Sprite Scaling Trap&lt;/strong&gt;&lt;br&gt;
GDevelop lets you resize any object in the editor. Take a 1024×1024 image, scale it to 64×64, looks fine — ship it. Except under certain conditions (scene transitions, event triggers, preview refreshes), the sprite can revert to its original dimensions at runtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this wrecks your game:&lt;/strong&gt;&lt;br&gt;
Say you have a checkpoint object scaled down to fit a single tile. Your event says “Create player at the center of Checkpoint.” Logic is correct. But if the checkpoint reverts to its native size for even one frame, the center point shifts — and your player spawns three tiles away, inside a wall, or off-screen entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s hard to debug:&lt;/strong&gt;&lt;br&gt;
You’ll instinctively look at your event sheet for a logic error. You’ll rewrite conditions, add debug text, question your sanity. The bug isn’t in your events — it’s in your assets folder.&lt;/p&gt;

&lt;p&gt;The fix: Size your sprites to their in-game pixel dimensions in an external editor (Piskel, Aseprite, Photoshop) before importing. Don’t rely on GDevelop’s scaling for core gameplay objects. This keeps collision masks, center points, and spawn positions consistent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F999pjb6cc39qnj4r2a6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F999pjb6cc39qnj4r2a6o.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Following Experts Instead of Beginner-Plus Creators&lt;/strong&gt;&lt;br&gt;
Counterintuitive, but important. GDevelop experts show you the cleanest, most elegant implementations — and they skip the “obvious” steps that trip beginners up because they’ve forgotten those steps exist. Curse of knowledge.&lt;/p&gt;

&lt;p&gt;A creator who’s only a few months ahead of you is still navigating the same walls you’re about to hit. Their solutions might not be the most optimized, but their process of identifying and solving beginner-level traps is far more useful when you’re starting out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to balance it:&lt;/strong&gt;&lt;br&gt;
Experts → technique. Learn how to structure a project, use advanced features, understand best practices.&lt;br&gt;
Beginner-plus creators → traps. Watch for the mistakes they make and how they recover. That’s where your actual learning happens.&lt;br&gt;
Always focus on “why.” If a tutorial says click a button, understand why that button matters before moving on. Copying events you don’t understand means you can’t fix them when they break.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxqqn16vivo0odi6qi6md.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxqqn16vivo0odi6qi6md.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Grand Vision vs. The Micro-Project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everyone starts GDevelop because they have a dream game — a sprawling RPG with an inventory system, skill tree, and 20-hour story. Trying to build that as your first project is a fast track to burnout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How scope creep kills you:&lt;/strong&gt;&lt;br&gt;
You start with a simple platformer. Then it needs a double jump. Then a wall slide. Then a shop system. Suddenly you’re managing a project a 50-person studio would struggle to ship. When something breaks, you can’t fix it because you didn’t build the system — you copied it from a 45-minute tutorial you half-followed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The “one mechanic” rule:&lt;/strong&gt;&lt;br&gt;
Treat every mechanic as its own micro-project:&lt;/p&gt;

&lt;p&gt;Build it — Create a square that jumps when you press a key.&lt;br&gt;
Break it — Change gravity, tweak jump sustain, see what happens.&lt;br&gt;
Fix it — Prevent infinite mid-air jumps.&lt;br&gt;
Move on — Next mechanic: coin pickup, respawn trigger, enemy patrol.&lt;/p&gt;

&lt;p&gt;By keeping scope tiny, you understand every single event in your project. The build-break-fix cycle is where real learning happens. Those micro-projects eventually combine into a full game — except now you actually understand every piece of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR Mistake &amp;amp; Fix&lt;/strong&gt;&lt;br&gt;
Scaling sprites inside GDevelop / Size them in an external editor before importing&lt;br&gt;
Only following expert tutorials / Add beginner-plus creators who still hit the same walls you do&lt;br&gt;
Starting with your dream game / Build one mechanic at a time — build, break, fix, repeat&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every expert was a beginner who kept building. Keep your projects small, your sprites sized correctly, and your learning focused on the “why.”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Set Up a Smooth, Bounded Camera in GDevelop (2 Steps)</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Tue, 13 Oct 2026 14:59:40 +0000</pubDate>
      <link>https://dev.to/katanaworks/how-to-set-up-a-smooth-bounded-camera-in-gdevelop-2-steps-32j3</link>
      <guid>https://dev.to/katanaworks/how-to-set-up-a-smooth-bounded-camera-in-gdevelop-2-steps-32j3</guid>
      <description>&lt;p&gt;Ever previewed your platformer and watched the camera drift past your background into grey nothingness? That’s the fastest way to make a finished game look like a prototype. GDevelop makes fixing this surprisingly painless — two steps, no code, no math.&lt;/p&gt;

&lt;p&gt;This guide covers the exact setup: a smooth-follow camera behavior plus boundary enforcement tied to your background’s bounding box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You’re Building&lt;/strong&gt;&lt;br&gt;
A camera that:&lt;/p&gt;

&lt;p&gt;Follows your player with a slight interpolated delay (no jerky snapping)&lt;br&gt;
Stops hard at the edges of your background image (no void)&lt;br&gt;
Adapts automatically if you resize or reposition your level&lt;br&gt;
Step 1: Add the Smooth Platformer Camera Behavior&lt;/p&gt;

&lt;p&gt;Stop using the basic “Center camera on object” action. It works for prototypes but the instant snapping looks cheap. GDevelop has a dedicated behavior that handles interpolation for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqzmrg1xmxt9nuqvngm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwqzmrg1xmxt9nuqvngm1.png" alt=" " width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup:&lt;/strong&gt;&lt;br&gt;
Double-click your player character in the object list to open its properties.&lt;br&gt;
Go to the Behaviors tab.&lt;br&gt;
Click Add a behavior to the object.&lt;br&gt;
Search for “camera” and select Smooth Platformer Camera.&lt;/p&gt;

&lt;p&gt;When you apply it, GDevelop actually installs two components: Smooth Camera and Smooth Platformer Camera. Together they give the camera a weighted delay that smooths out jumps, falls, and direction changes.&lt;/p&gt;

&lt;p&gt;Preview your game now — the camera follows nicely, but it’ll sail right past the edges of your background. That’s what Step 2 fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Enforce Camera Boundaries in the Event Sheet&lt;/strong&gt;&lt;br&gt;
Boundaries aren’t a behavior — they’re an action you add to your event sheet. The key move is linking the boundary values to your background object’s bounding box instead of hard-coding pixel coordinates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event Sheet Setup:&lt;/strong&gt;&lt;br&gt;
Add a new action (no condition needed — this runs every frame).&lt;br&gt;
Search for Enforce camera boundary.&lt;br&gt;
Fill the four fields using the Object Selection tool:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0eqtomtqb3vp7wccuscq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0eqtomtqb3vp7wccuscq.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Field Expression Path Object&lt;/strong&gt;&lt;br&gt;
Left    Object Position → Bounding Box → Left Position  Your background object&lt;br&gt;
Top Object Position → Bounding Box → Top Position   Your background object&lt;br&gt;
Right   Object Position → Bounding Box → Right Position Your background object&lt;br&gt;
Bottom  Object Position → Bounding Box → Bottom Position    Your background object&lt;/p&gt;

&lt;p&gt;Using bounding box expressions instead of raw numbers means the boundaries update automatically if you scale or move your background in the editor. No maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Mistake: Wrong Boundary Object&lt;/strong&gt;&lt;br&gt;
If your scene has multiple layers (parallax clouds, decorative props, mid-ground platforms), make sure you’re selecting the primary background object that defines the playable area. Binding the camera to a small cloud sprite or a decorative prop will cause jittering or a stuck camera because the boundaries are too small. Double-check your object names in the event sheet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;br&gt;
Smooth Camera behavior handles interpolation math — no manual lerping.&lt;br&gt;
BoundingBox expressions adapt to level changes — no hard-coded coordinates to maintain.&lt;br&gt;
Layer awareness — apply boundaries to the layer your gameplay lives on (usually Base Layer), not your UI layer.&lt;br&gt;
No void — players never see outside your level, which is one of the cheapest ways to make a game feel finished.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two steps. No plugins, no extensions, no subscriptions. Your camera now glides with the player and stops exactly where your world ends.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why I Chose GDevelop Over Unity, Godot, and Construct (5 Reasons, 1 Dealbreaker)</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Thu, 08 Oct 2026 21:34:06 +0000</pubDate>
      <link>https://dev.to/katanaworks/why-i-chose-gdevelop-over-unity-godot-and-construct-5-reasons-1-dealbreaker-53e2</link>
      <guid>https://dev.to/katanaworks/why-i-chose-gdevelop-over-unity-godot-and-construct-5-reasons-1-dealbreaker-53e2</guid>
      <description>&lt;p&gt;I ship one small 2D game to Google Play and web portals every month. I don’t do 3D and I don’t need fancy rendering. I need an engine that gets a finished game out the door without a fight.&lt;/p&gt;

&lt;p&gt;After months of testing, I put my time into GDevelop instead of Godot, Unity, or Construct 3. Here are the five reasons, the one thing it can’t do, and who should skip it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fggt0sxwnl6qrvu6l62fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fggt0sxwnl6qrvu6l62fb.png" alt=" " width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Event sheets beat dense code&lt;/strong&gt;&lt;br&gt;
Event sheets are visual logic: Conditions and Actions. If this is true, do that. It’s color-coded, spaced out, and readable at a glance.&lt;/p&gt;

&lt;p&gt;I’m dyslexic, so walls of symbols and syntax are where I lose hours. In a text editor I’m hunting for a typo. In an event sheet I’m reading my game logic. I can work for hours without the mental fatigue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmpodvb4pa1ihtaivdigs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmpodvb4pa1ihtaivdigs.png" alt=" " width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Behaviors you drop on objects&lt;/strong&gt;&lt;br&gt;
Solo dev means you’re the programmer, artist, sound designer, and tester. I don’t have time to rebuild a platformer controller every month.&lt;/p&gt;

&lt;p&gt;Drop the Platformer Object behavior on a sprite and you have a running, jumping character in about a minute. The behaviors are tested and compatible, so I skip the boilerplate and start on what makes the game mine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Export that doesn’t eat my week&lt;/strong&gt;&lt;br&gt;
When you ship monthly, every extra hurdle is a chance to miss your deadline. In some engines, the Android SDK, certificates, and build paths can swallow an afternoon. In GDevelop, exporting to Android or web is a few steps inside the editor. That’s the real reason I can ship on a schedule.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjenu6xy5xx9ya2ymalg9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjenu6xy5xx9ya2ymalg9.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Everything lives in one place&lt;/strong&gt;&lt;br&gt;
Asset store: sprites, sounds, and music without leaving the app&lt;br&gt;
Extensions: community extensions in the editor when built-ins aren’t enough&lt;br&gt;
Tutorials: built in, so I’m not trusting a three-year-old video&lt;/p&gt;

&lt;p&gt;Less context switching means more flow state, and flow is what keeps a solo project moving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Open source means nobody can reprice me&lt;/strong&gt;&lt;br&gt;
In 2023 Unity announced a fee structure that would have hit games already released. They walked much of it back in 2024, but the lesson stuck: don’t build your income on one company’s pricing decisions. With open source, the rules can’t change under me mid-project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The one thing GDevelop can’t do&lt;/strong&gt;&lt;br&gt;
It’s not built for heavy 3D or AAA-scale projects. If you’re building a 3D open-world RPG, pick something else. And if your goal is a job at a big studio, learn Unity, Unreal, or Godot, because that’s what they hire for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pick the tool that helps you finish games, not the one with the longest feature list&lt;br&gt;
Event sheets are legitimate, and “real coders” don’t get a vote on your productivity&lt;br&gt;
If syntax drains you, a visual engine is an accessibility win&lt;br&gt;
Shipping is a skill, and easy export makes you practice it more&lt;/p&gt;

&lt;p&gt;Want to see this in action? I post a new GDevelop mechanic every few days: &lt;a href="https://youtu.be/zwBISSibep4" rel="noopener noreferrer"&gt;https://youtu.be/zwBISSibep4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your turn: What engine are you using, and what’s the one thing that slows you down? Drop it in the comments. If you’re on the fence about GDevelop, ask me anything and I’ll answer.&lt;/p&gt;

&lt;p&gt;Follow me here for more solo dev workflows.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>beginners</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>GDevelop Death Animation in Minutes:</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Wed, 07 Oct 2026 09:40:43 +0000</pubDate>
      <link>https://dev.to/katanaworks/gdevelop-death-animation-in-minutes-10a0</link>
      <guid>https://dev.to/katanaworks/gdevelop-death-animation-in-minutes-10a0</guid>
      <description>&lt;p&gt;You don't need keyframes or a state machine for a good death animation. I swap the player for a particle effect, wait a beat, then respawn. Three events, about five minutes of work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fqmwtwulhng8d1sc7iu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4fqmwtwulhng8d1sc7iu.png" alt=" " width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you need first&lt;/strong&gt;&lt;br&gt;
A player that moves and collides&lt;br&gt;
Something that kills you (spike ball, enemy, hazard)&lt;br&gt;
A respawn or checkpoint system (this one only handles the animation, not where you come back)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Group your hazards&lt;/strong&gt;&lt;br&gt;
Put every deadly object into one group called Enemies. Spikes, enemies, lava, whatever. One event covers all of them, and new hazards later cost you nothing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawk0mffm96qr8n23fty0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fawk0mffm96qr8n23fty0.png" alt=" " width="795" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: The death event&lt;/strong&gt;&lt;br&gt;
Conditions:&lt;/p&gt;

&lt;p&gt;Player is in collision with Enemies&lt;br&gt;
Trigger once while true&lt;/p&gt;

&lt;p&gt;Trigger once matters. Without it the collision fires every frame and you stack a pile of effects that tanks performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Spawn the effect, then delete the player&lt;/strong&gt;&lt;br&gt;
Actions, in this order:&lt;/p&gt;

&lt;p&gt;Create object DeathEffect at X: Player.CenterX(), Y: Player.CenterY()&lt;br&gt;
Delete Player&lt;/p&gt;

&lt;p&gt;Create first, delete second, so the position is still readable. Deleting the player also kills movement and stray collisions during the animation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhpytcy6tu6679nmvdhvk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhpytcy6tu6679nmvdhvk.png" alt=" " width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Wait, clean up, respawn&lt;/strong&gt;&lt;br&gt;
Add these actions after the delete:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wait 0.5 to 1 second (needs the Advanced Wait extension, install it from the extensions list if you don't have it)&lt;/li&gt;
&lt;li&gt;Delete DeathEffect&lt;/li&gt;
&lt;li&gt;Run your respawn logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Too short and the player never sees the effect. Too long and people get annoyed waiting. Half a second to a second works for sparks and flames.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fptbrjikvlhsyi9hnx686.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fptbrjikvlhsyi9hnx686.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swapping the look&lt;/strong&gt;&lt;br&gt;
The logic doesn't care what the effect is. Change the object in the Create action and you're done. Electric spark for sci-fi, blue flame or smoke for fantasy, pixel explosion for retro. Keep it centered on the player and nothing else needs touching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Group hazards so one event covers everything&lt;br&gt;
Trigger once while true on the death event&lt;br&gt;
Create the effect at CenterX() / CenterY(), then delete the player&lt;br&gt;
Wait, delete the effect, respawn&lt;/p&gt;

&lt;p&gt;Questions or a different setup? Drop a comment. Next up I'm tying this into the checkpoint system.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Flip Your Character Sprite in GDevelop (And the Beginner Mistake That Breaks It)</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Wed, 30 Sep 2026 17:00:00 +0000</pubDate>
      <link>https://dev.to/katanaworks/how-to-flip-your-character-sprite-in-gdevelop-and-the-beginner-mistake-that-breaks-it-3kpm</link>
      <guid>https://dev.to/katanaworks/how-to-flip-your-character-sprite-in-gdevelop-and-the-beginner-mistake-that-breaks-it-3kpm</guid>
      <description>&lt;p&gt;A character that slides backward instead of turning around kills immersion instantly. In GDevelop, fixing this takes two events in the Event Sheet and about three minutes. But there's one beginner mistake that makes the sprite flicker or refuse to flip at all — and almost everyone hits it the first time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup Assumptions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You already have:&lt;/p&gt;

&lt;p&gt;A character sprite imported into your scene&lt;br&gt;
A platform/ground sprite in your scene&lt;br&gt;
Both scaled to a size where you can clearly see which direction the character faces&lt;/p&gt;

&lt;p&gt;If your character is tiny on screen, scale it up in the editor before testing. You need to see the flip to debug the flip.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdhjp4vgkrmgexbkussd6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdhjp4vgkrmgexbkussd6.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assign Platformer Behaviors&lt;/strong&gt;&lt;br&gt;
GDevelop handles physics through its Behavior system. Two behaviors make a basic platformer work:&lt;/p&gt;

&lt;p&gt;For the character:&lt;br&gt;
Double-click the sprite → Behaviors tab → Add a Behavior → Platform Character. Keep the defaults and apply.&lt;/p&gt;

&lt;p&gt;For the ground/platforms:&lt;br&gt;
Double-click the platform sprite → Behaviors tab → Add a Behavior → Platform. Apply.&lt;/p&gt;

&lt;p&gt;Run a preview. Your character should move with arrow keys and jump. But you'll notice the problem — the sprite faces the same direction no matter which way you move. That's what we're fixing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8xjfz1hq104rnqc6cpt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8xjfz1hq104rnqc6cpt7.png" alt=" " width="799" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Flip Logic: Two Separate Events&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open your Event Sheet. You need exactly two events.&lt;/p&gt;

&lt;p&gt;Event 1 — Moving Right (reset to default orientation):&lt;/p&gt;

&lt;p&gt;Condition: Key Pressed → Right&lt;br&gt;
Action: Flip the object horizontally → select your character → Activate flipping: No&lt;/p&gt;

&lt;p&gt;Event 2 — Moving Left (mirror the sprite):&lt;/p&gt;

&lt;p&gt;Condition: Key Pressed → Left&lt;br&gt;
Action: Flip the object horizontally → select your character → Activate flipping: Yes&lt;/p&gt;

&lt;p&gt;That's it. The flip action mirrors the entire sprite so you don't need separate left-facing and right-facing animation frames.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Mistake Everyone Makes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Putting both actions in the same event block. If you group the right-key flip and left-key flip under one event or nest them together without proper separation, the engine processes both instructions on the same frame and the sprite either flickers or doesn't flip at all.&lt;/p&gt;

&lt;p&gt;GDevelop executes events top to bottom every frame. Conflicting flip instructions in the same block means the last one always wins, or worse, they fight each other. Two separate top-level events eliminates the conflict entirely. The engine checks each condition independently and only fires the matching action.&lt;/p&gt;

&lt;p&gt;This is the single most common reason beginners can't get sprite flipping to work. If your flip looks broken, check your Event Sheet structure before anything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Reference&lt;/strong&gt;&lt;br&gt;
Platform Character behavior on the player, Platform behavior on the ground&lt;br&gt;
Flip Horizontally is a toggle: Yes = mirrored, No = default&lt;br&gt;
Right key → flip No, Left key → flip Yes&lt;br&gt;
Separate events, not one combined event&lt;br&gt;
Preview often — the flip should feel instant at any movement speed&lt;br&gt;
From Here&lt;/p&gt;

&lt;p&gt;Once your character faces the right direction, you've got the foundation for everything else — run animations, attack directions, wall interactions, and enemy AI that reacts to which way the player is facing. It's a small detail that touches every system you'll build on top of it.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>indiedev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Build a Pro Death Animation in GDevelop Using the Particle Emitter</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Tue, 29 Sep 2026 17:00:00 +0000</pubDate>
      <link>https://dev.to/katanaworks/how-to-build-a-pro-death-animation-in-gdevelop-using-the-particle-emitter-3nao</link>
      <guid>https://dev.to/katanaworks/how-to-build-a-pro-death-animation-in-gdevelop-using-the-particle-emitter-3nao</guid>
      <description>&lt;p&gt;A character that just vanishes when it hits a spike feels unfinished. A character that bursts into particles feels like a real game. The difference is about ten minutes of setup in GDevelop using the Particle Emitter.&lt;/p&gt;

&lt;p&gt;This approach gives you a dynamic burst effect that varies slightly each time it triggers, so the player never sees the exact same death twice. No sprite sheets, no pre-rendered videos — just one emitter object and a few events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need a working scene with:&lt;/p&gt;

&lt;p&gt;A player with the Platformer Object behavior attached&lt;br&gt;
Input handling events (movement, sprite flipping)&lt;br&gt;
A hazard object (spikes, enemy, whatever kills the player)&lt;/p&gt;

&lt;p&gt;If your player can move and your spike exists, you're ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgntzxzczadrjqj5chz88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgntzxzczadrjqj5chz88.png" alt=" " width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create the Particle Emitter Object&lt;/strong&gt;&lt;br&gt;
Add a new object to your scene → select Particles Emitter from the list. This is your death effect — the "soul" or debris burst that plays when the player dies.&lt;/p&gt;

&lt;p&gt;The default settings are a mess for this use case. Here's what to change:&lt;/p&gt;

&lt;p&gt;Delete when out of particles → ON. If you skip this, the emitter object persists invisibly after the animation finishes. That means wasted processing and potential visual glitches on respawn.&lt;/p&gt;

&lt;p&gt;Number of particles in tank → 1. This is the one most people get wrong. The default is -1, which means infinite particles — great for fire or rain, terrible for a death burst. You want a single controlled pop, not a fountain. Set it to 1.&lt;/p&gt;

&lt;p&gt;Gravity on Y-axis → ~800. This gives the particles weight so they arc up and fall back down instead of floating off screen.&lt;/p&gt;

&lt;p&gt;Particle start/end size → 50%–100% of your character's size. Too small and the death feels insignificant. Too large and it looks disconnected from the player sprite.&lt;/p&gt;

&lt;p&gt;Min/max variation values (e.g., -640 to 640): This randomizes the burst angle slightly each time, so every death looks a little different. That's where the "pro" feel comes from.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flz7487qaa6ajnryofl37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flz7487qaa6ajnryofl37.png" alt=" " width="799" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event Sheet Logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three actions on one event. That's the whole system.&lt;/p&gt;

&lt;p&gt;Condition: Player is in collision with Spike&lt;/p&gt;

&lt;p&gt;Action 1: Create object → your Death Particle Emitter, positioned at:&lt;/p&gt;

&lt;p&gt;X: Player.CenterX()&lt;br&gt;
Y: Player.CenterY()&lt;/p&gt;

&lt;p&gt;This spawns the burst at the center of the player, not at some arbitrary origin point. The effect looks like it's coming from the character.&lt;/p&gt;

&lt;p&gt;Action 2: Rotate towards angle → apply to the Death Particle Emitter&lt;/p&gt;

&lt;p&gt;Angle: -90 (straight up)&lt;br&gt;
Angular speed: 0&lt;/p&gt;

&lt;p&gt;This is what gives you the upward burst instead of particles spraying sideways or downward.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6av1os2jxmcopqvvbdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6av1os2jxmcopqvvbdk.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚠️ Watch out here. GDevelop has several similar-looking rotation actions — "Rotate towards position," "Rotate towards object," etc. If the action asks you to select another object, you picked the wrong one. The correct action only asks for two numbers: angle and speed.&lt;/p&gt;

&lt;p&gt;Action 3: Add the Trigger Once condition to this event.&lt;/p&gt;

&lt;p&gt;Without Trigger Once, GDevelop creates a new emitter every frame the player overlaps the spike. That's dozens of particle bursts stacking on top of each other per second. Your game will lag, the effect will look horrible, and you'll spend an hour debugging something that's just a missing condition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzel4pltntw2aj8izyj10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzel4pltntw2aj8izyj10.png" alt=" " width="800" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Details That Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hide or delete the player sprite immediately. Once the death triggers, the player shouldn't be standing on the spike while particles burst out of them. Delete the player object or set it to invisible in the same event so the particle effect is the only thing on screen.&lt;/p&gt;

&lt;p&gt;Match particle size to sprite size. If you rescale your character later, update the emitter settings too. Mismatched sizes break the illusion instantly.&lt;/p&gt;

&lt;p&gt;Tweak gravity and velocity for different feels. High gravity + high velocity = heavy dramatic death. Low gravity + low velocity = floaty cartoony pop. Small changes to these two values completely shift the tone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Quick Reference&lt;/strong&gt;&lt;br&gt;
Particle tank: 1 (not -1)&lt;br&gt;
Delete when out of particles: ON&lt;br&gt;
Y gravity: ~800&lt;br&gt;
Spawn position: Player.CenterX(), Player.CenterY()&lt;br&gt;
Rotation angle: -90 degrees, speed 0&lt;br&gt;
Always use Trigger Once on the collision event&lt;br&gt;
Hide/delete the player sprite on death&lt;/p&gt;

&lt;p&gt;One emitter, one event, and your deaths go from "programmer placeholder" to something that actually feels like a game. Experiment with the values from here — the particle emitter has a lot of range once the foundation is right.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>Stop Watching GDevelop Tutorials. Start Building Instead.</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Mon, 28 Sep 2026 17:00:00 +0000</pubDate>
      <link>https://dev.to/katanaworks/stop-watching-gdevelop-tutorials-start-building-instead-23gb</link>
      <guid>https://dev.to/katanaworks/stop-watching-gdevelop-tutorials-start-building-instead-23gb</guid>
      <description>&lt;p&gt;Tutorial hell is real. You're three hours into a GDevelop course, eyes glazing over, and you haven't built anything that feels like your game. The course is fine. The problem is the method.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcujb7top5ko8kdnimjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhcujb7top5ko8kdnimjv.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Following step-by-step tutorials is furniture assembly without seeing the finished product. You learn how to move a character. You learn how to spawn a coin. But these mechanics sit in your brain as isolated fragments, not parts of a game you're actually making. If that sounds familiar, the fix isn't a better tutorial — it's a different approach entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Just-in-Case" Learning Is Why You're Bored&lt;/strong&gt;&lt;br&gt;
Traditional tutorials teach everything you might need. Every logic block, every edge case, every possible scenario. Sounds responsible. In practice, it's information overload.&lt;/p&gt;

&lt;p&gt;When you learn a complex inventory system but aren't building a game that needs one, that knowledge evaporates before you ever use it. You're not learning — you're mimicking. That's passive education, and it's why you lose focus and stop making progress.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsg8r1xdhvl9wvs0ny9gp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsg8r1xdhvl9wvs0ny9gp.png" alt=" " width="799" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switch to Just-in-Time Learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with a goal, not a tutorial. You want to build a 2D platformer? Don't search "complete platformer course." Work backward from your vision and solve one problem at a time:&lt;/p&gt;

&lt;p&gt;How do I get a character to stand on a platform?&lt;br&gt;
How do I make them move left and right?&lt;br&gt;
How do I flip the sprite when they change direction?&lt;br&gt;
How do I trigger a death animation on enemy collision?&lt;/p&gt;

&lt;p&gt;Each solved problem is a win that feeds the next one. You're not following a script — you're debugging your own game. The motivation difference is massive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwisqwng75z5w4jskhbnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwisqwng75z5w4jskhbnf.png" alt=" " width="799" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn from Advanced Beginners, Not Experts&lt;/strong&gt;&lt;br&gt;
Your instinct is to find the best developer with the most subscribers. Resist that. Experts suffer from the curse of knowledge — they've forgotten what it feels like to not understand the basics. They skip steps they consider obvious. They use workflows they perfected years ago that might be outdated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced beginners — creators one or two steps ahead of you — are better teachers for three reasons:&lt;/strong&gt;&lt;br&gt;
They remember the struggle. They still recall the character getting stuck in the wall, the variable not updating, the collision event doing nothing. When they teach, they show the mistakes. That's where the actual learning lives.&lt;/p&gt;

&lt;p&gt;Their info is current. Someone who figured something out yesterday is using the latest version of GDevelop and the most relevant techniques. An expert might be teaching a method from three versions ago.&lt;/p&gt;

&lt;p&gt;They don't skip "obvious" steps. They speak your language. They explain the keyboard shortcut. They show which menu to open. You don't get stuck because the instructor assumed you already knew something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fastest Way to Lock It In: Teach It&lt;/strong&gt;&lt;br&gt;
Once you've implemented a mechanic — a double jump, a parallax background, a checkpoint system — explain it to someone else. Blog post, short video, even a written note to yourself. Format doesn't matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Teaching does two things:&lt;/strong&gt;&lt;br&gt;
It forces organization. Verbalizing your process moves knowledge from short-term recall into durable understanding. If you can walk someone through it, you own it.&lt;/p&gt;

&lt;p&gt;It exposes gaps. If you can't explain a specific part of your logic in simple terms, you don't fully understand it yet. That's not a failure — it's a free diagnostic. Go back, relearn that piece, and try explaining it again.&lt;/p&gt;

&lt;p&gt;You don't need an audience. You need the act of articulating what you did and why it worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Playbook&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're stuck in tutorial hell right now, here's the shift:&lt;/p&gt;

&lt;p&gt;Stop watching tutorials like movies. Have GDevelop open. Only search for answers to the specific problem in front of you.&lt;br&gt;
Pick one game idea. Break it into the smallest possible tasks. Solve them in order.&lt;/p&gt;

&lt;p&gt;Seek out creators who show their bugs. The fix is more instructive than the finished product.&lt;/p&gt;

&lt;p&gt;Try the "Explain It to a Five-Year-Old" test. If you get tripped up explaining your game's logic out loud, that's your gap.&lt;/p&gt;

&lt;p&gt;Build → Learn → Teach. That cycle is the fastest path from beginner to confident developer.&lt;br&gt;
The Point&lt;/p&gt;

&lt;p&gt;This isn't about abandoning tutorials. It's about stopping the passive consumption loop and replacing it with targeted problem-solving on a real project. Just-in-time learning, advanced-beginner mentors, and teaching what you build — that combination kills tutorial hell faster than any course will.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pick a game. Break it down. Build the first piece. Search only when you're stuck. Explain what you did when it works. Repeat.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>gamedev</category>
      <category>learning</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Build a Respawn Checkpoint System in GDevelop</title>
      <dc:creator>Katana Works </dc:creator>
      <pubDate>Mon, 28 Sep 2026 15:50:36 +0000</pubDate>
      <link>https://dev.to/katanaworks/how-to-build-a-respawn-checkpoint-system-in-gdevelop-odn</link>
      <guid>https://dev.to/katanaworks/how-to-build-a-respawn-checkpoint-system-in-gdevelop-odn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrr7ce3b3nojzza1ssi9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzrr7ce3b3nojzza1ssi9.png" alt=" " width="325" height="263"&gt;&lt;/a&gt;&lt;br&gt;
Death without checkpoints is just punishment. Nobody wants to replay an entire level because they clipped a spike at the 90% mark. Here's how to build a respawn checkpoint system in GDevelop using the community Checkpoints extension.&lt;/p&gt;

&lt;p&gt;What You Need in Your Scene&lt;/p&gt;

&lt;p&gt;Three objects:&lt;/p&gt;

&lt;p&gt;Player — your main character&lt;br&gt;
Checkpoint sprite — a flag, glowing disk, star, whatever reads as "progress saved"&lt;br&gt;
Hazard — spikes, pits, enemies, anything that kills the player&lt;br&gt;
Install the Checkpoints Extension&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0rgoez7espspy2obv4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0rgoez7espspy2obv4s.png" alt=" " width="799" height="465"&gt;&lt;/a&gt;&lt;br&gt;
Open your Project Manager → Extensions → click the + button → search "Checkpoints."&lt;/p&gt;

&lt;p&gt;Watch out: there's a "Checkbox" extension that shows up in results too. You want Checkpoints, not Checkbox. Installing the wrong one means the actions you need won't exist when you go looking for them.&lt;/p&gt;

&lt;p&gt;Save Logic: Store the Player's Position on Contact&lt;/p&gt;

&lt;p&gt;Create an event with this structure:&lt;/p&gt;

&lt;p&gt;Condition: Player is in collision with Checkpoint&lt;/p&gt;

&lt;p&gt;Action: Checkpoints → Save a checkpoint for an object&lt;/p&gt;

&lt;p&gt;The save action takes three inputs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3ah04qfjuloaxgrpxq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3ah04qfjuloaxgrpxq4.png" alt=" " width="799" height="401"&gt;&lt;/a&gt;&lt;br&gt;
Object: your player&lt;br&gt;
X and Y coordinates: where the player should reappear. Hover over your desired respawn point in the Scene Editor to grab these. Spawning slightly above the checkpoint (e.g., X: 288, Y: -95) prevents the player from clipping into the floor.&lt;br&gt;
Checkpoint Name: a string identifier like "Checkpoint1". This must be in double quotes. Without quotes, GDevelop treats it as an undefined variable and the whole thing silently breaks.&lt;br&gt;
Load Logic: Respawn on Death&lt;/p&gt;

&lt;p&gt;Condition: Player is in collision with Hazard&lt;/p&gt;

&lt;p&gt;Action: Checkpoints → Load a checkpoint&lt;/p&gt;

&lt;p&gt;Use the same player object and the exact same checkpoint name string you used in the save action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbwbgcwqg65bts29lkyxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbwbgcwqg65bts29lkyxv.png" alt=" " width="800" height="406"&gt;&lt;/a&gt;&lt;br&gt;
When the player hits a hazard, they teleport back to the saved coordinates instantly.&lt;/p&gt;

&lt;p&gt;Pro tip: If you have multiple hazard types, put them all in an object group called "Hazards." One collision event covers every dangerous object in the game instead of duplicating events per spike variant.&lt;/p&gt;

&lt;p&gt;Visual Feedback&lt;/p&gt;

&lt;p&gt;Players need to know the checkpoint activated. Give your checkpoint sprite two animations:&lt;/p&gt;

&lt;p&gt;Off — default inactive state&lt;br&gt;
On — activated state (color change, flag wave, glow, etc.)&lt;/p&gt;

&lt;p&gt;Add a "Change animation to On" action to your save event. Now the checkpoint visually confirms the save.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3fgydg339hynx65cxf6m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3fgydg339hynx65cxf6m.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;br&gt;
Common Mistakes&lt;br&gt;
Respawning directly on the checkpoint — offset the Y coordinate so the player drops in from above, otherwise they can get stuck in geometry&lt;br&gt;
Forgetting quotes on the checkpoint name — this fails silently, which makes it annoying to debug&lt;br&gt;
Wrong extension installed — Checkbox ≠ Checkpoints&lt;br&gt;
Wrap Up&lt;/p&gt;

&lt;p&gt;The whole system is two events: one save on checkpoint collision, one load on hazard collision. The Checkpoints extension handles coordinate management so you don't have to track X/Y positions in variables manually. From here you can chain multiple checkpoints per level, add death animations, or build in a respawn cooldown.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
