Hello,
In my project, the main scene is made by code.
To make some tests, I would need to be able do open the scene made in the game so, I would like to know how I could save it by code (to be able to open it in the editor later).
How to save a scene ?
- EricRogerGarcia
- Posts: 10
- Joined: Mon Jul 17, 2023 11:38 pm
I tried this :
var sceneLevel1 = self.duplicate()
print(ResourceSaver.save(sceneLevel1,"res://sceneLevel1.tscn"))
It doesn't work and print : 31
var sceneLevel1 = self.duplicate()
print(ResourceSaver.save(sceneLevel1,"res://sceneLevel1.tscn"))
It doesn't work and print : 31
- stayathomedev
- Site Admin
- Posts: 82
- Joined: Mon Jul 17, 2023 2:42 pm
Could you describe this process a little more? What is being made in the scene?
My first thought was if you could run the scene scripts you need as @tool to test it that way, rather than running the game and trying to grab the scene.
Stay at home dad and dev
Youtube Channel - https://www.youtube.com/channel/UCDshKI ... CzApleuV8w
Twitter - https://twitter.com/StayAtHomeDev
Youtube Channel - https://www.youtube.com/channel/UCDshKI ... CzApleuV8w
Twitter - https://twitter.com/StayAtHomeDev
- EricRogerGarcia
- Posts: 10
- Joined: Mon Jul 17, 2023 11:38 pm
I'm making a pac man of sort
the levels are made with an external csv file
So the map nodes are made from existing scenes (walls, players, enemy and so on)
(details on my homepage supra)
I'd like to grab the scene made to make some tests in the editor
I'm sure it's possible.
It'd be useful for any rogue like game...
I found this : https://docs.godotengine.org/en/4.1/cla ... escription
but I didn't manage to understand it all yet !
the levels are made with an external csv file
So the map nodes are made from existing scenes (walls, players, enemy and so on)
(details on my homepage supra)
I'd like to grab the scene made to make some tests in the editor
I'm sure it's possible.
It'd be useful for any rogue like game...
I found this : https://docs.godotengine.org/en/4.1/cla ... escription
but I didn't manage to understand it all yet !
- svdragster
- Posts: 2
- Joined: Tue Jul 25, 2023 9:22 am
- Contact:
Hi, could you please explain what parts of it don't you understand?EricRogerGarcia wrote: ↑Mon Jul 24, 2023 3:46 pm
I found this : https://docs.godotengine.org/en/4.1/cla ... escription
but I didn't manage to understand it all yet !
The following code is untested. However, for example if you have a node called "TheLevel", it will pack it and save it to a level1.tscn file. Then you can open the level1.tscn file in the Godot editor.
Code: Select all
var node = get_node("/root/TheLevel")
var scene = PackedScene.new()
var result = scene.pack(node)
if result == OK:
ResourceSaver.save(scene, "res://level1.tscn")
- EricRogerGarcia
- Posts: 10
- Joined: Mon Jul 17, 2023 11:38 pm
Thanks a lot
It works... and it doesn't !
something strange happens : I can open the scene just recorded in the editor but... the nodes added by the program code are not in it !
I have the same sceneTree than in the original scene
I didn't expect than !!!!
well, I'm going to make my test scene the old fashioned way !!!
It works... and it doesn't !
something strange happens : I can open the scene just recorded in the editor but... the nodes added by the program code are not in it !
I have the same sceneTree than in the original scene
I didn't expect than !!!!
well, I'm going to make my test scene the old fashioned way !!!
- svdragster
- Posts: 2
- Joined: Tue Jul 25, 2023 9:22 am
- Contact:
Maybe you have to set the owner of each node when creating them.
It could help if you show us the code where you create the nodes.
Code: Select all
node.owner = your_root_node
- stayathomedev
- Site Admin
- Posts: 82
- Joined: Mon Jul 17, 2023 2:42 pm
Ditto on this...had to do this in my Prototype plugin to get the nodes to show up in the tree.svdragster wrote: ↑Tue Jul 25, 2023 10:10 am Maybe you have to set the owner of each node when creating them.
It could help if you show us the code where you create the nodes.Code: Select all
node.owner = your_root_node
Stay at home dad and dev
Youtube Channel - https://www.youtube.com/channel/UCDshKI ... CzApleuV8w
Twitter - https://twitter.com/StayAtHomeDev
Youtube Channel - https://www.youtube.com/channel/UCDshKI ... CzApleuV8w
Twitter - https://twitter.com/StayAtHomeDev
- EricRogerGarcia
- Posts: 10
- Joined: Mon Jul 17, 2023 11:38 pm
( I haven’t had much time these last few days)
The last version code :
The sceneTree of "level1" (the main scene)
level1-full.tscn is like level1.tscn !
I miss something !!!
The last version code :
Code: Select all
extends Node
func _ready():
var data = preload("res://data/csv/level1.csv")
var position : Vector2 = GlobalGame.POSITIONHOME
# data.records : array of data
var wallPackedScene = load("res://scenes/objets/wall.tscn")
var playerPackedScene = load("res://scenes/player/player.tscn")
var pointPackedScene = load("res://scenes/objets/point.tscn")
var groundPackedScene = load("res://scenes/objets/ground.tscn")
var pesticidePackedScene = load("res://scenes/pesticides/pesticide.tscn")
for x in data.records : # lines
for y in x: # columns
# placement of object to position: position
if y.contains("X") or y.contains("D") or y.contains("G"):
# wall placement
var wallScene = wallPackedScene.instantiate()
$NavigationRegion2D/walls.add_child(wallScene)
wallScene.owner = $NavigationRegion2D/walls
wallScene.position = position
else:
if y !="" and y!="B":
var groundScene = groundPackedScene.instantiate()
$NavigationRegion2D/ground.add_child(groundScene)
groundScene.owner = $NavigationRegion2D/ground
groundScene.position = position
if y.contains(".") :
var pointScene = pointPackedScene.instantiate()
$NavigationRegion2D/points.add_child(pointScene)
pointScene.owner = $NavigationRegion2D/points
pointScene.position = position
if y.contains("F") :
var pesticideScene = pesticidePackedScene.instantiate()
$NavigationRegion2D/pesticides.add_child(pesticideScene)
pesticideScene.owner = $NavigationRegion2D/pesticides
pesticideScene.position = position
if y.contains("P") : # player
var playerScene = playerPackedScene.instantiate()
$NavigationRegion2D/player.add_child(playerScene)
playerScene.owner = $NavigationRegion2D/player
playerScene.position = position
position += Vector2(GlobalGame.WIDTH,0)
position.x = GlobalGame.POSITIONHOME.x
position += Vector2(0,GlobalGame.WIDTH)
GlobalGame.myReady = true
var rootnode = self # level1 the root node
var scenetoSave = PackedScene.new()
var result = scenetoSave.pack(rootnode)
if result == OK:
ResourceSaver.save(scenetoSave, "res://level1-full.tscn")
level1-full.tscn is like level1.tscn !
I miss something !!!
Keto Rash Why Your Ketogenic Diet Makes You Itch And How to Fix It <a href=https://fastpriligy.top/>emla cream and priligy tablets</a>