Files
blub-blub/scenes/ui/hud.tscn
T
ttipo 519e4980de 먼 바다 배경·하루의 빛·층 구조·감상 모드
네 가지 작업이 같은 함수들을 겹쳐 고쳐서 한 커밋으로 묶는다.
쪼개려면 hunk 단위로 갈라야 하는데 서로 얽혀 있어 오히려 위험하다.

먼 바다 배경 (backdrop.gd)
- 3/4 부감에서 화면 위쪽은 더 먼 곳이다. 거기까지 모래를 깔면
  바다가 아니라 사막처럼 보여서, 위쪽 띠를 물로 비웠다.
- 먼 물 그라디언트 → 능선 → 먼 실루엣 순으로 깊이를 만든다.
- Seabed가 뒷줄일수록 색을 물빛 쪽으로 당겨 공기원근을 준다.
- 빛줄기를 알파를 더하는 방향으로 바꿨다. 걷어내는 방향이면
  바닥만 밝아지고 물기둥은 텅 빈 채로 남는다.

하루의 빛 (day_cycle.gd)
- 실제 시각에 맞춰 새벽/아침/낮/저녁/밤. 이름은 구간으로 끊고
  색과 밝기는 계속 보간한다.
- 밤에는 물결과 빛줄기가 잦아들고, 스스로 빛나는 것은 어둠을
  되밀어 오히려 도드라진다.
- godot --path . -- --hour=21 로 특정 시각을 눈으로 확인할 수 있다.

한 화면에 한 층
- 가로 연속 스크롤을 버리고 층 전환으로 바꿨다. 위층(얕은 바다)에서
  아래층(열수구)으로 내려간다. 층 선택기·휠·↑↓ 키.
- 층은 내부적으로 여전히 옆으로 늘어서 있고 화면이 한 구간만 비춘다.
  갈아탈 때만 세로로 미끄러뜨려 깊이가 위아래로 읽히게 했다.
- 칸 크기를 가로에서 정하도록 뒤집고 ZONE_COLUMNS를 36으로 올렸다.
  층당 칸이 96 -> 216이라 정원과 해금 곡선은 다시 봐야 한다.
- 한 화면에 한 층만 보이므로 층 색은 이웃과 섞지 않는다.

감상 모드 (F11)
- 창을 화면 전체로. 세로로 남는 공간은 격자가 아니라 물기둥에 준다.
  격자를 키우면 타일만 커지고 보이는 열은 오히려 줄어든다.
- 창을 화면과 픽셀까지 똑같이 맞추면 Windows가 독점 전체화면으로
  승격시켜 size 지정이 먹지 않는다. usable_rect까지만 쓴다.

그 밖에
- 저장 window_state: scroll_x -> layer
- 알림이 정보 바와 겹치던 것을 바 아래로 옮겼다
- 난파선 선체 폴리곤이 제 몸을 가로질러 삼각분할이 실패하던 것 수정

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 12:41:36 +09:00

132 lines
3.0 KiB
Plaintext

[gd_scene load_steps=3 format=3]
[ext_resource type="Script" path="res://scenes/ui/hud.gd" id="1_hud"]
[ext_resource type="Script" path="res://scenes/ui/layer_bar.gd" id="2_layers"]
[node name="HUD" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("1_hud")
[node name="ControlBar" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = 0
offset_left = 12.0
offset_top = 7.0
offset_right = 12.0
offset_bottom = 10.0
mouse_filter = 2
[node name="HBox" type="HBoxContainer" parent="ControlBar"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 14
[node name="BubblesLabel" type="Label" parent="ControlBar/HBox"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
text = "0"
vertical_alignment = 1
[node name="Sep1" type="VSeparator" parent="ControlBar/HBox"]
layout_mode = 2
mouse_filter = 2
[node name="BpsLabel" type="Label" parent="ControlBar/HBox"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
text = "초당 0"
vertical_alignment = 1
[node name="BeautyLabel" type="Label" parent="ControlBar/HBox"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
text = "아름다움 0"
vertical_alignment = 1
[node name="Sep2" type="VSeparator" parent="ControlBar/HBox"]
layout_mode = 2
mouse_filter = 2
[node name="ZoneLabel" type="Label" parent="ControlBar/HBox"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
text = "구역 1/5"
vertical_alignment = 1
[node name="Sep3" type="VSeparator" parent="ControlBar/HBox"]
layout_mode = 2
mouse_filter = 2
[node name="ShopButton" type="Button" parent="ControlBar/HBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(78, 32)
layout_mode = 2
size_flags_vertical = 4
text = "상점"
[node name="MenuButton" type="Button" parent="ControlBar/HBox"]
unique_name_in_owner = true
custom_minimum_size = Vector2(40, 32)
layout_mode = 2
size_flags_vertical = 4
text = "···"
[node name="LayerBar" type="VBoxContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 12.0
offset_top = -146.0
offset_right = 86.0
offset_bottom = -10.0
grow_vertical = 0
mouse_filter = 2
script = ExtResource("2_layers")
[node name="Trash" type="PanelContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -110.0
offset_top = -50.0
offset_right = 110.0
offset_bottom = -12.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
[node name="TrashLabel" type="Label" parent="Trash"]
unique_name_in_owner = true
layout_mode = 2
mouse_filter = 2
text = "여기에 놓아 치우기 (절반 돌려받음)"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Toast" type="Label" parent="."]
unique_name_in_owner = true
layout_mode = 0
offset_left = 100.0
offset_top = 70.0
offset_right = 700.0
offset_bottom = 108.0
mouse_filter = 2
vertical_alignment = 1
autowrap_mode = 3