From 563e9a971bf5438decda7d5431d6aa6ecc1d6ca3 Mon Sep 17 00:00:00 2001 From: XTRA Date: Thu, 10 Oct 2024 22:04:47 +0300 Subject: [PATCH] Implement shoutout scene and terminal --- assets/fonts/Linebeam.ttf | Bin 0 -> 42624 bytes assets/fonts/Linebeam.ttf.import | 34 ++++++++ {assets => entities}/ball.tscn | 5 +- entities/balls.tscn | 126 ++++++++++++++++++++++++++--- entities/credits.tscn | 24 +++++- entities/kaleido_scope.tscn | 1 - entities/manager.tscn | 8 +- entities/test.tscn | 132 +++++++++++++++++++------------ project.godot | 4 +- scripts/balls.gd | 49 +++++++++--- scripts/credits.gd | 5 ++ scripts/manager.gd | 4 +- 12 files changed, 303 insertions(+), 89 deletions(-) create mode 100644 assets/fonts/Linebeam.ttf create mode 100644 assets/fonts/Linebeam.ttf.import rename {assets => entities}/ball.tscn (89%) diff --git a/assets/fonts/Linebeam.ttf b/assets/fonts/Linebeam.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a21de644dc90d233d92374312769a0065d805616 GIT binary patch literal 42624 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 Bkp2Jw literal 0 HcmV?d00001 diff --git a/assets/fonts/Linebeam.ttf.import b/assets/fonts/Linebeam.ttf.import new file mode 100644 index 0000000..b37be20 --- /dev/null +++ b/assets/fonts/Linebeam.ttf.import @@ -0,0 +1,34 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b55n3f2bh16v5" +path="res://.godot/imported/Linebeam.ttf-b1b753eeebb2522149bb72c0e253390f.fontdata" + +[deps] + +source_file="res://assets/fonts/Linebeam.ttf" +dest_files=["res://.godot/imported/Linebeam.ttf-b1b753eeebb2522149bb72c0e253390f.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=true +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/assets/ball.tscn b/entities/ball.tscn similarity index 89% rename from assets/ball.tscn rename to entities/ball.tscn index 67c6b38..fc0c2e7 100644 --- a/assets/ball.tscn +++ b/entities/ball.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=5 format=3 uid="uid://cru0ihb4eh5k3"] -[ext_resource type="Shader" path="res://assets/shaders/ball.gdshader" id="1_361vo"] +[ext_resource type="Shader" path="res://assets/shaders/ball.gdshader" id="1_e7m5n"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_1mwc0"] render_priority = 0 -shader = ExtResource("1_361vo") +shader = ExtResource("1_e7m5n") [sub_resource type="SphereMesh" id="SphereMesh_3aj7c"] material = SubResource("ShaderMaterial_1mwc0") @@ -15,6 +15,7 @@ material = SubResource("ShaderMaterial_1mwc0") [node name="RigidBody3D" type="RigidBody3D" parent="."] gravity_scale = 0.279 +linear_velocity = Vector3(0, -2, 0) [node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D"] mesh = SubResource("SphereMesh_3aj7c") diff --git a/entities/balls.tscn b/entities/balls.tscn index 38ba18f..ebf587e 100644 --- a/entities/balls.tscn +++ b/entities/balls.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://cwtpmstacd7h6"] +[gd_scene load_steps=11 format=3 uid="uid://cwtpmstacd7h6"] [ext_resource type="Script" path="res://scripts/balls.gd" id="1_phwel"] +[ext_resource type="PackedScene" uid="uid://br7cnj1spc4rk" path="res://assets/auto_scale.tscn" id="2_cvkem"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_b4b3o"] friction = 0.5 @@ -13,29 +14,132 @@ data = PackedVector3Array(0, 0.7412, -0.9659, 0, 0.5, -0.866, 0.25, 0.7412, -0.9 background_mode = 1 background_energy_multiplier = 0.0 -[node name="Balls" type="Node3D"] +[sub_resource type="LabelSettings" id="LabelSettings_q7ejd"] +font_size = 256 + +[sub_resource type="ViewportTexture" id="ViewportTexture_lydef"] +viewport_path = NodePath("BallsViewport") + +[sub_resource type="Shader" id="Shader_cytw2"] +code = "shader_type canvas_item; + +uniform bool enabled; +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; + + +void vertex() { + // Called for every vertex the material is visible on. +} + +void fragment() { + vec4 col = texture(TEXTURE,UV).rgba; + if (enabled) { + if (col.a != 0.0) { + col.a = 0.0; + } + else { + col.a = 1.0; + } + } + else { + col.a = 0.0; + } + COLOR = col; +} + +//void light() { + // Called for every pixel for every light affecting the CanvasItem. + // Uncomment to replace the default light processing function with this one. +//} +" + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2rcjr"] +shader = SubResource("Shader_cytw2") +shader_parameter/enabled = true + +[sub_resource type="ViewportTexture" id="ViewportTexture_kd4bv"] +viewport_path = NodePath("TextViewPort") + +[node name="Balls" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 script = ExtResource("1_phwel") -[node name="StaticBody3D" type="StaticBody3D" parent="."] +[node name="BallsViewport" type="SubViewport" parent="."] +size = Vector2i(1920, 1080) + +[node name="Balls" type="Node3D" parent="BallsViewport"] + +[node name="StaticBody3D" type="StaticBody3D" parent="BallsViewport/Balls"] physics_material_override = SubResource("PhysicsMaterial_b4b3o") -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="BallsViewport/Balls/StaticBody3D"] transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0) shape = SubResource("ConcavePolygonShape3D_vdks7") disabled = true -[node name="Timer" type="Timer" parent="."] -wait_time = 0.049 +[node name="Timer" type="Timer" parent="BallsViewport/Balls"] +wait_time = 0.003 autostart = true -[node name="Camera3D" type="Camera3D" parent="."] +[node name="Camera3D" type="Camera3D" parent="BallsViewport/Balls"] transform = Transform3D(1, 0, 0, 0, 0.964732, 0.263233, 0, -0.263233, 0.964732, 0, 1.07001, 5.63238) +current = true size = 2.802 +far = 100.0 -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -0.888369, 0.45913, 0, -0.45913, -0.888369, 0, -3.62865, 0) +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="BallsViewport/Balls"] +transform = Transform3D(1, 0, 0, 0, -0.106282, 0.994336, 0, -0.994336, -0.106282, 0, 0, 0) -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="BallsViewport/Balls"] environment = SubResource("Environment_a5sfg") -[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] +[node name="AutoScale" parent="BallsViewport" instance=ExtResource("2_cvkem")] + +[node name="TextViewPort" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(1920, 1080) + +[node name="Label" type="Label" parent="TextViewPort"] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -907.5 +offset_top = -174.5 +offset_right = 907.5 +offset_bottom = 174.5 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +text = "WE ❤️" +label_settings = SubResource("LabelSettings_q7ejd") +horizontal_alignment = 1 + +[node name="AutoScale" parent="TextViewPort" instance=ExtResource("2_cvkem")] + +[node name="Out" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_lydef") + +[node name="TextMask" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_2rcjr") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_kd4bv") + +[connection signal="timeout" from="BallsViewport/Balls/Timer" to="." method="_on_timer_timeout"] diff --git a/entities/credits.tscn b/entities/credits.tscn index fe3b134..51b90ce 100644 --- a/entities/credits.tscn +++ b/entities/credits.tscn @@ -344,6 +344,20 @@ tracks/3/keys = { "update": 0, "values": [Color(0, 0, 0, 0), Color(0, 0, 0, 0), Color(0, 0, 0, 1)] } +tracks/4/type = "method" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath(".") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(4), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"fade_audio" +}] +} [sub_resource type="Animation" id="Animation_5f8px"] resource_name = "xtra_wipe" @@ -608,10 +622,10 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 1387.0 -offset_top = -531.0 -offset_right = 1387.0 -offset_bottom = -531.0 +offset_left = -341.0 +offset_top = -1424.0 +offset_right = -341.0 +offset_bottom = -1424.0 grow_horizontal = 2 grow_vertical = 2 rotation = 0.477038 @@ -677,6 +691,8 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_top = 788.0 +offset_bottom = 788.0 grow_horizontal = 2 grow_vertical = 2 color = Color(0, 0, 0, 1) diff --git a/entities/kaleido_scope.tscn b/entities/kaleido_scope.tscn index 6024c8d..3847cf5 100644 --- a/entities/kaleido_scope.tscn +++ b/entities/kaleido_scope.tscn @@ -288,7 +288,6 @@ stretch_mode = 6 [node name="AutoScale" parent="KaleidoViewport" instance=ExtResource("2_7v8f2")] [node name="TextMask" type="TextureRect" parent="."] -visible = false material = SubResource("ShaderMaterial_ahqjw") layout_mode = 1 anchors_preset = 15 diff --git a/entities/manager.tscn b/entities/manager.tscn index df7b1bf..5d53498 100644 --- a/entities/manager.tscn +++ b/entities/manager.tscn @@ -4,7 +4,7 @@ [sub_resource type="Animation" id="Animation_qy15n"] resource_name = "timeline" -length = 45.0 +length = 70.0 tracks/0/type = "method" tracks/0/imported = false tracks/0/enabled = true @@ -12,7 +12,7 @@ tracks/0/path = NodePath(".") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 10.0333, 45, 60.0333), +"times": PackedFloat32Array(0, 20, 44.9667, 57.1), "transitions": PackedFloat32Array(1, 1, 1, 1), "values": [{ "args": [0], @@ -21,10 +21,10 @@ tracks/0/keys = { "args": [1], "method": &"set_scene" }, { -"args": [4], +"args": [2], "method": &"set_scene" }, { -"args": [2], +"args": [3], "method": &"set_scene" }] } diff --git a/entities/test.tscn b/entities/test.tscn index 507defb..28441f4 100644 --- a/entities/test.tscn +++ b/entities/test.tscn @@ -1,64 +1,94 @@ [gd_scene load_steps=8 format=3 uid="uid://dfvl3luba7j4"] [ext_resource type="Texture2D" uid="uid://5hxbsfm0aa0" path="res://icon.svg" id="1_3phrh"] +[ext_resource type="FontFile" uid="uid://b55n3f2bh16v5" path="res://assets/fonts/Linebeam.ttf" id="2_04cpk"] [sub_resource type="GDScript" id="GDScript_axp0a"] resource_name = "Test" script/source = "extends Control +var lines: Array[String] = [ +\"[code]piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0[/code]\\n\", +\"[code]piix4_smbus 0000:00:14.0: Using register 0x02 for SMBus port selection[/code]\\n\", +\"[code]i2c i2c-9: Successfully instantiated SPD at 0x50[/code]\\n\", +\"[code]i2c i2c-9: Successfully instantiated SPD at 0x51[/code]\\n\", +\"[code]i2c i2c-9: Successfully instantiated SPD at 0x52[/code]\\n\", +\"[code]cryptd: max_cpu_qlen set to 1000[/code]\\n\", +\"[code]i2c i2c-9: Successfully instantiated SPD at 0x53[/code]\\n\", +\"[code]piix4_smbus 0000:00:14.0: Auxiliary SMBus Host Controller at 0xb20[/code]\\n\", +\"[code]sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver[/code]\\n\", +\"[code]sp5100-tco sp5100-tco: Using 0xfeb00000 for watchdog MMIO address[/code]\\n\", +\"[code]LOADING DEMO[pulse freq=1.0 color=#ffffff40 ease=-2.0]...[/pulse][/code]\\n\"] func _ready() -> void: - $ScramblingText.infinite = true - $ScramblingText.start() - $AnimationPlayer.play(\"blink\"); - - -func _on_timer_timeout() -> void: - $ScramblingText.infinite = false; + $AnimationPlayer.play(\"terminal\"); + +func next_line() -> void: + $Terminal.append_text(lines[0]); + lines.remove_at(0); " -[sub_resource type="LabelSettings" id="LabelSettings_w3bnc"] -font_size = 48 - -[sub_resource type="LabelSettings" id="LabelSettings_78g6a"] -font_size = 48 - [sub_resource type="Animation" id="Animation_dirfa"] length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Label:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} [sub_resource type="Animation" id="Animation_t3ulj"] resource_name = "blink" length = 2.0 loop_mode = 1 -tracks/0/type = "value" + +[sub_resource type="Animation" id="Animation_6cb10"] +resource_name = "terminal" +length = 5.0 +tracks/0/type = "method" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Label:visible") +tracks/0/path = NodePath(".") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(1, 1), -"update": 1, -"values": [false, true] +"times": PackedFloat32Array(0.533333, 1.16667, 2, 2.06667, 2.1, 2.33333, 2.46667, 2.53333, 2.63333, 2.73333, 5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"values": [{ +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}, { +"args": [], +"method": &"next_line" +}] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_jgx00"] _data = { "RESET": SubResource("Animation_dirfa"), -"blink": SubResource("Animation_t3ulj") +"blink": SubResource("Animation_t3ulj"), +"terminal": SubResource("Animation_6cb10") } [node name="Test" type="Control"] @@ -80,35 +110,33 @@ grow_vertical = 2 color = Color(0, 0, 0, 1) [node name="Icon" type="Sprite2D" parent="."] -position = Vector2(534, 309) +position = Vector2(1762, 150) texture = ExtResource("1_3phrh") -[node name="ScramblingText" type="ScramblingText" parent="."] -speed = 5.0 -duration = 0.05 -infinite = false -layout_mode = 0 -offset_right = 40.0 -offset_bottom = 23.0 -text = "LOADING DEMO..." -label_settings = SubResource("LabelSettings_w3bnc") - [node name="Timer" type="Timer" parent="."] wait_time = 1.5 one_shot = true autostart = true -[node name="Label" type="Label" parent="."] -layout_mode = 0 -offset_top = 93.0 -offset_right = 40.0 -offset_bottom = 116.0 -text = "PLEASE WAIT" -label_settings = SubResource("LabelSettings_78g6a") - [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { "": SubResource("AnimationLibrary_jgx00") } -[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"] +[node name="Terminal" type="RichTextLabel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 25.0 +offset_top = 25.0 +offset_right = -28.0 +offset_bottom = -20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_fonts/mono_font = ExtResource("2_04cpk") +theme_override_font_sizes/mono_font_size = 35 +theme_override_font_sizes/normal_font_size = 24 +bbcode_enabled = true +text = "[code]HELLO[/code] +" diff --git a/project.godot b/project.godot index f5c05e4..80905cd 100644 --- a/project.godot +++ b/project.godot @@ -26,7 +26,7 @@ gdscript/warnings/untyped_declaration=2 [display] -window/size/viewport_width=2560 -window/size/viewport_height=1440 +window/size/viewport_width=1920 +window/size/viewport_height=1080 window/stretch/mode="canvas_items" window/stretch/aspect="ignore" diff --git a/scripts/balls.gd b/scripts/balls.gd index f2a9312..fa20efa 100644 --- a/scripts/balls.gd +++ b/scripts/balls.gd @@ -1,17 +1,46 @@ -extends Node3D +extends Control -@onready var pallo: PackedScene = load("res://assets/ball.tscn") +@onready var groups: Array[String] = ["ASD", "Jumalauta", "Marmot", "Future Crew", "Gray Marchers", "Byterapers", "Pyrotech", "Gorbat Soft"] +var group_iter: int = 0; + +@onready var pallo: PackedScene = load("res://entities/ball.tscn") # Called when the node enters the scene tree for the first time. +@onready var grouptimer: Timer = Timer.new(); +func _ready() -> void: + ($TextViewPort/Label.label_settings as LabelSettings).font_size = 1; + + grouptimer.autostart = false; + grouptimer.wait_time = 1.5; + grouptimer.connect("timeout", random_group); + add_child(grouptimer); + +func _process(delta: float) -> void: + if ($TextViewPort/Label.label_settings as LabelSettings).font_size < 256: + ($TextViewPort/Label.label_settings as LabelSettings).font_size += 1 + elif grouptimer.is_stopped(): + grouptimer.start(); func _on_timer_timeout() -> void: - var x: float = randf_range(-2, 2) - var z: float = randf_range(-2, 2) - var boll: Node3D = pallo.instantiate() - var spawn: Vector3 = Vector3(x, 10, z) - add_child(boll) + + for i in 2: + var x: float = randf_range(-6, 6) + var z: float = randf_range(-2, 2) + var boll: Node3D = pallo.instantiate() + var ttl_timer: Timer = Timer.new(); + ttl_timer.wait_time = 7; + ttl_timer.connect("timeout", func() -> void: boll.queue_free()); + ttl_timer.one_shot = true; + ttl_timer.autostart = true; + boll.add_child(ttl_timer); + var spawn: Vector3 = Vector3(x, 3, z) + add_child(boll) - boll.global_position = spawn - - + boll.global_position = spawn +func random_group() -> void: + if group_iter <= 3: + var group: String = groups.pick_random(); + $TextViewPort/Label.text = group; + groups.remove_at(groups.find(group, 0)); + group_iter += 1; diff --git a/scripts/credits.gd b/scripts/credits.gd index fa02419..f3fc412 100644 --- a/scripts/credits.gd +++ b/scripts/credits.gd @@ -28,8 +28,13 @@ func _ready() -> void: $AnimationPlayer.play("xtra_wipe"); +func fade_audio() -> void: + var tween: Tween = get_tree().create_tween(); + tween.tween_method(_fade_audio_callback, AudioServer.get_bus_volume_db(0), -30.0, 1.5); +func _fade_audio_callback(volume: float) -> void: + AudioServer.set_bus_volume_db(0, volume); func _on_animation_player_animation_finished(anim_name: StringName) -> void: diff --git a/scripts/manager.gd b/scripts/manager.gd index ee7a2b2..daed05d 100644 --- a/scripts/manager.gd +++ b/scripts/manager.gd @@ -2,8 +2,7 @@ extends Manager var scene1: PackedScene = preload("res://entities/test.tscn"); var scene2: PackedScene = preload("res://entities/kaleido_scope.tscn"); -var scene3: PackedScene = preload("res://entities/ParticlesCool.tscn"); -var scene4: PackedScene = preload("res://entities/test.tscn") +var scene3: PackedScene = preload("res://entities/balls.tscn"); var credits_scene: PackedScene = preload("res://entities/credits.tscn"); @@ -13,7 +12,6 @@ func _ready() -> void: register_scene(scene1); register_scene(scene2); register_scene(scene3); - register_scene(scene4); register_scene(credits_scene); start_audio(); $AnimationPlayer.play("timeline");