Cashew OldDew
Cashew OldDew
  • 36
  • 184 052
Making this Halloween game taught me so much about Godot!
Hello, everyone! Inspired by @SebastianLague's outstanding Coding Adventures series, I decided to do my own little adventure with a Halloween game in which you can carve pumpkins. With this series I want to learn new cool things that you wouldn't normally learn from tutorials and share them with you. On top of the nice stuff, I also cover the struggles this little project took me through.
Play the game: olddews.itch.io/cashews-pumpkin-carver
Topics covered:
Canvas Groups - docs.godotengine.org/en/stable/classes/class_canvasgroup.html
Godot Shaders - docs.godotengine.org/en/stable/tutorials/shaders/introduction_to_shaders.html
Stop click propagation with Intersect Point - docs.godotengine.org/en/stable/classes/class_physicsdirectspacestate2d.html
Drawing Polygons
How to make a Viewport Capture - docs.godotengine.org/en/stable/tutorials/rendering/viewports.html#capture
Using Shaders to create a Mask
Polygon Centroids - en.wikipedia.org/wiki/Centroid#:~:text=.-,Of%20a%20polygon,-%5Bedit%5D
Adding User Interface - docs.godotengine.org/en/stable/tutorials/ui/index.html
Download web images with JavascriptBridge - docs.godotengine.org/en/stable/classes/class_javascriptbridge.html
I really hope you'll like this, as I put a lot of effort into it. 🥜 If this is well received, I will make sure to make more of these, as I had an amazing time doing it.
Yes, sadly, I'm two weeks late for Halloween. I had this idea one week before Halloween. I thought I could squeeze all the work into one week. Three weeks later, I got the proof of how wrong I was 😅
--------------------
Github repository for this project.
github.com/cashew-olddew/godot-tutorials/tree/main/4.3/4%20-%20Pumpkin%20Carver
Support me on Ko-Fi: ko-fi.com/cashewolddew
--------------------
Chapters:
0:00 Intro
1:18 Basic Shaders
4:50 Drawing Polygons
7:00 Stopping the propagation of click events
9:05 Simplifying some logic
11:40 Transforming a polygon into a mask texture
16:00 Adding depth to the pumpkin
17:12 How to find the center of weight of a polygon
33:55 Calculating the distance between two points
35:20 How to change shader parameters for different instances
36:16 Making the UI for the game
38:00 Loading sprites dynamically into the game
39:21 Changing the colors of the pumpkin
42:10 Adding a depth slider, light slider, Image download and save
43:02 Outro
#godot #halloween #gamedev
มุมมอง: 841

วีดีโอ

