diff --git a/assets/fonts/Linebeam.ttf b/assets/fonts/Linebeam.ttf new file mode 100644 index 0000000..a21de64 Binary files /dev/null and b/assets/fonts/Linebeam.ttf differ 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");