diff --git a/audio/music/moon_trail.mp3 b/audio/music/moon_trail.mp3 new file mode 100644 index 0000000..0f015dd Binary files /dev/null and b/audio/music/moon_trail.mp3 differ diff --git a/audio/music/moon_trail.mp3.import b/audio/music/moon_trail.mp3.import new file mode 100644 index 0000000..55346de --- /dev/null +++ b/audio/music/moon_trail.mp3.import @@ -0,0 +1,15 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +path="res://.import/moon_trail.mp3-e5596d3a9a378d4307b426522ca94d8d.mp3str" + +[deps] + +source_file="res://audio/music/moon_trail.mp3" +dest_files=[ "res://.import/moon_trail.mp3-e5596d3a9a378d4307b426522ca94d8d.mp3str" ] + +[params] + +loop=true +loop_offset=0 diff --git a/graphics/backgrounds/abyss.png b/graphics/backgrounds/abyss.png new file mode 100644 index 0000000..21ccf85 Binary files /dev/null and b/graphics/backgrounds/abyss.png differ diff --git a/graphics/backgrounds/abyss.png.import b/graphics/backgrounds/abyss.png.import new file mode 100644 index 0000000..c78c57a --- /dev/null +++ b/graphics/backgrounds/abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abyss.png-ce2d2c9a469b6a1269abd6a6791bd5a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/abyss.png" +dest_files=[ "res://.import/abyss.png-ce2d2c9a469b6a1269abd6a6791bd5a0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/bubble.png b/graphics/particles/bubble.png new file mode 100644 index 0000000..5048573 Binary files /dev/null and b/graphics/particles/bubble.png differ diff --git a/graphics/particles/bubble.png.import b/graphics/particles/bubble.png.import new file mode 100644 index 0000000..bf5f6d8 --- /dev/null +++ b/graphics/particles/bubble.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bubble.png-161ac864ae4d227c6f7027dcb5a47f62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/bubble.png" +dest_files=[ "res://.import/bubble.png-161ac864ae4d227c6f7027dcb5a47f62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abyss.png b/graphics/tiles/abyss.png new file mode 100644 index 0000000..69d6cf6 Binary files /dev/null and b/graphics/tiles/abyss.png differ diff --git a/graphics/tiles/abyss.png.import b/graphics/tiles/abyss.png.import new file mode 100644 index 0000000..628acf4 --- /dev/null +++ b/graphics/tiles/abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abyss.png-6103d4163b29dbc50f76fbe18bca735e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/abyss.png" +dest_files=[ "res://.import/abyss.png-6103d4163b29dbc50f76fbe18bca735e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/level_data.tscn b/level_data.tscn index 0041940..81c0b74 100644 --- a/level_data.tscn +++ b/level_data.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=13 format=2] [ext_resource path="res://level_data.gd" type="Script" id=1] [ext_resource path="res://maps/map01.tscn" type="PackedScene" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://maps/cave.tscn" type="PackedScene" id=4] [ext_resource path="res://scripts/level_entry.gd" type="Script" id=5] [ext_resource path="res://maps/mountain.tscn" type="PackedScene" id=6] +[ext_resource path="res://maps/abyss.tscn" type="PackedScene" id=7] [sub_resource type="Resource" id=1] resource_name = "Verdant Hills" @@ -39,6 +40,14 @@ shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "Over save_id = "cave" scene = ExtResource( 4 ) +[sub_resource type="Resource" id=5] +resource_name = "Eepy Abyss" +script = ExtResource( 5 ) +title = "Eepy Abyss" +shard_titles = [ "You", "Can", "(not)", "Breathe", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "abyss" +scene = ExtResource( 7 ) + [node name="LevelData" type="Node"] script = ExtResource( 1 ) -levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 3 ) ] +levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 3 ), SubResource( 5 ) ] diff --git a/maps/abyss.tscn b/maps/abyss.tscn index d8dfddc..eacd576 100644 --- a/maps/abyss.tscn +++ b/maps/abyss.tscn @@ -1,36 +1,197 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://maps/map.gd" type="Script" id=1] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] [ext_resource path="res://graphics/backgrounds/abyss.png" type="Texture" id=3] [ext_resource path="res://scripts/water_ripple.gdshader" type="Shader" id=4] -[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=5] +[ext_resource path="res://audio/music/moon_trail.mp3" type="AudioStream" id=5] +[ext_resource path="res://graphics/tiles/abyss.png" type="Texture" id=6] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://graphics/particles/bubble.png" type="Texture" id=10] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 4 ) -shader_param/offset = 1.5 -shader_param/speed = 0.5 -shader_param/waves = 2.0 +shader_param/offset = 0.5 +shader_param/speed = 1.0 +shader_param/waves = 32.0 +shader_param/color_amount = 0.3 + +[sub_resource type="Shader" id=9] +code = "shader_type canvas_item; + +uniform vec4 distortion_color: hint_color = vec4(1.0, 0.0, 1.0, 1.0); +uniform float frames = 4.0; + +float rand(float co){ + return fract(sin(dot(vec2(co, 0.0) ,vec2(12.9898,78.233))) * 43758.5453); +} + +void vertex() { + VERTEX.x /= frames; +} + +void fragment() { + COLOR = texture(TEXTURE, vec2(UV.x / frames + COLOR.r, UV.y)); +}" + +[sub_resource type="ShaderMaterial" id=10] +shader = SubResource( 9 ) +shader_param/distortion_color = Color( 1, 0, 1, 1 ) +shader_param/frames = 4.0 + +[sub_resource type="Gradient" id=11] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.25, 0.5, 0.75 ) +colors = PoolColorArray( 0, 0, 0, 1, 0.25, 0, 0, 1, 0.501961, 0, 0, 1, 0.75, 0, 0, 1 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4, 320 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 128, 4 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="TileSet" id=6] +0/name = "abyss" +0/texture = ExtResource( 6 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 40 ) +0/tile_mode = 2 +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 2 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 [node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 script = ExtResource( 1 ) target_time_any = 60 target_time_100 = 120 music = ExtResource( 5 ) +[node name="Camera2D" parent="." instance=ExtResource( 7 )] +scroll_h = false +scroll_v = true +respawn_h = false + [node name="BackgroundLayer" type="CanvasLayer" parent="."] layer = -50 +[node name="ColorRect" type="ColorRect" parent="BackgroundLayer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 384.0 +margin_bottom = 384.0 +color = Color( 0.168627, 0.556863, 0.572549, 0.247059 ) + [node name="Sprite" type="Sprite" parent="BackgroundLayer"] texture = ExtResource( 3 ) centered = false -[node name="WaterEffect" type="CanvasLayer" parent="."] +[node name="EffectLayer" type="CanvasLayer" parent="."] layer = 50 -[node name="ColorRect" type="ColorRect" parent="WaterEffect"] +[node name="WaterRipple" type="ColorRect" parent="EffectLayer"] material = SubResource( 1 ) anchor_right = 1.0 anchor_bottom = 1.0 +color = Color( 0.054902, 0.0666667, 0.329412, 1 ) + +[node name="Bubbles" type="CPUParticles2D" parent="EffectLayer"] +material = SubResource( 10 ) +position = Vector2( 128, 200 ) +lifetime = 13.0 +local_coords = false +texture = ExtResource( 10 ) +emission_shape = 2 +emission_rect_extents = Vector2( 128, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 16.0 +color_initial_ramp = SubResource( 11 ) [node name="HUD" parent="." instance=ExtResource( 2 )] + +[node name="Player" parent="." instance=ExtResource( 8 )] +position = Vector2( 16, 48 ) +gravity = 2 +max_fall_speed = 60.0 +jump_force = 80 +doublejump_force = 60 + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -4, 256 ) +shape = SubResource( 7 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 260, 256 ) +shape = SubResource( 7 ) + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 128, 580 ) +shape = SubResource( 8 ) + +[node name="Tilemaps" type="Node2D" parent="."] + +[node name="Ground" type="TileMap" parent="Tilemaps"] +tile_set = SubResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 393233, 0, 196608, 458752, 0, 65536, 458753, 0, 65537, 458754, 0, 65537, 458755, 0, 65537, 458756, 0, 65537, 458757, 0, 65537, 458758, 0, 65538, 458769, 0, 196608, 458770, 0, 0, 458771, 0, 0, 524302, 0, 0, 524303, 0, 0, 524305, 0, 196608, 589835, 0, 0, 589841, 0, 196608, 655368, 0, 0, 655377, 0, 196608, 720913, 0, 196608, 786449, 0, 196608, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 0, 0, 983057, 0, 0, 983058, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 0, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 0, 0, 1114128, 0, 0 ) + +[node name="Ladder" parent="Tilemaps/Ground" instance=ExtResource( 9 )] +position = Vector2( 136, 48 ) +scale = Vector2( 1, 7 ) diff --git a/maps/copper.tscn b/maps/copper.tscn index 962580d..61c6ab7 100644 --- a/maps/copper.tscn +++ b/maps/copper.tscn @@ -9,7 +9,6 @@ [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 4 ) -save_location = 3 [node name="Camera2D" parent="." instance=ExtResource( 3 )] diff --git a/scripts/water_ripple.gdshader b/scripts/water_ripple.gdshader new file mode 100644 index 0000000..64fef40 --- /dev/null +++ b/scripts/water_ripple.gdshader @@ -0,0 +1,12 @@ +shader_type canvas_item; + +uniform float offset = 1.5; +uniform float speed = 0.5; +uniform float waves = 2.0; +uniform float color_amount = 0.2; + +void fragment() { + vec2 uv = SCREEN_UV; + uv.x += floor(sin(TIME * speed - SCREEN_UV.y * waves) * offset) * SCREEN_PIXEL_SIZE.x; + COLOR = mix(texture(SCREEN_TEXTURE, uv), COLOR, color_amount); +} \ No newline at end of file