Very beautiful, thanks for making and sharing this tutorial! Made me smile seeing Godot and TheDarkMod compared so closely: Love them both and TDM never ceases to amaze me with how much it got right and still does with each update.
YO for anyone who is watching this and cant get the color unless the colorrect is on screen, make sure to go into the Render Target tab in the colorrect and switch update mode to always!
Is the light detection supposed to break if you hide the texture/color rectangles or am I doing something wrong? I would have thought they were downstream, not middlemen, of the textures and color values. In other words, how do I declutter the HUD so it's just the progress bar and still have light detection work as intended? Anyway, fantastic tutorial, man. I love the insight into one of my favorite games of all time. 💪💪
Yooo, having the same issue, did you ever figure out a solution? It really feels like the visibility of the color rect and texture rect shouldn't matter for the way it's written in the code, but it does...
@@simbalion3694 I had the same problem, i solved it by going into the inspector sheet of the subviewport and setting the "update mode" of the "render target" to "always". I was 2 hours deep in this problem hahahaha. I hope it solves your problem too.
@@evandroijanques5524 Thanks for the possible solution! I actually ended up switching to a simpler way to detect light for my game because this method seemed overkill for my purposes, but if I end up switching back I'll definitely try this out!
Brilliant approach and explanation. I would clean up the code a bit more to have a dedicated node for the light detection and not everything in the player script, but otherwise super easy to follow. I also love stealth games, unfortunately I am currently not working on any. But nevertheless good to know!
To make this work in 2D, one should make some tweaks: 1. Set up the main viewport's culling mask: var cull_mask: int = 20 get_tree().root.get_viewport().canvas_cull_mask &= ~(1 void: world_2d = get_tree().root.world_2d
Really wish I was skilled enough right now to recreate this in Unity, all the shadow detection systems I find for that engine are the raycast style. Swear I found this style once but for the life of me I can't track it down again
I think it would be preferable for there to exist a built-in _light probe_ type of object, which could detect the light received at a point - _or perhaps a full 3D space_ - in the same way as the light would be received by a mesh surface to be rendered. This would skip the usage of a camera and interpretation of luminance from the camera's view. Anyhow, for this video's method, could the downscaling step be effectively skipped by using a 1x1 pixel camera resolution to capture the image?
Do you think you could make some Material Maker tutorials? Your materials look pretty good. I'm not at all happy about some materials I've been trying out from _ambientcg._ They're overly realistic, and bland as well, with very low contrasts (e.g. light bricks with also light crevices). But I'm completely clueless about apps like Material Maker. So many nodes, and so little clue how to use them. :) Thanks for this video, btw. I've tried implementing this kind of thing once, but I couldn't make it work that well.
Would be correct to assume that the Thief arrays cast method regarding the lightmap brightness could be used to trigger different SFX on different horizontal surfaces f.e. muffled steps when walking on models/textures named as carpets?
I tried to implement this in 2D, but something must work differently, because the light outside the SubViewport aren't affecting the objects inside the light detector. Or am I doing something stupid?
I'm definitely going to use this for a project. Thank you so much!
Very beautiful, thanks for making and sharing this tutorial! Made me smile seeing Godot and TheDarkMod compared so closely: Love them both and TDM never ceases to amaze me with how much it got right and still does with each update.
life saver! super underrated video
Wow! Thank you!
YO for anyone who is watching this and cant get the color unless the colorrect is on screen, make sure to go into the Render Target tab in the colorrect and switch update mode to always!
Thanks! This is very helpful tutorial, hope to see more from you!
Great video. I am glad you are keeping on with your channel!
Thanks for the tutorial, very excited for Godot 4 videos coming from you :D Hope you're doing well
Great tutorial, Thank you so much!
Perfect explanation, thank you!
your channel is a treasure trove, thank you for your hard work!
THANK GOD FOR THIS VIDEO
Nice - really smart idea for light detection, will give it a try :) Thank you for the informative video
Kudos friend. This was awesome
Very well done, thank you for the great tutorial!
Just found this channel. Very good stuff.
WOW, Huge content here dude!!!
amazing~keep going
I love Thief and want to do something thieflike. Thanks.
Thanks 🙂
Is the light detection supposed to break if you hide the texture/color rectangles or am I doing something wrong? I would have thought they were downstream, not middlemen, of the textures and color values.
In other words, how do I declutter the HUD so it's just the progress bar and still have light detection work as intended?
Anyway, fantastic tutorial, man. I love the insight into one of my favorite games of all time. 💪💪
Yooo, having the same issue, did you ever figure out a solution? It really feels like the visibility of the color rect and texture rect shouldn't matter for the way it's written in the code, but it does...
@@simbalion3694 I had the same problem, i solved it by going into the inspector sheet of the subviewport and setting the "update mode" of the "render target" to "always". I was 2 hours deep in this problem hahahaha. I hope it solves your problem too.
@@evandroijanques5524 Thanks for the possible solution! I actually ended up switching to a simpler way to detect light for my game because this method seemed overkill for my purposes, but if I end up switching back I'll definitely try this out!
Brilliant approach and explanation.
I would clean up the code a bit more to have a dedicated node for the light detection and not everything in the player script, but otherwise super easy to follow.
I also love stealth games, unfortunately I am currently not working on any. But nevertheless good to know!
very good
To make this work in 2D, one should make some tweaks:
1. Set up the main viewport's culling mask:
var cull_mask: int = 20
get_tree().root.get_viewport().canvas_cull_mask &= ~(1 void:
world_2d = get_tree().root.world_2d
Really wish I was skilled enough right now to recreate this in Unity, all the shadow detection systems I find for that engine are the raycast style. Swear I found this style once but for the life of me I can't track it down again
i like your video.
I think it would be preferable for there to exist a built-in _light probe_ type of object, which could detect the light received at a point - _or perhaps a full 3D space_ - in the same way as the light would be received by a mesh surface to be rendered.
This would skip the usage of a camera and interpretation of luminance from the camera's view.
Anyhow, for this video's method, could the downscaling step be effectively skipped by using a 1x1 pixel camera resolution to capture the image?
light probes are just 'cameras', at least godot's implementation.
Do you think you could make some Material Maker tutorials? Your materials look pretty good. I'm not at all happy about some materials I've been trying out from _ambientcg._ They're overly realistic, and bland as well, with very low contrasts (e.g. light bricks with also light crevices). But I'm completely clueless about apps like Material Maker. So many nodes, and so little clue how to use them. :)
Thanks for this video, btw. I've tried implementing this kind of thing once, but I couldn't make it work that well.
There a entire library you can access inside the program, it downloads other's people materials on from the site.
Would be correct to assume that the Thief arrays cast method regarding the lightmap brightness could be used to trigger different SFX on different horizontal surfaces f.e. muffled steps when walking on models/textures named as carpets?
I tried to implement this in 2D, but something must work differently, because the light outside the SubViewport aren't affecting the objects inside the light detector. Or am I doing something stupid?
Can we use this method in 3rd person games??
This was super helpful and awesome, thank you!