Wow, that’s good to know, thanks for the info 🙏
Looking forward for your next posts, I’ve been working on something 2.5D similar, but I can’t go that deep 🤩
Posts by
Why recompile ?
⛰️ Result after a few hours of experimenting...
Erosion algorithm + hiking trail generator on terrain3d
#godot #terrain3d #gamedev #indiedev #indiegame #procgen
A hint
Can you tell what `@tool` I'm building?
#godot #terrain3d #gamedev #indiedev #indiegame #procgen
Infinite grass rendering on Terrain3D, with a texture impostor inspired by @hexaquo.at's amazing article series.
hexaquo.at/pages/grass-...
Starting to think I might actually pull off this game.
a bunch of very specifically named hardcoded boolean fields in a single script representing the entire save state of the game
"save systems should dynamically handle object IDs and automatically populate the serialized data of every object that requires save states, and then for dialogue progression it needs to-"
team cherry:
WRONG. 1400 hardcoded fields in PlayerData.cs
Interactive #Godot tween guide. If you need help with tweens, transitions or adding juice, it’s all here.
qaqelol.itch.io/tweens
#gamedev #indiedev
That looks quite good, do you have learning materials you’d recommend? It has been on my todo list for a year, but it looks like such a monumental effort :x
Dice'n Goblins AVAILABLE NOW!
store.steampowered.com/app/2945950/...
BUY the game on Steam and Share this post!
#Godot #indiegame #rpg
What other language reverses arguments when doing partial application?
It should not warn, it should apologize 😂
``` func _on_child_entered_tree(node: Node) -> void: if node.is_in_group("grabbable"): _selectables.append(node) node.on_hovered.connect(_on_hovered.bind(node)) func _on_hovered(node: Node3D, hovered: bool) -> void: if hovered: _hovered = node else: _hovered = null ```
Today I learned in #godot
`.bind` binds arguments in reverse order.
This code will break, and the emitter will throw 🤦
```
Error calling from signal 'on_hovered' to callable: 'Node(MouseControls.gd)::_on_hovered': Cannot convert argument 1 from bool to Object.
```
@tool extends TextureRect @export_range(0, 1, 0.1) var value: float = 0.0 : set(new_value): value = new_value _on_update_value.call_deferred() # TODO: call once per frame at most func _on_update_value(): var tx = texture assert(tx is AtlasTexture, "Texture must be an AtlasTexture") var atlas := tx as AtlasTexture var region := atlas.region var total_width = atlas.atlas.get_width() var region_width = region.size.x var steps_in_texture = int(total_width / region_width) var step = clampi(int(value * steps_in_texture), 0, steps_in_texture - 1) region.position.x = step * region_width atlas.region = region
5. Add a script with:
- The `@export value` you'll use to set your new progress bar,
- An update function that shifts the atlas' region based on the value.
I just let the script do the maths for me, no other input than the atlas itself.
4. Pick the correct region size:
h is the total height
w is the total width divided by the number of frames
You can quickly find these values by looking at Godot's UI. It'll also do the math for you (input 520 / 5).
I'm short on time, so I just repurposed Godot's Atlases:
1. Create a sprite in asesprite, each frame is a step
2. Export it as a single sprite sheet.
3. Import as an Atlas
Replacing anonymous progress bars with meaningful UI
Day 1: Phone Signal icon 🛜
If you're doing 3D in Godot, you (should probably) use DebugDraw3D.
Personally, I have debug spheres and lines everywhere on screen when I debug my project,
The latest update adds TEXT, which is a HUGE QoL improvement.
github.com/DmitriySalni...