this post was submitted on 08 Jan 2024
10 points (100.0% liked)

Godot

5925 readers
320 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

[email protected]

Credits

founded 1 year ago
MODERATORS
 

Is there something like a node ID which is specific to that node and will be the same no matter how often I execute the game? That would be super useful for saving and loading games.

you are viewing a single comment's thread
view the rest of the comments
[–] wispy_jsp 3 points 10 months ago (1 children)

What is your use case? That would help narrow down a good solution. Node path could likely work. You could also add a uuid or similar (there's an extension that provides a uuid implementation). Might be hacky, but you could tap into this and see if it suits your needs https://docs.godotengine.org/en/stable/classes/class_resourceuid.html

[–] [email protected] 1 points 10 months ago (1 children)

I want to use this unique value as a key for a dictionary, which will have some data in it (positions, rotations and some custom values)

[–] wispy_jsp 1 points 10 months ago (1 children)

Is there a reason you don't want to serialize that data with the nodes that use them? Are those values intended to change when the entity isn't loaded into a scene (like a background simulation or something)?

Seems like adding your own uuid or tapping into the ResourceUid class might be your best option

[–] [email protected] 1 points 10 months ago (1 children)

I don't really know what you mean by serializing the data. I am using a custom data type for saving all the relevant stuff, in case that is what you mean. That date type stores only the position and rotation and optionally some other stuff too.

[–] wispy_jsp 2 points 10 months ago

Yep! That would be an example of serialization. In computer science, taking an applications representation of a data type/object and formatting it as a series of bytes for storage or transmission over a network is referred to as serialization, with deserialization being the opposite process.

In your case, I would definitely try out the ResourceUID class as it seems like it may fit your needs. You can use it to create and id and store that with the other fields in your custom data type. It returns an int so it will be very easy to use as a key in a dict. Just be sure to call add_id after creating so ResourceUID won't generate duplicates: https://docs.godotengine.org/en/stable/classes/class_resourceuid.html#class-resourceuid-method-add-id