Files
Leonid PershinandClaude Opus 4.8 04cf5f90b0 ProjectRR — нативный прототип на ассетах ProjectR
- Все 189 скелетов Spine сконвертированы в нативные Godot Skeleton2D (.tscn), без Spine в рантайме
- Меню + сцены: подземелье (карта комнат), просмотр спрайтов, нативные анимации
- Кастомизация цвета (кожа/волосы/глаза) через шейдер
- Вытащенные текстуры/UI/шрифты + нарезка спрайтов из атласа
- Датасет комнат для LoRA, офлайн-инструменты конвертации в tools/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-03 16:29:21 +03:00

210 lines
13 KiB
Plaintext

[gd_scene format=3]
[ext_resource type="Texture2D" path="res://characters/knight/spine/knight_dead.png" id="1_tj10f"]
[sub_resource type="Animation" id="Animation_gjpht"]
length = 0.001
loop_mode = 1
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5a3pa"]
_data = {
&"animation": SubResource("Animation_gjpht")
}
[node name="Native" type="Node2D" unique_id=1346044930]
[node name="SpineRoot" type="Node2D" parent="." unique_id=1271630881]
position = Vector2(601.5123, 460.91882)
scale = Vector2(1.6068099, -1.6068099)
[node name="Skeleton2D" type="Skeleton2D" parent="SpineRoot" unique_id=1932861732]
[node name="root" type="Bone2D" parent="SpineRoot/Skeleton2D" unique_id=1465240799]
rest = Transform2D(1, 0, 0, 1, 0, 0)
auto_calculate_length_and_angle = false
length = 0.0
bone_angle = 0.0
[node name="shadow" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=258733498]
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(221.8675, 2.34265, 243.02045, -8.38556, -34.51498, -31.19513, -187.9278, -5.40692, -180.79486, 0.06696, -142.62561, 21.97339, 69.58252, 22.11475)
uv = PackedVector2Array(411.8675, 471.6574, 433.02036, 482.38562, 155.485, 505.19516, 2.0721846, 479.40692, 9.205107, 473.93314, 47.37438, 452.02664, 259.58252, 451.8853)
polygons = [PackedInt32Array(2, 5, 6), PackedInt32Array(2, 6, 0), PackedInt32Array(2, 0, 1), PackedInt32Array(4, 5, 2), PackedInt32Array(3, 4, 2)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1)]
[node name="C_headB_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2097568959]
z_index = 1
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-75.50769, 21.2746, -126.2475, -10.43457, -174.19113, 26.07526, -158.76428, 86.32086, -94.80038, 85.83978)
uv = PackedVector2Array(236.4923, 254.72542, 185.7525, 286.4346, 137.80884, 249.92479, 153.23569, 189.6792, 217.19962, 190.1602)
polygons = [PackedInt32Array(4, 2, 3), PackedInt32Array(1, 4, 0), PackedInt32Array(1, 2, 4)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_hairC_hairback$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1321314919]
z_index = 2
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-95.03354, 14.84558, -111.41556, -8.06512, -159.48532, -24.56665, -195.11478, -14.41864, -159.74805, 54.336, -140.08594, 53.90454)
uv = PackedVector2Array(339.9665, 223.15437, 323.58444, 246.06511, 275.5147, 262.5666, 239.88525, 252.41858, 275.25198, 183.66394, 294.91406, 184.09541)
polygons = [PackedInt32Array(1, 5, 0), PackedInt32Array(2, 4, 5), PackedInt32Array(2, 5, 1), PackedInt32Array(3, 4, 2)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1)]
[node name="C_hairB_hairfront$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1895989307]
z_index = 3
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-78.95142, 75.83557, -78.88223, 56.27838, -110.25989, 55.72223, -135.09247, 72.38403, -135.11075, 91.92334)
uv = PackedVector2Array(490.0486, 190.16432, 490.1178, 209.72151, 458.74014, 210.27768, 433.90756, 193.6159, 433.88928, 174.07658)
polygons = [PackedInt32Array(2, 3, 4), PackedInt32Array(0, 2, 4), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_headA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1055079619]
z_index = 4
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-65.46362, 48.59113, -62.405914, 46.09265, -112.87033, 2.77954, -148.83444, 28.7832, -139.3905, 72.77551, -114.73804, 84.29504)
uv = PackedVector2Array(310.53638, 134.40889, 313.59412, 136.90735, 263.12964, 180.22047, 227.16556, 154.21678, 236.60951, 110.22444, 261.26196, 98.70497)
polygons = [PackedInt32Array(2, 5, 0), PackedInt32Array(3, 4, 5), PackedInt32Array(2, 3, 5), PackedInt32Array(2, 0, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1)]
[node name="C_eyeB_#01" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1075928262]
z_index = 5
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-107.98969, 24.91412, -120.08234, 36.99054, -100.39594, 64.24426, -84.77246, 63.88086)
uv = PackedVector2Array(459.01028, 171.08585, 446.91763, 159.00949, 466.60403, 131.75577, 482.2275, 132.11911)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(0, 2, 3)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_faceB" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2124518219]
z_index = 6
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-83.77853, 46.7511, -84.08521, 30.56366, -125.78824, 31.9447, -118.12018, 57.31726, -103.10242, 73.31702)
uv = PackedVector2Array(443.22147, 146.24895, 442.9148, 162.43637, 401.2117, 161.05533, 408.8798, 135.68274, 423.89755, 119.68298)
polygons = [PackedInt32Array(3, 4, 0), PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_hairA_hairfront$0_#02" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1186804827]
z_index = 7
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-91.00266, 60.8819, -97.74731, 15.96661, -108.82056, -0.77429, -161.20331, 33.44635, -145.28217, 86.0791, -115.87961, 86.0896)
uv = PackedVector2Array(494.99738, 379.1181, 488.25272, 424.03333, 477.17947, 440.7743, 424.79675, 406.55368, 440.71786, 353.92087, 470.12042, 353.9104)
polygons = [PackedInt32Array(0, 4, 5), PackedInt32Array(0, 1, 4), PackedInt32Array(1, 3, 4), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1)]
[node name="C_eyeA_#01" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1353237694]
z_index = 8
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-84.62589, 63.8587, -104.95856, 30.97217, -115.10611, 30.92041, -115.04276, 42.9928, -100.47745, 64.2561)
uv = PackedVector2Array(489.37335, 95.1413, 469.04068, 128.02792, 458.89313, 128.07964, 458.95648, 116.00727, 473.52182, 94.74397)
polygons = [PackedInt32Array(1, 3, 4), PackedInt32Array(1, 4, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_faceA" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1588806254]
z_index = 9
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-83.93826, 46.94586, -83.96967, 30.62329, -125.84158, 31.95038, -117.96158, 57.7691, -103.05426, 73.22797)
uv = PackedVector2Array(309.0617, 79.0541, 309.0303, 95.37669, 267.1584, 94.049614, 275.0384, 68.23088, 289.9457, 52.772034)
polygons = [PackedInt32Array(3, 4, 0), PackedInt32Array(2, 3, 0), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_headcloth_#06" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=427536662]
z_index = 10
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-93.49911, 49.96985, -118.9028, 49.93158, -175.03293, -3.97858, -135.64328, 94.35327, -100.11584, 87.05524)
uv = PackedVector2Array(398.50092, 109.030045, 373.0972, 109.068375, 316.96707, 162.97855, 356.35672, 64.646675, 391.88416, 71.94474)
polygons = [PackedInt32Array(1, 3, 4), PackedInt32Array(1, 4, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_titsB_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1498994887]
z_index = 11
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(0.95232654, 79.4472, -0.43964183, 42.00079, -71.96143, 32.13007, -66.92175, 64.70514, -35.082245, 95.63354)
uv = PackedVector2Array(505.95175, 303.5527, 504.5598, 340.9991, 433.03806, 350.86987, 438.07773, 318.29477, 469.91727, 287.36636)
polygons = [PackedInt32Array(1, 4, 0), PackedInt32Array(3, 4, 1), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_body_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=2141629326]
z_index = 12
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(143.22595, 131.31537, 84.72485, 19.84949, 33.97443, -9.20111, -111.58215, 11.59912, -30.332495, 80.45721, 120.175285, 149.39227)
uv = PackedVector2Array(257.22598, 307.68457, 198.72482, 419.15048, 147.97441, 448.20105, 2.4178212, 427.40085, 83.667465, 358.5427, 234.17523, 289.6077)
polygons = [PackedInt32Array(1, 4, 5), PackedInt32Array(1, 5, 0), PackedInt32Array(2, 4, 1), PackedInt32Array(3, 4, 2)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1)]
[node name="C_legclothB1_#06" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1827506784]
z_index = 13
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(149.21417, 143.47833, 162.31104, 84.93817, 179.73688, 47.10748, 229.0503, -3.08752, 171.26025, -7.98419, 97.39354, 108.56464, 115.43139, 164.69128)
uv = PackedVector2Array(54.212654, 135.52165, 67.30948, 194.06186, 84.73532, 231.89252, 134.04874, 282.08755, 76.25873, 286.98422, 2.3920536, 170.4354, 20.429893, 114.30873)
polygons = [PackedInt32Array(5, 6, 0), PackedInt32Array(5, 0, 1), PackedInt32Array(2, 5, 1), PackedInt32Array(4, 2, 3), PackedInt32Array(4, 5, 2)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1, 1)]
[node name="C_legclothA1_#06" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=869576090]
z_index = 14
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(29.246826, 105.78223, 151.02936, -13.62592, 119.46942, -21.04492, 24.606869, 43.61896, -1.2824728, 65.84515, -9.804695, 111.18225)
uv = PackedVector2Array(299.2469, 321.21768, 421.02936, 440.62585, 389.46945, 448.04483, 294.60684, 383.38098, 268.71756, 361.1548, 260.1953, 315.8177)
polygons = [PackedInt32Array(4, 5, 0), PackedInt32Array(3, 4, 0), PackedInt32Array(0, 2, 3), PackedInt32Array(1, 2, 0)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1, 1)]
[node name="C_armclothA3_#05" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1535471867]
z_index = 15
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-61.05029, 2.63574, -87.51907, -25.56323, -126.01102, 6.15906, -83.33942, 36.3316)
uv = PackedVector2Array(501.94968, 477.36426, 475.4809, 505.56323, 436.98895, 473.8409, 479.66055, 443.6684)
polygons = [PackedInt32Array(1, 2, 3), PackedInt32Array(0, 1, 3)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armA1_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=470414188]
z_index = 16
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(9.527892, -34.37866, -21.00226, -17.76056, -21.26141, 3.84967, 32.33527, 0.901)
uv = PackedVector2Array(432.52792, 116.37874, 401.99774, 99.76062, 401.73856, 78.15039, 455.3353, 81.0991)
polygons = [PackedInt32Array(0, 1, 2), PackedInt32Array(3, 0, 2)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1)]
[node name="C_armclothA1" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=357231834]
z_index = 17
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(16.88666, 6.64825, 24.93054, -19.36884, -81.06873, -23.87592, -112.25037, 6.89307, -79.13962, 23.60333)
uv = PackedVector2Array(389.88663, 282.35178, 397.9305, 308.36884, 291.9313, 312.87595, 260.74963, 282.107, 293.86038, 265.39673)
polygons = [PackedInt32Array(2, 3, 4), PackedInt32Array(2, 4, 0), PackedInt32Array(2, 0, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_titsA_#00" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=773887284]
z_index = 18
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-14.405942, 48.20251, -34.16519, 8.54224, -84.06168, 16.98981, -83.98929, 59.8418, -44.683235, 79.06409)
uv = PackedVector2Array(503.59467, 244.7975, 483.83542, 284.4578, 433.9389, 276.01016, 434.0113, 233.15825, 473.31735, 213.93594)
polygons = [PackedInt32Array(0, 3, 4), PackedInt32Array(1, 3, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="C_armclothA2_#06" type="Polygon2D" parent="SpineRoot/Skeleton2D" unique_id=1651071288]
z_index = 19
texture = ExtResource("1_tj10f")
skeleton = NodePath("..")
polygon = PackedVector2Array(-102.76117, -24.21533, -124.12299, -39.07739, -175.38065, -39.01874, -159.23285, 9.45648, -114.17661, 18.08313)
uv = PackedVector2Array(264.23886, 80.21531, 242.87701, 95.07735, 191.61935, 95.01873, 207.76718, 46.543488, 252.82338, 37.916836)
polygons = [PackedInt32Array(1, 3, 4), PackedInt32Array(1, 4, 0), PackedInt32Array(2, 3, 1)]
bones = ["root", PackedFloat32Array(1, 1, 1, 1, 1)]
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1740841375]
root_node = NodePath("../SpineRoot/Skeleton2D")
libraries/ = SubResource("AnimationLibrary_5a3pa")