I Had No Idea Godot's MATCH Was So Powerful!
มุมมอง 8K14 วันที่ผ่านมา
Recently I had to use Godot's Match feature and I was absolutely amazed by its capabilities. While other programming languages all have their flavors of a match or switch statement, I haven't seen any so versatile and powerful as the one in gdscript. There are many possible applications for the Match statement. One could make a script which checks if a player has performed a combo, a script for...
Master THREADS in Godot 4.3
มุมมอง 7Kหลายเดือนก่อน
In this video I am showcasing the utility of multi threading in Godot 4.3. Threads are extremely useful for when we want to pass methods which are expensive computationally to different other cores of your processor. This leads to having a much smoother experience, helping reduce frame drops and speed up loading times. On top of that, this video also tackles issues that might occur when working...
The Ultimate Export, Demo and DLC Guide for Godot 4.3
มุมมอง 3.5K2 หลายเดือนก่อน
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/CashewOldDew/ . You’ll also get 20% off an annual premium subscription Check out the Cashew Clicker game: olddews.itch.io/cashew-clicker In this video I am trying to solve all questions that one might have when trying to export a game in Godot 4.3. As a start, I am covering the most basic way of exporting on W...
All about TileMaps in Godot 4.3
มุมมอง 8K2 หลายเดือนก่อน
A lot of things changed in Godot 4.3 regarding TileMaps. A new TileMapLayer node has been added and it changes the way TileMap Layers are managed. At first I wanted to only cover the changed topics, but I think it is much nicer to have a single place in which you can find everything you need about TileMaps and TileSets. In addition to my previous video about TileMaps: th-cam.com/video/AUVsX-mtu...
What in the world is call_deferred?
มุมมอง 3.7K3 หลายเดือนก่อน
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/CashewOldDew/ . You’ll also get 20% off an annual premium subscription Call deferred is a function that's not so straight forward. The documentation seems to be sufficient for a basic understanding of what call_deferred does, but when it comes to more complex use cases, it leaves room for confusion. Users ofte...
Master these 3 ways of Animating in Godot
มุมมอง 2.4K3 หลายเดือนก่อน
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/CashewOldDew/ . You’ll also get 20% off an annual premium subscription This video aims to showcase the most commonly used character animation techniques. Depending on your use case and on your assets, you will learn how to animate your characters with individual sprites or complete sprite sheets. Additionally,...
Signals in Godot 4.3
มุมมอง 1.6K4 หลายเดือนก่อน
DISCLAIMER: This video was filmed in Godot 4.2.2, but I changed the title to Godot 4.3 as nothing between those versions affected the features presented in the video. Signals are one of the most useful and easiest to use feature Godot has to offer. They provide a way to easily handle communication between two nodes. Signals are basically the Godot implementation of the observer design pattern. ...
Make your Godot Editor Prettier with Custom Icons!
มุมมอง 8K4 หลายเดือนก่อน
This video aims to show how easy it is to change the icons of your Godot Editor. Especially when using a lot of custom or abstract components, navigation in the editor can become quite complicated, so hopefully this comes as an easy solution to that. Additionally, icons in Godot are generally color coded, so it is good to keep that in mind when making icons for better classification of the new ...
Tweens are AMAZING in Godot 4.3
มุมมอง 8K5 หลายเดือนก่อน
DISCLAIMER: This video was filmed in Godot 4.2.2, but I changed the title to Godot 4.3 as nothing between those versions affected the features presented in the video. This video aims to cover in-depth Godot tweeners and how to use Tweens. Tweens are most helpful for creating animation and can really bring life to a game. With tweens, one can do simple sequential animations or make complex paral...
Reusing Scripts in Godot 4.3? Easy!
มุมมอง 4K5 หลายเดือนก่อน
DISCLAIMER: This video was filmed in Godot 4.2.2, but I changed the title to Godot 4.3 as nothing between those versions affected the features presented in the video. This tutorial aims to showcase the capabilities of Script Templates in Godot 4.3. While many times, it would be easy to copy and paste a script from one project to another, it could get cumbersome to repeat this action every time ...
Pausing is SO EASY in Godot!
มุมมอง 1.5K5 หลายเดือนก่อน
Pausing is SO EASY in Godot!
The EASIEST way to add Undo and Redo in Godot 4.2
มุมมอง 1.9K6 หลายเดือนก่อน
The EASIEST way to add Undo and Redo in Godot 4.2
Master Tilemap PATHFINDING & Obstacle Avoidance in Godot 4.2
มุมมอง 23K6 หลายเดือนก่อน
Master Tilemap PATHFINDING & Obstacle Avoidance in Godot 4.2
In depth TILEMAPS Guide for Godot 4.2
มุมมอง 12K6 หลายเดือนก่อน
In depth TILEMAPS Guide for Godot 4.2
Follow these 5 steps to NEVER struggle with bugs again in Godot!
มุมมอง 4K7 หลายเดือนก่อน
Follow these 5 steps to NEVER struggle with bugs again in Godot!
Master Godot 4.2+ Localization!
มุมมอง 1.9K7 หลายเดือนก่อน
Master Godot 4.2 Localization!
Steer and Draw Forces in Godot 4.2+
มุมมอง 2.5K8 หลายเดือนก่อน
Steer and Draw Forces in Godot 4.2
Write Faster Code with Coroutines in Godot 4.2+ and 3.5
มุมมอง 3.9K9 หลายเดือนก่อน
Write Faster Code with Coroutines in Godot 4.2 and 3.5
Complete Godot version control workflow with Git
มุมมอง 7K9 หลายเดือนก่อน
Complete Godot version control workflow with Git
Vampire Solitaire - OFFICIAL TRAILER
มุมมอง 3889 หลายเดือนก่อน
Vampire Solitaire - OFFICIAL TRAILER
Simplified 2D Grid PATHFINDING in Godot 4.2
มุมมอง 15K10 หลายเดือนก่อน
Simplified 2D Grid PATHFINDING in Godot 4.2
Automatically zoom camera to a Tilemap in Godot 4.2
มุมมอง 8K10 หลายเดือนก่อน
Automatically zoom camera to a Tilemap in Godot 4.2
Tilemap PATHFINDING in Godot 4.2
มุมมอง 30K11 หลายเดือนก่อน
Tilemap PATHFINDING in Godot 4.2
This game lets you access Gandalf's computer...
มุมมอง 258ปีที่แล้ว
This game lets you access Gandalf's computer...
Can you model a better Corki in 1 day with no experience?
มุมมอง 575ปีที่แล้ว
Can you model a better Corki in 1 day with no experience?
The difference a squirrel can make | Kaycee's MOD | SPOILER FREE
มุมมอง 110ปีที่แล้ว
The difference a squirrel can make | Kaycee's MOD | SPOILER FREE
Can you beat Vampire Survivors with only one item?
มุมมอง 140ปีที่แล้ว
Can you beat Vampire Survivors with only one item?
People are SLEEPING on Corki
มุมมอง 551ปีที่แล้ว
People are SLEEPING on Corki
People are SLEEPING on Twisted Fate
มุมมอง 958ปีที่แล้ว
People are SLEEPING on Twisted Fate

ความคิดเห็น

  • @snowy8204
    @snowy8204 2 วันที่ผ่านมา

    Is it possible to match in any order? like instead doing [meat, potato, potato] [potato, meat, potato] [potato, potato, meat] doing another way that still includes 2 potatos and 1 meat without having to write all possible options? I just started godot and this would be insanely helpfull

    • @cashewolddew
      @cashewolddew วันที่ผ่านมา

      That's a very good question, however, the order matters there.. I had the same issue while trying to make the recipe example in this video. You could, however, always sort the array you pass to match.

  • @chasmkek
    @chasmkek 2 วันที่ผ่านมา

    I randomly stumbled on this video. I was pretty familiar with tilesets already but I still learned a few amazing things here (especially the scene collection in tiles). Such an amazing and well done video. You have such a likeable personality, dont stop making videos!

    • @cashewolddew
      @cashewolddew 2 วันที่ผ่านมา

      Awh, thank you so much! I'm so excited to make more 🥜

  • @sebastienmorin9020
    @sebastienmorin9020 3 วันที่ผ่านมา

    Thank you for giving me one more procrastination tool: making icons for my Godot that no one sees :'D

    • @cashewolddew
      @cashewolddew 3 วันที่ผ่านมา

      Oh nooo! Ha ha ha. I hope this also helps you with organizing your stuff 😄🥜

    • @sebastienmorin9020
      @sebastienmorin9020 2 วันที่ผ่านมา

      @@cashewolddew It's great actually, thank you for the informative and fun video. I browsed a couple more, and you are doing some great stuff :D

  • @alphajaehoon
    @alphajaehoon 3 วันที่ผ่านมา

    Fantastic tutorial, thank you very much for this! :)

    • @cashewolddew
      @cashewolddew 3 วันที่ผ่านมา

      Thanks a lot for the comment! 🥜

  • @phazze
    @phazze 3 วันที่ผ่านมา

    In my experience, it was too slow. However using AStarGrid2D worked extremely fast and can be further optimized to choose which algorithm it would use as well as jumping points.

  • @konstantinosmonastiroglu7514
    @konstantinosmonastiroglu7514 3 วันที่ผ่านมา

    Switch kiss rizz moskvich

  • @kostar5
    @kostar5 3 วันที่ผ่านมา

    looks like TS for some reason

  • @valeriaveraherrera7587
    @valeriaveraherrera7587 3 วันที่ผ่านมา

    Great tutorial! Which would be the correct way to keep track of the number of seeds eaten by each chicken? something like an unique score for each one? I tried adding a variable "score" to my chickens and referencing the chicken scene in my food script and calling chicken.score += 1 inside the on body entered function but I get that chicken is always null

    • @cashewolddew
      @cashewolddew 3 วันที่ผ่านมา

      Instead of the chicken being referenced, you could simply modify the score to the node was passed in the body entered function.

    • @valeriaveraherrera7587
      @valeriaveraherrera7587 3 วันที่ผ่านมา

      @@cashewolddew omg I didn't even see that a Node2D was passed to the function and I spent like an hour trying different methods, thank you so much!

  • @vapor_rains
    @vapor_rains 4 วันที่ผ่านมา

    we have the same exact version, did the same exact thing as you only to get tmp files instead of an .exe file when I render..

    • @cashewolddew
      @cashewolddew 4 วันที่ผ่านมา

      Could you give me some more details? On what operating system are you? Are you looking in the location of the export?

  • @Vexcenot
    @Vexcenot 5 วันที่ผ่านมา

    15:20 5:12

  • @FzAKHocXFt
    @FzAKHocXFt 7 วันที่ผ่านมา

    Make a video about the Encryption tab How to compile your template.

    • @cashewolddew
      @cashewolddew 7 วันที่ผ่านมา

      I added it to the list of videos I need to do 😊🥜

  • @smokelingers
    @smokelingers 8 วันที่ผ่านมา

    16:34 Classic

  • @thanatos454
    @thanatos454 8 วันที่ผ่านมา

    You can also avoid those warnings by connecting in a different lifetime function that doesn't run more than once, like _init()

  • @Eaode
    @Eaode 9 วันที่ผ่านมา

    11:05 quick question: how does is_amount_of() know what array to check? Does structuring the match case this way automatically run that function on that array somehow? I just don't know how that works given that the function is_amount_of was only passed parameters about the type and required quantity, and wasn't passed the array or foods to check.

    • @cashewolddew
      @cashewolddew 8 วันที่ผ่านมา

      Oh no, there's no match magic going on. Actually, since this was just a simple example, I just took the global variable containing the data and filtered that like this: func is_amount_of(type: Food.FOOD_TYPE, number: int): var ingredients_of_type = ingredients.filter( func(ingredient): return ingredient[1] == type ).size() return ingredients_of_type == number I'll add the source code soon so you can see all the details 😊🥜

  • @playbehnder
    @playbehnder 9 วันที่ผ่านมา

    i didnt know about this. Coool. I think I can use it in my project.

  • @635574
    @635574 10 วันที่ผ่านมา

    Ok finally someone show how yo make an alpha from an image withiut shaders. I had some plans that wouldnt work without it. Like localised animated texture pools with a dynamic size alpha.

    • @cashewolddew
      @cashewolddew 10 วันที่ผ่านมา

      Are you talking about the Canvas Groups? If so, then I'm really happy I mentioned them 😄🥜

  • @maxhamilton3260
    @maxhamilton3260 11 วันที่ผ่านมา

    This is a really fantastic and insightful video!!! It's a bit weird to introduce terrain sets before painting physics properties, but it's good to actually finally understand terrain sets properly!!

    • @cashewolddew
      @cashewolddew 10 วันที่ผ่านมา

      I'm really happy you found it helpful!

  • @papastuffy
    @papastuffy 11 วันที่ผ่านมา

    bro, most of this was WAY above my skill level for right now, but it 100% reinforced the idea that game dev is like game play, it's not always about what's easy it's about creative problem solving. look at the problem and then look at it again from a different angle (pun intended). work like this helps me believe i might actually be able to pull off my game idea. and i thank you for that.

    • @cashewolddew
      @cashewolddew 11 วันที่ผ่านมา

      I really, really appreciate your comment! I especially had troubles with transforming the polygon into a mask. When I had the idea of taking a screenshot of the game I thought it had to be the worst idea, but actually, it worked and it made the experience so much fun! I also don't think this is above your skill. Anything can be learn and as long as you stay motivated, you'll make it for sure!

  • @helgemaus1090
    @helgemaus1090 11 วันที่ผ่านมา

    Great one!

  • @fcolecumberri
    @fcolecumberri 12 วันที่ผ่านมา

    This is exactly the same as Python's match (I think Rust also has the same feature).

  • @Xero_Wolf
    @Xero_Wolf 12 วันที่ผ่านมา

    If only it was this simple in 3D

    • @cashewolddew
      @cashewolddew 12 วันที่ผ่านมา

      I see this requested a lot! I'll prioritize it and see if I can make a video on it 🥜

    • @Xero_Wolf
      @Xero_Wolf 12 วันที่ผ่านมา

      @@cashewolddew Thanks! I know the basics of it. I just wished Godot made it easier to do in 3D as it is in 2D. Like having draw 3D line function for example.

  • @btarg1
    @btarg1 13 วันที่ผ่านมา

    This is incredibly useful info, thank you! Being able to match dictionary elements is especially cool

  • @dbatdev
    @dbatdev 14 วันที่ผ่านมา

    Great, thanks! yeah a 3d fish tut would be cool.

    • @cashewolddew
      @cashewolddew 14 วันที่ผ่านมา

      Thanks! It's already added to the list. 🥜

  • @KiritoMeow
    @KiritoMeow 14 วันที่ผ่านมา

    Keep up the good work! You got a new subscriber

    • @cashewolddew
      @cashewolddew 13 วันที่ผ่านมา

      Thank you! I really appreciate it 🥜

  • @jeremysharpe5467
    @jeremysharpe5467 15 วันที่ผ่านมา

    I think there's a mistake around 17:30. You set the tween to parallel, but the issue is that it runs the up and down movement at the same time for each child, which ends up ONLY showing the downward movement. I hope if you rewatch it it's clear what's wrong. They don't move up and down, only down at 17:35. Is there a way to make each child parallel, while having the up and down property tweens run sequentially, or would a separate tween be required for each child?

    • @cashewolddew
      @cashewolddew 15 วันที่ผ่านมา

      Woah, I think you're actually right! At first I thought that my game just didn't load in time to see the upwards movement. I think that happens because we are affecting the same property (position). If you look at the previous example, at 14:52, you'll notice that both scaling and moving the sprite work at the same time. Right now I can't think of a better solution than simply adding a delay to your down movement tween. For example, you could write: tween.tween_property(child, "position", Vector2.DOWN * 50, 1).set_delay(1). However, I'm not able to test this right now, so please let me know if it works for you :) 🥜

    • @jeremysharpe5467
      @jeremysharpe5467 14 วันที่ผ่านมา

      @@cashewolddew I came across the solution which is "Tween.chain": "Used to chain two Tweeners after set_parallel() is called with true"

  • @GameTourist491
    @GameTourist491 15 วันที่ผ่านมา

    just found this channel, the tutorial is awesome, subscribed❤

  • @SlyyL
    @SlyyL 15 วันที่ผ่านมา

    Priceless resource here, thanks for sharing so much with the community

    • @cashewolddew
      @cashewolddew 15 วันที่ผ่านมา

      Woah, I appreciate it so much! I hope to bring more useful videos in the future. Thanks! 🥜

  • @devsworlds
    @devsworlds 16 วันที่ผ่านมา

    GSS Match mobile game also developed by godot

  • @mak448a
    @mak448a 16 วันที่ผ่านมา

    You don’t need a developer account to export for iOS for testing

    • @cashewolddew
      @cashewolddew 16 วันที่ผ่านมา

      I didn't manage to find a solution for that. Could I ask you what are you doing to make it work on your side?

    • @mak448a
      @mak448a 14 วันที่ผ่านมา

      @@cashewolddew I keep getting flagged by the automod, so I can't tell you :\

    • @mak448a
      @mak448a 14 วันที่ผ่านมา

      I'll try anyway though. Go to product, then archive in the top menubar.

    • @mak448a
      @mak448a 14 วันที่ผ่านมา

      Next, right click the archive and press view in finder (or something like that)

    • @mak448a
      @mak448a 14 วันที่ผ่านมา

      Find the app bundle inside the archive.

  • @luizzm
    @luizzm 17 วันที่ผ่านมา

    What about the debug keystore? Is it no longer required?

    • @cashewolddew
      @cashewolddew 2 วันที่ผ่านมา

      The keystore is covered at 52:44 under additional Android Settings

  • @tm001
    @tm001 18 วันที่ผ่านมา

    Now my dead project have a hope to revive 😭

  • @Xero_Wolf
    @Xero_Wolf 18 วันที่ผ่านมา

    Damn I've been using Godot almost 4 years now and I'm just learning about a few of these.

  • @NadieNobody
    @NadieNobody 18 วันที่ผ่านมา

    Super valuable information, can't wait to apply it in future projects!