plixel

joined 1 year ago
[–] plixel@programming.dev 9 points 4 days ago (1 children)

You can install Ollama in a docker container and use that to install models to run locally. Some are really small and still pretty effective, like Llama 3.2 is only 3B and some are as little as 1B. It can be accessed through the terminal or you can use something like OpenWeb UI to have a more "ChatGPT" like interface.

[–] plixel@programming.dev 1 points 10 months ago

Thanks for the explanation! Your explanation led me down a rabbit hole of seeing if there's a way to cancel an await call, from what I can tell there was no clear way to do so. In my case I ended up connecting the signal to a secondary function instead of utilizing the await command, I'm not entirely sure if there's an advantage to utilizing one method over the other.

[–] plixel@programming.dev 1 points 10 months ago

I didn't have access to my computer when I posted this so I was hoping to get some info while I was away from it. Thanks to another commenter, it looks like it has a very minimal impact. Good to know for future reference!

[–] plixel@programming.dev 4 points 10 months ago

Thanks so much for testing that out! That's very informative and even more thorough than what I was looking for! I wasn't at my computer when I posted this so I couldn't test it myself.

I ended up connecting the signal to a secondary function to run on finished to avoid any potential memory errors, but it's super helpful to know that the performance impact is minimal.

19
Await Question (programming.dev)
submitted 10 months ago* (last edited 10 months ago) by plixel@programming.dev to c/godot@programming.dev
 

I'm curious what happens if you use await for a signal, but the signal is never received? Does this cause some kind of hangup?

For example if I have a function structured like so:

func foo():
    do something
    await signal.finished
    do something else

And the "finished" signal never comes, does the await call just hang indefinitely?

[–] plixel@programming.dev 1 points 1 year ago (1 children)

Interesting!! Yeah that's exactly what my node structure is. So basically instead of using signals and sending from one Map child to the other, use spawn_object as a child from hexgrid and then just call the spawn object function as needed since the hexgrid script already has a reference to the index and location of each tile. Thanks so much for the advice I'll give it a shot! I ended up working out the signals issue I was having anyways but it seems like your suggestion is a cleaner solution!

[–] plixel@programming.dev 1 points 1 year ago* (last edited 1 year ago) (3 children)

I see okay so I understand that the intent is to decouple scenes from each other, however from the tutorials I've seen they typically say that to establish the connection you need to run get_node() from the script you are establishing the connection to. So for example if you have:

*Parent
    **Child 1
    **Child 2

You would emit from Child1, then establish the connection from Child2 using:

var script = get_node("root/Parent/Child1")
script.some_signal.connect(some_function)

Is that the correct interpretation? Or am I misunderstanding? Thanks in advance btw I appreciate all the help in understanding this!

[–] plixel@programming.dev 1 points 1 year ago (4 children)

Thank you! Okay so the tiles are part of a map, and I have a parent node called map with two separate children: hexgrid (where I'm instantiating the scenes) and spawn_objects( where I'm trying to gain access to the index and transform from hexgrid) my intent is to have hexgrid generate the grid and tiles and have spawn_objects instantiate an object within the tile at a certain position within it. Is this perhaps something I should combine into the same script? I typically like to have things modular and keep each component so a single specific task.

[–] plixel@programming.dev 1 points 1 year ago (7 children)

Is this the intended purpose for signals? Moving info up and down the tree? If so how are we supposed to send information from one script to another if one is not directly a child of the other? Do we send it to a shared parent node then send the info back down to the secondary script?

[–] plixel@programming.dev 1 points 1 year ago (1 children)

I'm emitting in the function that instantiates the tiles so it's definitely getting called. How do I verify that the connection is going through?

Also thanks for letting me know how to format it I was getting conflicting information regarding the syntax from various different tutorials and resources.

 

Hello all!

Like most people I find myself a recent refugee from the Unity fiasco. I've been trying to prototype a project in Godot and I've been running into an issue I would think would be pretty easy to find a solution to as it seems to be a pretty fundamental building block of any project in Godot. Perhaps I'm misunderstanding how to accomplish this in Godot, but essentially I'm instantiating a number of tiles to be used for a grid system in my game. I want these tiles to be able to emit their index and transform values and then have other scripts pick this information up as needed. From what I've read signals are the way to do this, however whenever I try to send a signal with or without parameters nothing seems to happen. I seem to be able to connect to the signal just fine but the method doesn't seem to be called.

Here's an example of me defining the signal and then emitting it:

signal index_transform()

index_transform.emit()

And here's how I am connecting and attempting to call the method in a secondary script:

func _ready() -> void:
	var hexGrid = get_node("/root/Main/Map/HexGrid")
	hexGrid.index_transform.connect(Callable(self, "_get_hex_index_transform"))

func _get_hex_index_transform():
	print("I'm Connected")

And when I'm passing parameters from what I understand I should only have to include the parameters like so:

signal index_transform(index, transform)

index_transform.emit(tile_index, tile_coordinates)
func _ready() -> void:
	var hexGrid = get_node("/root/Main/Map/HexGrid")
	hexGrid.index_transform.connect(Callable(self, "_get_hex_index_transform"))

func _get_hex_index_transform(index, transform):
	print("I'm Connected")
	print("INDEX: ", index," POS: ", transform)

However neither of these seem to work. What am I doing wrong?