diff --git a/assets/graphics/vfx/effects/animation-head.tres b/assets/graphics/vfx/effects/animation-head.tres index d536287..39814cd 100644 --- a/assets/graphics/vfx/effects/animation-head.tres +++ b/assets/graphics/vfx/effects/animation-head.tres @@ -6,7 +6,7 @@ [ext_resource type="Texture2D" uid="uid://b3yv677a4qidp" path="res://assets/graphics/vfx/effects/30sec_sprite.png" id="2_jmlpd"] [ext_resource type="Texture2D" uid="uid://lykg7d54qrof" path="res://assets/graphics/vfx/effects/ghost.png" id="3_hg3tj"] [ext_resource type="Texture2D" uid="uid://45twcoribm0b" path="res://assets/graphics/vfx/effects/speed.png" id="4_8bjou"] -[ext_resource type="Texture2D" uid="uid://bcyyxropbam50" path="res://assets/graphics/vfx/spawn_tiles_bottom.png" id="4_xd54h"] +[ext_resource type="Texture2D" uid="uid://d2lxk788w2cdw" path="res://assets/graphics/vfx/spawn_floor.png" id="4_iiy2r"] [ext_resource type="Texture2D" uid="uid://c718e7y7qm03x" path="res://assets/graphics/vfx/effects/bullrun_ui.png" id="5_gsxsy"] [ext_resource type="Texture2D" uid="uid://dun5j8mrxpumo" path="res://assets/graphics/vfx/effects/stunned.png" id="5_jmlpd"] [ext_resource type="Texture2D" uid="uid://cjhatl26dafxx" path="res://assets/graphics/vfx/spawn_tiles_top.png" id="5_xd54h"] @@ -527,148 +527,148 @@ atlas = ExtResource("1_gjs0m") region = Rect2(2751, 0, 393, 408) [sub_resource type="AtlasTexture" id="AtlasTexture_pfjl8"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(0, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_6xsib"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(500, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_vbb07"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(1000, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_l8xtn"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(1500, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_r8bp5"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(2000, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_mlbks"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(2500, 0, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_dwn2k"] -atlas = ExtResource("4_xd54h") -region = Rect2(3000, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_86ba4"] -atlas = ExtResource("4_xd54h") -region = Rect2(3500, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_rfe3p"] -atlas = ExtResource("4_xd54h") -region = Rect2(4000, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_fgkky"] -atlas = ExtResource("4_xd54h") -region = Rect2(4500, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_yk5ks"] -atlas = ExtResource("4_xd54h") -region = Rect2(5000, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_tt1sy"] -atlas = ExtResource("4_xd54h") -region = Rect2(5500, 0, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ihxs7"] -atlas = ExtResource("4_xd54h") +atlas = ExtResource("4_iiy2r") region = Rect2(0, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_u6diu"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_86ba4"] +atlas = ExtResource("4_iiy2r") region = Rect2(500, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_xvgj3"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_rfe3p"] +atlas = ExtResource("4_iiy2r") region = Rect2(1000, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_nn6v3"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_fgkky"] +atlas = ExtResource("4_iiy2r") region = Rect2(1500, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_1qja4"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_yk5ks"] +atlas = ExtResource("4_iiy2r") region = Rect2(2000, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_s1ih8"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_tt1sy"] +atlas = ExtResource("4_iiy2r") region = Rect2(2500, 500, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_1lb4f"] -atlas = ExtResource("4_xd54h") -region = Rect2(3000, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_1evi6"] -atlas = ExtResource("4_xd54h") -region = Rect2(3500, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_etlyi"] -atlas = ExtResource("4_xd54h") -region = Rect2(4000, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_c3uep"] -atlas = ExtResource("4_xd54h") -region = Rect2(4500, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_hchqc"] -atlas = ExtResource("4_xd54h") -region = Rect2(5000, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_k6s2b"] -atlas = ExtResource("4_xd54h") -region = Rect2(5500, 500, 500, 500) - -[sub_resource type="AtlasTexture" id="AtlasTexture_wwuof"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_ihxs7"] +atlas = ExtResource("4_iiy2r") region = Rect2(0, 1000, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_vqenf"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_u6diu"] +atlas = ExtResource("4_iiy2r") region = Rect2(500, 1000, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_hehw1"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_xvgj3"] +atlas = ExtResource("4_iiy2r") region = Rect2(1000, 1000, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_wmjgt"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_nn6v3"] +atlas = ExtResource("4_iiy2r") region = Rect2(1500, 1000, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_euieq"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_1qja4"] +atlas = ExtResource("4_iiy2r") region = Rect2(2000, 1000, 500, 500) -[sub_resource type="AtlasTexture" id="AtlasTexture_r7q5m"] -atlas = ExtResource("4_xd54h") +[sub_resource type="AtlasTexture" id="AtlasTexture_s1ih8"] +atlas = ExtResource("4_iiy2r") region = Rect2(2500, 1000, 500, 500) +[sub_resource type="AtlasTexture" id="AtlasTexture_1lb4f"] +atlas = ExtResource("4_iiy2r") +region = Rect2(0, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1evi6"] +atlas = ExtResource("4_iiy2r") +region = Rect2(500, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_etlyi"] +atlas = ExtResource("4_iiy2r") +region = Rect2(1000, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c3uep"] +atlas = ExtResource("4_iiy2r") +region = Rect2(1500, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hchqc"] +atlas = ExtResource("4_iiy2r") +region = Rect2(2000, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_k6s2b"] +atlas = ExtResource("4_iiy2r") +region = Rect2(2500, 1500, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wwuof"] +atlas = ExtResource("4_iiy2r") +region = Rect2(0, 2000, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vqenf"] +atlas = ExtResource("4_iiy2r") +region = Rect2(500, 2000, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hehw1"] +atlas = ExtResource("4_iiy2r") +region = Rect2(1000, 2000, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wmjgt"] +atlas = ExtResource("4_iiy2r") +region = Rect2(1500, 2000, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_euieq"] +atlas = ExtResource("4_iiy2r") +region = Rect2(2000, 2000, 500, 500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r7q5m"] +atlas = ExtResource("4_iiy2r") +region = Rect2(2500, 2000, 500, 500) + [sub_resource type="AtlasTexture" id="AtlasTexture_4dgeb"] -atlas = ExtResource("4_xd54h") -region = Rect2(3000, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(0, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_u3dcn"] -atlas = ExtResource("4_xd54h") -region = Rect2(3500, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(500, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_che85"] -atlas = ExtResource("4_xd54h") -region = Rect2(4000, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(1000, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_gijbg"] -atlas = ExtResource("4_xd54h") -region = Rect2(4500, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(1500, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_bh7f8"] -atlas = ExtResource("4_xd54h") -region = Rect2(5000, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(2000, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_faulb"] -atlas = ExtResource("4_xd54h") -region = Rect2(5500, 1000, 500, 500) +atlas = ExtResource("4_iiy2r") +region = Rect2(2500, 2500, 500, 500) [sub_resource type="AtlasTexture" id="AtlasTexture_un3dc"] atlas = ExtResource("5_xd54h") diff --git a/assets/graphics/vfx/spawn_floor.png b/assets/graphics/vfx/spawn_floor.png new file mode 100644 index 0000000..04bf22d Binary files /dev/null and b/assets/graphics/vfx/spawn_floor.png differ diff --git a/assets/graphics/vfx/spawn_tiles_bottom.png.import b/assets/graphics/vfx/spawn_floor.png.import similarity index 71% rename from assets/graphics/vfx/spawn_tiles_bottom.png.import rename to assets/graphics/vfx/spawn_floor.png.import index 574630e..0494169 100644 --- a/assets/graphics/vfx/spawn_tiles_bottom.png.import +++ b/assets/graphics/vfx/spawn_floor.png.import @@ -2,8 +2,8 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bcyyxropbam50" -path.s3tc="res://.godot/imported/spawn_tiles_bottom.png-bf5af9b1f572105fde872edff38e8188.s3tc.ctex" +uid="uid://d2lxk788w2cdw" +path.s3tc="res://.godot/imported/spawn_floor.png-932d516dabe821d5ec59606ca0d25279.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://assets/graphics/vfx/spawn_tiles_bottom.png" -dest_files=["res://.godot/imported/spawn_tiles_bottom.png-bf5af9b1f572105fde872edff38e8188.s3tc.ctex"] +source_file="res://assets/graphics/vfx/spawn_floor.png" +dest_files=["res://.godot/imported/spawn_floor.png-932d516dabe821d5ec59606ca0d25279.s3tc.ctex"] [params] diff --git a/assets/graphics/vfx/spawn_tiles_bottom.png b/assets/graphics/vfx/spawn_tiles_bottom.png deleted file mode 100644 index d01f947..0000000 Binary files a/assets/graphics/vfx/spawn_tiles_bottom.png and /dev/null differ diff --git a/assets/models/arena/free_mode/level_water.gdshader b/assets/models/arena/free_mode/level_water.gdshader new file mode 100644 index 0000000..ab1fdeb --- /dev/null +++ b/assets/models/arena/free_mode/level_water.gdshader @@ -0,0 +1,83 @@ +shader_type spatial; +render_mode cull_disabled; + +uniform vec3 albedo : source_color; +uniform vec3 albedo2 : source_color; +uniform float metallic : hint_range(0.0, 1.0) = 0; +uniform float roughness : hint_range(0.0, 1.0) = 0.02; +uniform sampler2D wave; +uniform sampler2D texture_normal; +uniform sampler2D texture_normal2; +uniform vec2 wave_direction = vec2(2.0,0.0); // Direction of wave 1 +uniform vec2 wave_direction2 = vec2(0.0,1.0); // Direction of wave 2 +uniform float time_scale : hint_range(0.0, 0.2, 0.005) = 0.025; // Rate of movement multiplied by TIME +uniform float noise_scale = 10.0; +uniform float height_scale = 0.15; + +uniform vec4 color_deep : source_color; // Deep depth color +uniform vec4 color_shallow : source_color; // Shallow depth color +uniform float beers_law = 2.0; // Beer's law application +uniform float depth_offset = -0.75; // Offset + +uniform float edge_scale = 0.1; +uniform float near = 1.0; +uniform float far = 100.0; +uniform vec3 edge_color : source_color; +uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap; +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; + +// Varying variables +varying float height; +varying vec3 world_pos; + +float fresnel(float amount, vec3 normal, vec3 view) +{ + return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount); +} +float edge(float depth){ + depth = 2.0 * depth - 1.0; + return near * far / (far + depth * (near - far)); +} + +void vertex() { + world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; + height = texture(wave, world_pos.xz / noise_scale + TIME * time_scale).r; + VERTEX.y += height * height_scale; +} + +void fragment() { + // Depth variables and calc + float depth_texture = texture(DEPTH_TEXTURE, SCREEN_UV).r * 2.0 - 1.0; + float depth = PROJECTION_MATRIX[3][2] / (depth_texture + PROJECTION_MATRIX[2][2]); + float depth_blend = exp((depth+VERTEX.z + depth_offset) * -beers_law); + depth_blend = clamp(1.0 - depth_blend, 0.0, 1.0); + float depth_blend_power = clamp(pow(depth_blend, 2.5), 0.0, 1.0); + + // Retrieving depth color and applying the deep and shallow colors + vec3 screen_color = textureLod(SCREEN_TEXTURE, SCREEN_UV, depth_blend_power * 2.5).rgb; + vec3 depth_color = mix(color_shallow.rgb, color_deep.rgb, depth_blend_power); + vec3 color = mix(screen_color * depth_color, depth_color * 0.25, depth_blend_power * 0.5); + + // Getting edge depth calc + float z_depth = edge(texture(DEPTH_TEXTURE, SCREEN_UV).x); + float z_pos = edge(FRAGCOORD.z); + float z_dif = z_depth - z_pos; + + // Time calculations for wave (normal map) movement + vec2 time = (TIME * wave_direction) * time_scale; // Movement rate of first wave + vec2 time2 = (TIME * wave_direction2) * time_scale; // Movement rate of second wave + + // Blend normal maps into one + vec3 normal_blend = mix(texture(texture_normal,world_pos.xz + time).rgb, texture(texture_normal2,world_pos.xz + time2).rgb, 0.5); + + // Calculate Fresnel + float fresnel = fresnel(5.0, NORMAL, VIEW); + vec3 surface_color = mix(albedo, albedo2, fresnel); // Interpolate albedo values by frensel + + vec3 depth_color_adj = mix(edge_color, color, step(edge_scale, z_dif)); + + ALBEDO = clamp(surface_color + depth_color_adj,vec3(0.0),vec3(1.0)); + METALLIC = metallic; + ROUGHNESS = roughness; + NORMAL_MAP = normal_blend; +} \ No newline at end of file diff --git a/assets/models/arena/free_mode/level_water.gdshader.uid b/assets/models/arena/free_mode/level_water.gdshader.uid new file mode 100644 index 0000000..950d1db --- /dev/null +++ b/assets/models/arena/free_mode/level_water.gdshader.uid @@ -0,0 +1 @@ +uid://chabrdico7377 diff --git a/assets/models/arena/free_mode/level_water.tres b/assets/models/arena/free_mode/level_water.tres new file mode 100644 index 0000000..faa2af4 --- /dev/null +++ b/assets/models/arena/free_mode/level_water.tres @@ -0,0 +1,6 @@ +[gd_resource type="PanoramaSkyMaterial" format=3 uid="uid://bdwxlbar41mxw"] + +[ext_resource type="Texture2D" uid="uid://didk5l287jms7" path="res://assets/levels/level_water/sky_sea_01.png" id="1_f0k4a"] + +[resource] +panorama = ExtResource("1_f0k4a") diff --git a/assets/models/arena/free_mode/level_water_environment.tres b/assets/models/arena/free_mode/level_water_environment.tres new file mode 100644 index 0000000..418450d --- /dev/null +++ b/assets/models/arena/free_mode/level_water_environment.tres @@ -0,0 +1,13 @@ +[gd_resource type="Environment" format=3 uid="uid://d07fd5dsr0xv"] + +[ext_resource type="Material" uid="uid://bdwxlbar41mxw" path="res://assets/levels/level_water/level_water.tres" id="1_gsk4i"] + +[sub_resource type="Sky" id="Sky_u7obs"] +sky_material = ExtResource("1_gsk4i") + +[resource] +background_mode = 2 +sky = SubResource("Sky_u7obs") +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +reflected_light_source = 2 diff --git a/assets/models/arena/free_mode/sky_sea_01.png b/assets/models/arena/free_mode/sky_sea_01.png new file mode 100644 index 0000000..c99df06 Binary files /dev/null and b/assets/models/arena/free_mode/sky_sea_01.png differ diff --git a/assets/models/arena/free_mode/sky_sea_01.png.import b/assets/models/arena/free_mode/sky_sea_01.png.import new file mode 100644 index 0000000..a4dd779 --- /dev/null +++ b/assets/models/arena/free_mode/sky_sea_01.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dep1ng3aqb2jw" +path.s3tc="res://.godot/imported/sky_sea_01.png-02f4e2484e4bcee94a60ae25a0ef8549.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/models/arena/free_mode/sky_sea_01.png" +dest_files=["res://.godot/imported/sky_sea_01.png-02f4e2484e4bcee94a60ae25a0ef8549.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/assets/models/arena/free_mode/water_shader.tres b/assets/models/arena/free_mode/water_shader.tres new file mode 100644 index 0000000..fe7b552 --- /dev/null +++ b/assets/models/arena/free_mode/water_shader.tres @@ -0,0 +1,38 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://xifgjdr8285d"] + +[ext_resource type="Shader" uid="uid://chabrdico7377" path="res://assets/models/arena/free_mode/level_water.gdshader" id="1_nuaxy"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_s0tpp"] +noise_type = 0 +seed = 5 +frequency = 0.0166 +metadata/_preview_in_3d_space_ = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_6vard"] +noise = SubResource("FastNoiseLite_s0tpp") +seamless = true +as_normal_map = true +seamless_blend_skirt = 1.0 +bump_strength = 25.6 + +[resource] +render_priority = 0 +shader = ExtResource("1_nuaxy") +shader_parameter/albedo = Color(0.14, 0.382667, 0.7, 1) +shader_parameter/albedo2 = Color(0.54, 0.77, 1, 1) +shader_parameter/metallic = 0.0 +shader_parameter/roughness = 0.02 +shader_parameter/texture_normal = SubResource("NoiseTexture2D_6vard") +shader_parameter/wave_direction = Vector2(2, 0) +shader_parameter/wave_direction2 = Vector2(0, 1) +shader_parameter/time_scale = 0.025 +shader_parameter/noise_scale = 10.0 +shader_parameter/height_scale = 0.15 +shader_parameter/color_deep = Color(0.513233, 0.513233, 0.513233, 1) +shader_parameter/color_shallow = Color(0.716296, 0.716296, 0.716296, 1) +shader_parameter/beers_law = 2.0 +shader_parameter/depth_offset = -0.75 +shader_parameter/edge_scale = 0.1 +shader_parameter/near = 1.0 +shader_parameter/far = 100.0 +shader_parameter/edge_color = Color(0.215902, 0.215902, 0.215902, 1) diff --git a/scenes/arena/freemode.tscn b/scenes/arena/freemode.tscn index f3c3c69..88eba88 100644 --- a/scenes/arena/freemode.tscn +++ b/scenes/arena/freemode.tscn @@ -1,8 +1,41 @@ [gd_scene format=3 uid="uid://nwpaqt6drdkr"] [ext_resource type="PackedScene" uid="uid://b1l0x4yf3lbx8" path="res://assets/models/arena/free_mode/Terrainv2.gltf" id="1_37t6b"] +[ext_resource type="Material" uid="uid://xifgjdr8285d" path="res://assets/models/arena/free_mode/water_shader.tres" id="2_bw67x"] +[ext_resource type="Texture2D" uid="uid://dep1ng3aqb2jw" path="res://assets/models/arena/free_mode/sky_sea_01.png" id="3_8esiu"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_8esiu"] +material = ExtResource("2_bw67x") + +[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_xj13a"] +panorama = ExtResource("3_8esiu") + +[sub_resource type="Sky" id="Sky_p4wg4"] +sky_material = SubResource("PanoramaSkyMaterial_xj13a") + +[sub_resource type="Environment" id="Environment_8v6kw"] +background_mode = 2 +sky = SubResource("Sky_p4wg4") +ambient_light_source = 3 +ambient_light_color = Color(1, 1, 1, 1) +ambient_light_sky_contribution = 0.5 +reflected_light_source = 2 [node name="Freemode" type="Node3D" unique_id=355029811] transform = Transform3D(100, 0, 0, 0, 100, 0, 0, 0, 100, 10.565, -0.57, 8.139) [node name="Terrainv2" parent="." unique_id=1519605696 instance=ExtResource("1_37t6b")] + +[node name="Water" type="MeshInstance3D" parent="." unique_id=289309951] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.14561673, 0) +mesh = SubResource("PlaneMesh_8esiu") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=831804132] +transform = Transform3D(0.23387258, -0.9458177, 0.2252387, -0.400554, 0.11736052, 0.90872604, -0.88592327, -0.30274636, -0.35140368, 0.1, 0.1, 0.13) +light_color = Color(0.98039216, 0.83137256, 0.70980394, 1) +shadow_enabled = true +shadow_bias = 0.2 +shadow_normal_bias = 5.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=936572897] +environment = SubResource("Environment_8v6kw") diff --git a/scenes/main.gd b/scenes/main.gd index 16f37ef..aae776a 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -123,19 +123,11 @@ func _apply_arena_background(): "Stop N Go Arena": texture_path = "res://assets/graphics/level_bg/placeholder_stop_n_go.jpg" _instantiate_3d_arena("res://scenes/arena/stop_n_go.scn") - - # Make normal, non-walkable, and Tekton floors invisible - # by shrinking their scale to 0. This hides them visually while - # avoiding "Parameter 'mesh' is null" or material override errors. - var em = $EnhancedGridMap - if em and em.mesh_library: - var ml = em.mesh_library.duplicate() - for id in [0, 4, 6]: - # Scale to 0 to hide it without triggering invalid mesh errors - ml.set_item_mesh_transform(id, Transform3D().scaled(Vector3.ZERO)) - - em.mesh_library = ml - print("[Main] Hide tiles 0, 4, 6 via zero-scale transform.") + _hide_ground_tiles() + "Freemode Arena": + texture_path = "res://assets/graphics/level_bg/placeholder_classic.jpg" # Fallback texture + _instantiate_3d_arena("res://scenes/arena/freemode.tscn") + _hide_ground_tiles() "Tekton Doors Arena": texture_path = "res://assets/graphics/level_bg/placeholder_tekton_doors.jpg" "Classic", _: @@ -159,6 +151,20 @@ func _instantiate_3d_arena(scene_path: String): move_child(arena_instance, 0) print("Instantiated 3D Arena: ", scene_path) +func _hide_ground_tiles(): + # Make normal, non-walkable, and Tekton floors invisible + # by shrinking their scale to 0. This hides them visually while + # avoiding "Parameter 'mesh' is null" or material override errors. + var em = $EnhancedGridMap + if em and em.mesh_library: + var ml = em.mesh_library.duplicate() + for id in [0, 4, 6]: + # Scale to 0 to hide it without triggering invalid mesh errors + ml.set_item_mesh_transform(id, Transform3D().scaled(Vector3.ZERO)) + + em.mesh_library = ml + print("[Main] Hide tiles 0, 4, 6 via zero-scale transform.") + @rpc("any_peer", "call_local", "reliable") func sync_portal_configs(configs: Array): if portal_mode_manager: @@ -849,11 +855,10 @@ func _assign_random_spawn_positions(): var pos = Vector2i(x, z) # SAFETY CHECK: Is this reserved for a Static Tekton Stand? - # Stand clears 3x3, we use a strictly >= 1 check (so abs <= 1 is EXACTLY the 3x3 stand) - # Let's use a 3x3 check (1 radius) to avoid strictly the stand itself, plus 1 buffer = radius 2. + # Stand clears exactly 3x3 area var is_safe = true for reserved in reserved_static_positions: - if abs(x - reserved.x) <= 2 and abs(z - reserved.y) <= 2: + if abs(x - reserved.x) <= 1 and abs(z - reserved.y) <= 1: is_safe = false break diff --git a/scenes/player.gd b/scenes/player.gd index 2d4d64e..2104cde 100644 --- a/scenes/player.gd +++ b/scenes/player.gd @@ -1345,18 +1345,17 @@ func is_position_occupied(pos: Vector2i) -> bool: if p.is_player_moving and p.target_position == pos: return true - # Prevent overlap with Static Tekton Stands (3x3 area, with 1-tile buffer = 5x5 checked) + # Prevent overlap with Static Tekton Stands (Exactly the 3x3 area) if enhanced_gridmap: for stand in get_tree().get_nodes_in_group("StaticTektonStands"): var local_pos = enhanced_gridmap.to_local(stand.global_position) var stand_map_pos = enhanced_gridmap.local_to_map(local_pos) - if abs(pos.x - stand_map_pos.x) <= 2 and abs(pos.y - stand_map_pos.z) <= 2: + if abs(pos.x - stand_map_pos.x) <= 1 and abs(pos.y - stand_map_pos.z) <= 1: return true - var main_node = get_tree().get_root().get_node_or_null("Main") if main_node and "reserved_static_positions" in main_node: for reserved in main_node.reserved_static_positions: - if abs(pos.x - reserved.x) <= 2 and abs(pos.y - reserved.y) <= 2: + if abs(pos.x - reserved.x) <= 1 and abs(pos.y - reserved.y) <= 1: return true return false diff --git a/scenes/player.tscn b/scenes/player.tscn index 34d1a95..70c21eb 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -167,6 +167,8 @@ transform = Transform3D(1.2, 0, 0, 0, -5.2453668e-08, -1.2, 0, 1.2, -5.2453668e- visible = false sprite_frames = ExtResource("10_y4r1p") animation = &"floor_spawn_bot" +frame = 35 +frame_progress = 1.0 [node name="receiver_skill_stunned" type="AnimatedSprite3D" parent="." unique_id=56953581] transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0) diff --git a/scripts/managers/lobby_manager.gd b/scripts/managers/lobby_manager.gd index 259d32f..c6e24f5 100644 --- a/scripts/managers/lobby_manager.gd +++ b/scripts/managers/lobby_manager.gd @@ -78,7 +78,7 @@ var rematch_votes: Array = [] # [player_id, ...] var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"] var available_areas: Array[String] = [] var available_game_modes: Array[String] = ["Freemode", "Stop n Go"] -var selected_area: String = "Classic" # Host-controlled +var selected_area: String = "Freemode Arena" # Host-controlled var game_mode: String = "Freemode" # Host-controlled var local_character_index: int = 0 # Local player's character index @@ -129,7 +129,7 @@ func _listen_for_lan_discovery(): func _update_available_areas(mode: String) -> void: match mode: "Freemode": - available_areas = ["Classic", "Colloseum"] + available_areas = ["Freemode Arena", "Classic", "Colloseum"] "Stop n Go": available_areas = ["Stop N Go Arena"] _: