Advertisement · 728 × 90

Posts by

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 🤩

1 month ago 1 0 0 0

Why recompile ?

1 month ago 1 0 1 0
Post image

⛰️ Result after a few hours of experimenting...

Erosion algorithm + hiking trail generator on terrain3d

#godot #terrain3d #gamedev #indiedev #indiegame #procgen

1 month ago 8 2 0 0
Video

A hint

1 month ago 0 0 1 0
Post image

Can you tell what `@tool` I'm building?

#godot #terrain3d #gamedev #indiedev #indiegame #procgen

1 month ago 9 3 1 0
Video

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.

1 month ago 1 0 0 0
a bunch of very specifically named hardcoded boolean fields in a single script representing the entire save state of the 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

4 months ago 645 84 35 14
Video

Interactive #Godot tween guide. If you need help with tweens, transitions or adding juice, it’s all here.

qaqelol.itch.io/tweens

#gamedev #indiedev

5 months ago 207 53 4 4

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

5 months ago 1 0 1 0
Video

Dice'n Goblins AVAILABLE NOW!

store.steampowered.com/app/2945950/...

BUY the game on Steam and Share this post!

#Godot #indiegame #rpg

1 year ago 89 43 6 5
Advertisement

What other language reverses arguments when doing partial application?

It should not warn, it should apologize 😂

1 year ago 0 0 1 0
```
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
```

``` 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.
```

1 year ago 2 0 1 0
@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

@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.

1 year ago 0 0 0 0
Post image

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).

1 year ago 0 0 1 0
Post image Post image Post image

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

1 year ago 0 0 1 0
Video

Replacing anonymous progress bars with meaningful UI

Day 1: Phone Signal icon 🛜

1 year ago 0 0 1 0
Post image

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...

1 year ago 1 0 0 1
Advertisement
Preview
From the gamedev community on Reddit Explore this post and more from the gamedev community

Hello world,

My first contribution on this network is a reminder that a Guild War's Audio Programmer posted a very very VERY useful comment about positional audio on third-person games:

www.reddit.com/r/gamedev/co...

1 year ago 7 2 0 0