Hey guys! I uploaded a vid explaining the changes of the tilemaps for Godot 4.3, check it out! kzbin.info/www/bejne/aWjQmWmlo7B6pMk
@adrianvazquez8686 Жыл бұрын
I can't wait to finish this series!!! I'm really excited on making my farming game!! I've been following all your tutorials and let me tell you they're great!! I'm new to Godot so I really need your tutorials to make my first "Stardew Valley" game!! Keep it the good work!!
@hawkgamedev14 күн бұрын
hey Jackie if you ever read this, just to let you know you can make the editor check for errors faster so the red highlight goes away faster, Editor Settings> General > Text Editor> Completion> Idle Parse Delay.
@233piotrek6 ай бұрын
As a beginner game developer procedural generation seemed like black magic, but this and previous videos explained everything so neatly, thank you very much!
@CyprusLLama7 ай бұрын
This is a great instructional series, I'm finding it very helpful! Something that can be done to avoid modifying the ranges based on the noise type is to run all the values through a normalising function which converts the given value to a number between 0 and 1 based on the min and max. In pseudocode it would be something like: func _normalise(val, min, max): return (val - min)/(max - min) Obviously this would require looping through the noise values once before setting the tiles, but it allows you to use all the various noise types without having to cusomise your mapping code to each type individually.
@JackieCodes7 ай бұрын
Thanks so much for the improvement! I will check the code out!
@skell_jams6 ай бұрын
does abs(terrain_noise.get_noise_2d(x, y)) accomplish the same thing? I think using the absolute value would prevent needing to rewrite the loop while still having your colorramp magic numbers
@CyprusLLama6 ай бұрын
@@skell_jams I don't think that would do the same thing, because the absolute value of a number is simply the number value without a sign. So for example, in a range of (-0.7, 0.5), taking the absolute value would give you a range of (0, 0.7). More importantly, however, is the fact that values of e.g. 0.2 and -0.2 would evalutate to the same if you take their absolute value, which can significantly skew the output and would probably break the randomness of the noise in strange and unexpected ways.
@adammcelroy98537 ай бұрын
This series has been so helpful probably the best and most informative since ive started godot last month. Really made me more confident in actually making games. Looking forward to seeing whatever comes next for your channel
@Bielmeloba Жыл бұрын
Great video, i love how you explain things! Just only one thing: If you add collisions to the water, all of your cells will have collisions. To solve this: Create another water atlas, one with collisions and the other without. The water under the ground has to be the one without collisions, and voilà! In code (Created this walkable_water_tile_atlas): if noise_val > 0: sand_data["array"].append(Vector2(x,y)) tile_map.set_cell(water_layer, Vector2(x,y), 0, walkable_water_tile_atlas) else: tile_map.set_cell(water_layer, Vector2(x,y), 0,water_tile_atlas)
@gabrielrezende252510 ай бұрын
thank you so much for this solution!
@891Demonkiller6 ай бұрын
Thanks for this. Rather than a new tile atlas, I was able to get the same result using an alternative tile in editor go to TileSet > Select the water tile > right click "create an alternative tile". It spawn to the right of you TileSet Then paint the alternative tile with the physics layer for collidable water. Hover over the alternate tile to see its alternative number #under the Var water_atlas = Vector2i(0,1) I added a new variant var water_atlas_collision_alt = whatever that alternative number you saw was if noise_val > 0: tile_map.set_cell(water_layer, Vector2(x,y), source_id, water_atlas) else: tile_map.set_cell(water_layer, Vector2(x,y), source_id, water_atlas, water_atlas_collision_alt)
@KikiJynx11 ай бұрын
You explaining how to move the sprite ysort stuff just solved a logistics issue I’ve been losing sleep over for 3 days 😭 thank you so so much ❤
@dovos85727 ай бұрын
for tilemap layers it really helps to make an enum like enum Layers {Water, Ground1, Ground2, Cliffs, Environment} it counts up from 0 from the left and you get autocomplete for it. set_cell(Layers.Water, pos, 0, atlas_pos)
@NathanWoyessa7 ай бұрын
do you know whats the most efficient way to load more chunks as you go out so its infinite? I tried using a basic chunk system where it devides your position by the width and height to get a chunk. But its hard to load and unload chunks without overwriting existing ones
@rindallbroxmitten9 ай бұрын
Thank you very much for this tutorial series. Very clear, concise and with a flair of humor. Can't wait for another Godot hit song! :p I usually only sing about potatoes or whatever else I'm cooking.
@federicodelcid78762 ай бұрын
Perfect Playlist, thank you so much ❤
@gushcraftgaming Жыл бұрын
Don't know if anybody else had an issue with the cliff textures having a weird issue graphical issue of using the wrong texture, but I found creating a tile on the blank location where we normally fill in all 9 sides fixed it. This might've been mentioned somewhere in the previous guides but I'm not entirely sure. Edit: I just realized the sprites that were used in the previous guides were updated with newer sprites, and the cliffs have a filled in tile.
@JackieCodes Жыл бұрын
Yea! Thank you for the comment! Updated sprites are on itcu guys!
@hawkgamedev14 күн бұрын
Another solution you can play around with is using the same layer as grass as a copy and place trees only with a new tree terrain with the probability property built in Godot's terrain system.
@cyborganic11 ай бұрын
So helpful, thank you for this series!
@davidemanueldedio93348 ай бұрын
Hello! this series is awesome,I loved all the videos! your explainetions are very very very good, you´re really teache us a lot!. Please don´t get tired to do this serie! thanks for share this contents! greetings from Argentina! :)
@davemurray9977 Жыл бұрын
Love your videos Jackie!!!!!!! Muchas gracias 🙏 🙏🙇♂️🙇♂️
@deviantstudio10 ай бұрын
wow! that was cool! watched whole the series. subscribed!
@mertakif65054 ай бұрын
Your tutorials are perfect
@yumleaw390210 ай бұрын
Love your video, please continue.
@ruckboger Жыл бұрын
Another great tutorial, thank you!
@jRsqILVOY5 ай бұрын
Your tutorials are amazing! Could you do one on Navigation with the TileMap too please?
@SomeRandomWittyName5 ай бұрын
Great video, Your approach seems easy to implement into already existing projects. How ever, how would you ensure that all map parts are reachable? For example at the moment some parts of a land mass would become unreachable if player can cross water. Are there plans to include that into tutorial?
@refeals Жыл бұрын
love this series
@BrunoFernandes_8411 ай бұрын
i learn a lot since i start follow you, appreciate. Just one question is this valid for isometric tilemaps? or it works diferently? Cheers
@Theonewhoknows986 ай бұрын
i can use the x,y values to instance nodes too? like treasures, enemies etc
@gamegenius1268 ай бұрын
Maybe someone already asked but... I'd like to see how to make this map generating in runtime and how to deal with memory stuff (I mean how to work with chunks as minecraft does). Because now, as I can see, we are hardcoding our world size values. And thanks for this amazing series! Helps a lot for starting in game development!!
@mohammadfakhraee1338 ай бұрын
You can generate map block by block. Declare a specific map width and height and when user gets near to edges you call generation for new blocks near the edges. Also I guess Godot map has a cache strategy (I'm not sure about it you can search)
@StrangeObscureStories2 ай бұрын
Amazing tuts
@nelsonguedespaulojunior977 Жыл бұрын
Hi, very nice tutorial series. Can you do some video talking more about collisions? You created one very fast for the cliffs, but what if we want to climb in the cliffs for instance? Or maybe there's a road to the top and we want to walk on top of it, but not fall? How about not being able to walk on water?
@response-status-200 Жыл бұрын
Thanks 💚
@rinevardmercy5 ай бұрын
thank you so much!
@ArteTutos2 ай бұрын
Hi, just in case great video! but I've a question, the set_cells_terrain_connect() function in Godot 4.3, how it would change to create the procedurally generated map? I'm using Godot 4.3 in this moment, but I don't know how my code would change with respect to create a prodecurally generated map, can you help me with that?
@yahshek5 ай бұрын
yo jackie all good? Curious if u are planning to continue this series or you are on a break?
@felipearisteu2 ай бұрын
How can I add a vignette to this noise? To create only water on the edge of the entire map, like in Don't Starve
@mandu95202 ай бұрын
You would probably want to use a falloff map
@99JasonKim9 ай бұрын
quick question(maybe dumb one).how do you know the max and min value of noise? did you map all the possible value in the tilemap?
@99JasonKim9 ай бұрын
ah, no problem. i saw the clip.😆
@JackieCodes9 ай бұрын
@@99JasonKim :p each noise setting is diff so you gotta map out each time
@99JasonKim9 ай бұрын
@@JackieCodes that's really good tips i learned~
@Mr3dPirate24 күн бұрын
Can you save the world you created so you can modifiy it?
@CharlesLang67611 ай бұрын
would really love a video where you build the player? Maybe it got lost, but its no longer within the playlist
@nobytes28 ай бұрын
All you need is a 2d sprite and add animations to it for the movements you want, and add input.
@QuanHu-ww1rn10 ай бұрын
Is the series over?
@Sean_Codes Жыл бұрын
Is there any planned video about procedurally generate enemy based on the map? For exaple a crab enmy that's spawn only on the beach ecc Anyway thank you for your videos they are really helpful, keep going 😃
@JackieCodes Жыл бұрын
Yes :)
@rindallbroxmitten9 ай бұрын
Wouldn't that be the same sort of procedure we did for the palm and oak trees? Make a new noise map for enemies, set a range between the min and max where you want enemies to spawn, then check the noise map of the world and set a range for that (so maybe only on sand for crabs) and if it's in those ranges, spawn an enemy on the x,y of the tile map. So don't put down a cell, but instantiate a crab.tscn.
@nobytes28 ай бұрын
@@rindallbroxmitten yeah is the same procedure, you would only put crabs on the beach layer, Dunno why bro is asking lol we literally got 8 videos on tilemaps on just about everything you need to know to build anything.
@thomasdefranceschi758 Жыл бұрын
Instead of a grass array for multiple grass tiles, if you just paint all of them with the same terrain and bitmap as the full grass tile, they will be randomly selected by the terrain generation. At least that's what my test project did. I'm not sure how they will behave if you update the terrain through code later during the game...
@JackieCodes Жыл бұрын
Ohh I will test this out! Thnx for the heads up
@jesusrubilar6673Ай бұрын
Hi! this is a great help for those who want to make maps with saving time, but now in godot v4.3 the tilemap is getting old :c now are the tilemap layer, i think the process is the same but i would like if you can explain me more about the new changes :c pls
@johnborg3054 ай бұрын
Could you please do a new updated tutorial now that tilemap is deprecated
@mandu95202 ай бұрын
The only real difference I found is that tilemaps need a layer int at the start of set cell, but since tilemap layers are all one layer they don't need that and will throw an error. If you erase the 0 at the beginning of set cell it should work.
@leandrevincent247610 ай бұрын
how to make an island
@pedrohov Жыл бұрын
I'm commenting for the yt algorithm don't tell anyone
@frozztie7511 Жыл бұрын
love your vids. but i have an error *AGAIN* and this time i cant figure out why o_O getting this error code "invalid type in function 'set_cell' in base 'TileMap'. Cannot convert argument 4 from Array to Vector2i." on ""if noise_val < 0.35 and tree_noise_val > 0.8: tile_map.set_cell(environment_layer, Vector2i(x,y), source_id, oak_tree_atlas_arr)"" been trying diffrent solutions but as far as i can see with my dyslectic eye, codes identical o_O
@JackieCodes Жыл бұрын
I will give you the answer but I will walk you through the error code. You have a problem with the oak tree atlas variable. You're using oak tree arr instead of oak tree atlas, basically you're giving an array variable and not the atlas coords
@frozztie7511 Жыл бұрын
@@JackieCodes humn, well thank you for the answer (and your videos, and the singing) ill have to figure this out when its not 11:30pm in sweden =P with luck, tomorrow after work! with bad luck, on monday xD
@JackieCodes Жыл бұрын
@@frozztie7511 why bad luck on Monday?
@frozztie7511 Жыл бұрын
@@JackieCodes good morning. Bad luck cause that's an entire weekend without getting better 😂
@frozztie7511 Жыл бұрын
@@JackieCodes well, i feel like a moron. rechecked my code (its 00:00 in the middle of the night and ive been at it for almost an hour xD) and in my wonderfull epifany of trying to figure out what i was doing wrong i realised that my code, was not, infact, identical. everything works as it should, im an idiot, and tomorrow morning i can go on with the Y sort o_O
@krish-ut9de Жыл бұрын
nice vid and wow you look really pretty
@QuanHu-ww1rn Жыл бұрын
Why is this video in 720p resolution?
@SuperPuperCode Жыл бұрын
Just please don't stop recording video tutorials, when I figure everything out, make my first game, earn a lot of money, I will definitely give you part of my income. This is not a joke.
@morganp72387 ай бұрын
Pity you skipped the player setup, particularly the animation. Darn difficult. En fin. Gracias por todo.