2023-11-19に更新

Godot で、破損した .tscn ファイルを自力で復元しようぜ(^~^)?

親記事から来た

📖 Godot って何だぜ(^~^)?

はじめに

ramen-tabero-futsu2.png
「 リソース・フォルダーの名称変更とか、
ノード名の変更とか、
子シーンの生成とか、
やりまくってたら .tscn ファイルのIdの整合性が取れなくなったのか、 .tscn ファイルを読み込まなくなったぜ」

ohkina-hiyoko-futsu2.png
「 地獄ね」

202311__shogi__19-1116--font-crushed.png

ramen-tabero-futsu2.png
「 👆 設定をすべて復元しないと、フォント情報が消えていたりするぜ」

kifuwarabe-futsu.png
「 ファイルの破損とか、Godot のユーザーサポートの、サポート外だろ」

ohkina-hiyoko-futsu2.png
「 ゲームではなく、 Godot を作るレベルのスキルを プログラミング・スキルと呼ぶのよ。
あんたのお父んは プログラミング・スキルを持ったプログラマーで、
破損したファイルの復元とか、 何も仕様がないところからの解析とか するのが通常業務よ」

kifuwarabe-futsu.png
「 なりたくない職業だな」

gd_scene

📄 *.tscn:

[gd_scene load_steps=78 format=3 uid="uid://ccxa7p87p2u60"]

ramen-tabero-futsu2.png
「 👆 .tscn ファイルの先頭は gd_scene ブラケットで始まるが、このファイルの書式もよく分からない」

ext_resource

[ext_resource type="Script" path="res://🍋scripts/🪑grayscale_🍉kifuwarabe_rpg/director.gd" id="1_wmnp6"]
[ext_resource type="Texture2D" uid="uid://bkfsr571tdwqf" path="res://🍋images/🪑grayscale/1280x720/grid.png" id="2_ivwoj"]
[ext_resource type="AudioStream" uid="uid://wtqqhswcs7ni" path="res://🍋audio_bgm/🪑sakuramaru/きふわらべファイター2.ogg" id="8_8nkdr"]
[ext_resource type="LabelSettings" uid="uid://dc5ae2mnxhltk" path="res://🍋label_settings/🪑grayscale/game_title.tres" id="43_phx2h"]
[ext_resource type="PackedScene" uid="uid://daqtppg5rtuat" path="res://downloads_from_🍉kifuwarabe_visual_novel/📂programmer_🎬Instructions_🍉kifuwarabe_visual_novel.tscn" id="58_sadl4"]

ramen-tabero-futsu2.png
「 👆 以下、 id 順で ext_resource ブラケットが並ぶぜ。
Id順って 読むとき 何も嬉しくない……」

kifuwarabe-futsu.png
「 お父んが 🍋 の文字を付けたやつ、だいたい ext_resource と一致するな」

ohkina-hiyoko-futsu2.png
「 .tscn に並んでいる ext_resourec ブラケットと、
ファイル・エクスプローラーに並んでいる 素材ファイルを 1つ1つ 在るかチェックすればいいのね。
棚卸みたいよね」

kifuwarabe-futsu.png
「 それぐらい プログラムでやればいいのでは……」

sub_resource

[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_glhd8"]


[sub_resource type="LabelSettings" id="LabelSettings_f3kmi"]
line_spacing = 1.0
font = ExtResource("47_nlh77")
font_size = 32
outline_size = 10
outline_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_size = 5
shadow_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_offset = Vector2(3, 3)


[sub_resource type="LabelSettings" id="LabelSettings_ts82g"]
line_spacing = 1.0
font = ExtResource("47_nlh77")
font_size = 24
outline_size = 10
outline_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_size = 5
shadow_color = Color(0.12549, 0.12549, 0.12549, 1)
shadow_offset = Vector2(3, 3)

ramen-tabero-futsu2.png
「 👆 以下、 .tscn ファイルに書けそうなテキストデータは sub_resource として並ぶぜ」

ohkina-hiyoko-futsu2.png
「 ラベルのフォント設定とかねえ」

ramen-tabero-futsu2.png
「 ExtResource("47_nlh77") のように、Idが紐づけされている。
これが 1つでも整合性が取れないと *.tscn ファイルは読めなくなる」

kifuwarabe-futsu.png
「 つらい」

202311__shogi__19-1101--label-settings.png

ramen-tabero-futsu2.png
「 👆 例えば この画面のように フォントに色付けたり、ドロップシャドウを濃くしたり、
ちょっと傾けたり、1度しか使わないような設定が sub_resource だぜ」

ramen-tabero-futsu2.png
「 .tscn ファイルが破損すると この角度をちょっとずらしたやつの設定とか
手動で Idの紐づけを復元していくぜ」

ohkina-hiyoko-futsu2.png
「 地獄をバリエーション豊かにしないでほしいわね」

node

[node name="Director" type="Node2D"]
material = SubResource("CanvasItemMaterial_glhd8")
script = ExtResource("1_wmnp6")


[node name="Grid" type="Sprite2D" parent="."]
visible = false
z_index = 5
position = Vector2(640, 360)
texture = ExtResource("2_ivwoj")


[node name="📂BackgroundArtist" type="Node2D" parent="."]


[node name="🗻4Fイベントルーム" type="Sprite2D" parent="📂BackgroundArtist"]
visible = false
position = Vector2(640, 360)
texture = ExtResource("25_aycb2")


[node name="🗻崎川駅前" type="Sprite2D" parent="📂BackgroundArtist"]
visible = false
position = Vector2(640, 360)
texture = ExtResource("26_4dvmr")

ramen-tabero-futsu2.png
「 👆 あとは ノードが並んでいるツリービューになっているぜ」

.

ツイッターでシェア
みんなに共有、忘れないようにメモ

むずでょ

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント