feat: implement the new "Stop N Go" game mode, including phase management, dynamic safe zones, player missions, and dedicated UI with visual effects.

This commit is contained in:
Yogi Wiguna
2026-03-24 15:16:30 +08:00
parent da9ba9361d
commit 4946f1daa6
30 changed files with 759 additions and 48 deletions
@@ -4,6 +4,7 @@
[ext_resource type="Texture2D" uid="uid://d2t23a885h1i0" path="res://assets/graphics/vfx/effects/freeze.png" id="2_gsxsy"]
[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://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://mnsqay5hs0jh" path="res://assets/graphics/vfx/effects/wall.png" id="6_q227o"]
@@ -1967,6 +1968,198 @@ region = Rect2(1000, 1750, 125, 125)
atlas = ExtResource("4_8bjou")
region = Rect2(1125, 1750, 125, 125)
[sub_resource type="AtlasTexture" id="AtlasTexture_hg3tj"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8bjou"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jmlpd"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_q227o"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_oaoac"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xpe87"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 0, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_adqj4"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_5m36t"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ng11y"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_d36hw"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_u4va7"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_tvg0i"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 512, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xu137"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0sktw"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_0k7wr"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2g3nj"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_e00q3"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_xefxw"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 1024, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_7f71x"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_lcyov"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_iy2fp"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_2ahmr"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1fdg2"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_8m0vd"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 1536, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_y1kkk"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_k4uv6"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_juism"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_1fe7s"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qh3vq"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_edbcw"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 2048, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_tsdhc"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_pmelt"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_s51m1"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_gxmnc"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_fp82g"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_nrflg"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 2560, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ed58s"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_vmbou"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3tqxh"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_jgcx2"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ydiin"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3vg2t"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 3072, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_u84fk"]
atlas = ExtResource("5_gsxsy")
region = Rect2(0, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_3qpd2"]
atlas = ExtResource("5_gsxsy")
region = Rect2(682, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_ultdv"]
atlas = ExtResource("5_gsxsy")
region = Rect2(1364, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_4nprg"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2046, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_piqxh"]
atlas = ExtResource("5_gsxsy")
region = Rect2(2728, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_qk02p"]
atlas = ExtResource("5_gsxsy")
region = Rect2(3410, 3584, 682, 512)
[sub_resource type="AtlasTexture" id="AtlasTexture_yi8v5"]
atlas = ExtResource("5_jmlpd")
region = Rect2(0, 0, 284, 284)
@@ -4306,6 +4499,155 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hg3tj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8bjou")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jmlpd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q227o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_oaoac")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xpe87")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_adqj4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5m36t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ng11y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d36hw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_u4va7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tvg0i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xu137")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0sktw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0k7wr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2g3nj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e00q3")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xefxw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7f71x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lcyov")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_iy2fp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2ahmr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1fdg2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8m0vd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_y1kkk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_k4uv6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_juism")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_1fe7s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qh3vq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_edbcw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tsdhc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pmelt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s51m1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gxmnc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fp82g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nrflg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ed58s")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vmbou")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3tqxh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jgcx2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ydiin")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3vg2t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_u84fk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3qpd2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ultdv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4nprg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_piqxh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_qk02p")
}],
"loop": true,
"name": &"stop-phase",
"speed": 30.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yi8v5")
}, {
"duration": 1.0,
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0