Compare commits

...

3 Commits

Author SHA1 Message Date
Rob Kelly 06d586d8f0 Water splash effect 2025-01-02 15:16:49 -07:00
Rob Kelly e255d26239 Added more materials to terrain material map 2025-01-02 13:29:04 -07:00
Rob Kelly a05e3e2976 Basics of mall level 2025-01-01 17:12:45 -07:00
27 changed files with 1386 additions and 5 deletions

View File

@ -11,6 +11,14 @@ Asset credits
*** License: CC BY 4.0
** Kenney.nl particle pack
*** Retrieved from https://www.kenney.nl/assets/particle-pack
*** Author: kenney.nl
*** License: CC0
* Fonts
** PromptFont
@ -166,3 +174,11 @@ Asset credits
*** Author: LiamG_SFX
*** License: CC BY 4.0
** objectDunk1.MP3
*** Retrieved from https://freesound.org/people/rabban625/sounds/436473/
*** Author: rabban625
*** License: CC0

BIN
asset_dev/audio/436473__rabban625__objectdunk1.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
asset_dev/levels/mall.blend (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
asset_dev/particles/bubble.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/sound/sfx/ball/splash1.wav (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dutumw1vj854w"
path="res://.godot/imported/splash1.wav-c515553fa6b3d442d978831ce07dccfa.sample"
[deps]
source_file="res://assets/sound/sfx/ball/splash1.wav"
dest_files=["res://.godot/imported/splash1.wav-c515553fa6b3d442d978831ce07dccfa.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

BIN
assets/sprites/particles/bubble.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bjnil2wvvf35q"
path.s3tc="res://.godot/imported/bubble.png-c5759ab17447a1372d60f0e86df9d865.s3tc.ctex"
path.etc2="res://.godot/imported/bubble.png-c5759ab17447a1372d60f0e86df9d865.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/sprites/particles/bubble.png"
dest_files=["res://.godot/imported/bubble.png-c5759ab17447a1372d60f0e86df9d865.s3tc.ctex", "res://.godot/imported/bubble.png-c5759ab17447a1372d60f0e86df9d865.etc2.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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

BIN
assets/sprites/particles/light_03.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bogj6pvl2a7d"
path="res://.godot/imported/light_03.png-cbfa7c9430e204e671021262b00ddb04.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/particles/light_03.png"
dest_files=["res://.godot/imported/light_03.png-cbfa7c9430e204e671021262b00ddb04.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

View File

@ -0,0 +1,728 @@
{
"asset":{
"generator":"Khronos glTF Blender I/O v4.2.60",
"version":"2.0"
},
"scene":0,
"scenes":[
{
"name":"Scene",
"nodes":[
0,
1,
2,
3
]
}
],
"nodes":[
{
"mesh":0,
"name":"Geometry"
},
{
"name":"Origin",
"rotation":[
0,
1,
0,
0
]
},
{
"mesh":1,
"name":"Fountain",
"translation":[
0,
1,
0
]
},
{
"mesh":2,
"name":"FountainWater",
"translation":[
0,
0.5,
0
]
}
],
"materials":[
{
"doubleSided":true,
"name":"MallFloor",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.37290316820144653,
0.8002911806106567,
0.1968839168548584,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"MallStorefrontWall",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.7833530902862549,
0.743090033531189,
0.3785495460033417,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"MallOtherWall",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.5049755573272705,
0.4796982407569885,
0.4796982407569885,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"MallCeiling",
"pbrMetallicRoughness":{
"baseColorFactor":[
1,
0.2704524099826813,
0.2704524099826813,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"MallDome",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.015895012766122818,
0.800614058971405,
0.7241971492767334,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"MallCatwalk",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.7324724793434143,
0.17093542218208313,
0.8004578351974487,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"Fountain",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.800000011920929,
0.800000011920929,
0.800000011920929,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"Water",
"pbrMetallicRoughness":{
"baseColorFactor":[
0,
0.00015084154438227415,
0.8002434968948364,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
}
],
"meshes":[
{
"name":"Geometry.Mesh",
"primitives":[
{
"attributes":{
"POSITION":0,
"NORMAL":1,
"TEXCOORD_0":2
},
"indices":3,
"material":0
},
{
"attributes":{
"POSITION":4,
"NORMAL":5,
"TEXCOORD_0":6
},
"indices":7,
"material":1
},
{
"attributes":{
"POSITION":8,
"NORMAL":9,
"TEXCOORD_0":10
},
"indices":11,
"material":2
},
{
"attributes":{
"POSITION":12,
"NORMAL":13,
"TEXCOORD_0":14
},
"indices":15,
"material":3
},
{
"attributes":{
"POSITION":16,
"NORMAL":17,
"TEXCOORD_0":18
},
"indices":19,
"material":4
},
{
"attributes":{
"POSITION":20,
"NORMAL":21,
"TEXCOORD_0":22
},
"indices":23,
"material":5
}
]
},
{
"name":"Fountain.Mesh",
"primitives":[
{
"attributes":{
"POSITION":24,
"NORMAL":25,
"TEXCOORD_0":26
},
"indices":27,
"material":6
}
]
},
{
"name":"FountainWater.Mesh",
"primitives":[
{
"attributes":{
"POSITION":28,
"NORMAL":29,
"TEXCOORD_0":30
},
"indices":31,
"material":7
}
]
}
],
"accessors":[
{
"bufferView":0,
"componentType":5126,
"count":92,
"max":[
65,
22,
130
],
"min":[
-65,
0,
-130
],
"type":"VEC3"
},
{
"bufferView":1,
"componentType":5126,
"count":92,
"type":"VEC3"
},
{
"bufferView":2,
"componentType":5126,
"count":92,
"type":"VEC2"
},
{
"bufferView":3,
"componentType":5123,
"count":204,
"type":"SCALAR"
},
{
"bufferView":4,
"componentType":5126,
"count":238,
"max":[
65,
32.025001525878906,
123.66582489013672
],
"min":[
-65,
0,
-123.66582489013672
],
"type":"VEC3"
},
{
"bufferView":5,
"componentType":5126,
"count":238,
"type":"VEC3"
},
{
"bufferView":6,
"componentType":5126,
"count":238,
"type":"VEC2"
},
{
"bufferView":7,
"componentType":5123,
"count":396,
"type":"SCALAR"
},
{
"bufferView":8,
"componentType":5126,
"count":126,
"max":[
65,
42,
130
],
"min":[
-65,
0,
-130
],
"type":"VEC3"
},
{
"bufferView":9,
"componentType":5126,
"count":126,
"type":"VEC3"
},
{
"bufferView":10,
"componentType":5126,
"count":126,
"type":"VEC2"
},
{
"bufferView":11,
"componentType":5123,
"count":234,
"type":"SCALAR"
},
{
"bufferView":12,
"componentType":5126,
"count":108,
"max":[
65,
42,
130
],
"min":[
-65,
9.75,
-130
],
"type":"VEC3"
},
{
"bufferView":13,
"componentType":5126,
"count":108,
"type":"VEC3"
},
{
"bufferView":14,
"componentType":5126,
"count":108,
"type":"VEC2"
},
{
"bufferView":15,
"componentType":5123,
"count":228,
"type":"SCALAR"
},
{
"bufferView":16,
"componentType":5126,
"count":142,
"max":[
38,
80,
37.999996185302734
],
"min":[
-38,
42,
-37.999996185302734
],
"type":"VEC3"
},
{
"bufferView":17,
"componentType":5126,
"count":142,
"type":"VEC3"
},
{
"bufferView":18,
"componentType":5126,
"count":142,
"type":"VEC2"
},
{
"bufferView":19,
"componentType":5123,
"count":144,
"type":"SCALAR"
},
{
"bufferView":20,
"componentType":5126,
"count":120,
"max":[
40,
22,
40.5
],
"min":[
-40,
21,
-40.5
],
"type":"VEC3"
},
{
"bufferView":21,
"componentType":5126,
"count":120,
"type":"VEC3"
},
{
"bufferView":22,
"componentType":5126,
"count":120,
"type":"VEC2"
},
{
"bufferView":23,
"componentType":5123,
"count":270,
"type":"SCALAR"
},
{
"bufferView":24,
"componentType":5126,
"count":1344,
"max":[
20.556293487548828,
2.5298473834991455,
20.556293487548828
],
"min":[
-20.556293487548828,
-1,
-20.556293487548828
],
"type":"VEC3"
},
{
"bufferView":25,
"componentType":5126,
"count":1344,
"type":"VEC3"
},
{
"bufferView":26,
"componentType":5126,
"count":1344,
"type":"VEC2"
},
{
"bufferView":27,
"componentType":5123,
"count":2100,
"type":"SCALAR"
},
{
"bufferView":28,
"componentType":5126,
"count":192,
"max":[
19.063644409179688,
1.5,
19.22129249572754
],
"min":[
-19,
-5.5,
-19
],
"type":"VEC3"
},
{
"bufferView":29,
"componentType":5126,
"count":192,
"type":"VEC3"
},
{
"bufferView":30,
"componentType":5126,
"count":192,
"type":"VEC2"
},
{
"bufferView":31,
"componentType":5123,
"count":360,
"type":"SCALAR"
}
],
"bufferViews":[
{
"buffer":0,
"byteLength":1104,
"byteOffset":0,
"target":34962
},
{
"buffer":0,
"byteLength":1104,
"byteOffset":1104,
"target":34962
},
{
"buffer":0,
"byteLength":736,
"byteOffset":2208,
"target":34962
},
{
"buffer":0,
"byteLength":408,
"byteOffset":2944,
"target":34963
},
{
"buffer":0,
"byteLength":2856,
"byteOffset":3352,
"target":34962
},
{
"buffer":0,
"byteLength":2856,
"byteOffset":6208,
"target":34962
},
{
"buffer":0,
"byteLength":1904,
"byteOffset":9064,
"target":34962
},
{
"buffer":0,
"byteLength":792,
"byteOffset":10968,
"target":34963
},
{
"buffer":0,
"byteLength":1512,
"byteOffset":11760,
"target":34962
},
{
"buffer":0,
"byteLength":1512,
"byteOffset":13272,
"target":34962
},
{
"buffer":0,
"byteLength":1008,
"byteOffset":14784,
"target":34962
},
{
"buffer":0,
"byteLength":468,
"byteOffset":15792,
"target":34963
},
{
"buffer":0,
"byteLength":1296,
"byteOffset":16260,
"target":34962
},
{
"buffer":0,
"byteLength":1296,
"byteOffset":17556,
"target":34962
},
{
"buffer":0,
"byteLength":864,
"byteOffset":18852,
"target":34962
},
{
"buffer":0,
"byteLength":456,
"byteOffset":19716,
"target":34963
},
{
"buffer":0,
"byteLength":1704,
"byteOffset":20172,
"target":34962
},
{
"buffer":0,
"byteLength":1704,
"byteOffset":21876,
"target":34962
},
{
"buffer":0,
"byteLength":1136,
"byteOffset":23580,
"target":34962
},
{
"buffer":0,
"byteLength":288,
"byteOffset":24716,
"target":34963
},
{
"buffer":0,
"byteLength":1440,
"byteOffset":25004,
"target":34962
},
{
"buffer":0,
"byteLength":1440,
"byteOffset":26444,
"target":34962
},
{
"buffer":0,
"byteLength":960,
"byteOffset":27884,
"target":34962
},
{
"buffer":0,
"byteLength":540,
"byteOffset":28844,
"target":34963
},
{
"buffer":0,
"byteLength":16128,
"byteOffset":29384,
"target":34962
},
{
"buffer":0,
"byteLength":16128,
"byteOffset":45512,
"target":34962
},
{
"buffer":0,
"byteLength":10752,
"byteOffset":61640,
"target":34962
},
{
"buffer":0,
"byteLength":4200,
"byteOffset":72392,
"target":34963
},
{
"buffer":0,
"byteLength":2304,
"byteOffset":76592,
"target":34962
},
{
"buffer":0,
"byteLength":2304,
"byteOffset":78896,
"target":34962
},
{
"buffer":0,
"byteLength":1536,
"byteOffset":81200,
"target":34962
},
{
"buffer":0,
"byteLength":720,
"byteOffset":82736,
"target":34963
}
],
"buffers":[
{
"byteLength":83456,
"uri":"mall.bin"
}
]
}

View File

@ -0,0 +1,36 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://1x7alivn27ef"
path="res://.godot/imported/mall.gltf-de9e241c02ee8b7f4ac1317b5b5fa9bb.scn"
[deps]
source_file="res://levels/mall/geometry/mall.gltf"
dest_files=["res://.godot/imported/mall.gltf-de9e241c02ee8b7f4ac1317b5b5fa9bb.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

9
levels/mall/mall.tres Normal file
View File

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="Level" load_steps=3 format=3 uid="uid://3odongr8qm8e"]
[ext_resource type="PackedScene" uid="uid://ciqd8r8yt00y0" path="res://levels/mall/mall.tscn" id="1_2cp8o"]
[ext_resource type="Script" path="res://src/world/level/level.gd" id="2_wmp72"]
[resource]
script = ExtResource("2_wmp72")
scene = ExtResource("1_2cp8o")
level_name = "Forbidden Mall"

175
levels/mall/mall.tscn Normal file

File diff suppressed because one or more lines are too long

View File

@ -248,6 +248,8 @@ locale/translations=PackedStringArray("res://assets/text/text.en.translation")
3d_physics/layer_1="Collision Geometry"
3d_physics/layer_2="Water"
3d_physics/layer_25="Green Material"
3d_physics/layer_26="Fairway Material"
3d_physics/layer_27="Glass Material"
3d_physics/layer_28="Metal Material"
3d_physics/layer_29="Rock Material"
@ -269,6 +271,7 @@ textures/canvas_textures/default_texture_filter=0
textures/vram_compression/import_etc2_astc=true
lights_and_shadows/directional_shadow/size=16384
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=0
textures/decals/filter=2
anti_aliasing/quality/msaa_3d=3
anti_aliasing/quality/screen_space_aa=1
anti_aliasing/quality/use_debanding=true

View File

@ -3,3 +3,8 @@ extends GameBall
func enter_zone(zone: BallZone) -> void:
_zones.push_back(zone)
if zone.water_hazard:
effects.play_splash()
# Play effect but don't emit signal
# Also don't play SFX -- kind of annoying tbh

View File

@ -1,11 +1,19 @@
class_name BallParticleEffects extends Node3D
## Controller for ball particle effects.
@export var splash_effect_scene: PackedScene
@onready var sand_particles: GPUParticles3D = %SandParticles
@onready var ball: GameBall = $".."
func play_splash() -> void:
var effect: Node3D = splash_effect_scene.instantiate()
ball.add_sibling(effect)
effect.global_position = ball.global_position
func play_effect(terrain: Terrain.Type) -> void:
global_rotation = Vector3.ZERO
match terrain:

View File

@ -10,6 +10,7 @@ const VELOCITY_ATTENUATION_SCALE := 400.0
@onready var grass_sfx_player: AudioStreamPlayer3D = %GrassSFXPlayer
@onready var concrete_sfx_player: AudioStreamPlayer3D = %ConcreteSFXPlayer
@onready var sand_sfx_player: AudioStreamPlayer3D = %SandSFXPlayer
@onready var splash_sfx_player: AudioStreamPlayer3D = %SplashSFXPlayer
func _force_attenuated_volume() -> float:
@ -35,3 +36,7 @@ func play_sfx(terrain: Terrain.Type) -> void:
_play(concrete_sfx_player)
Terrain.Type.SAND:
_play(sand_sfx_player)
func play_splash() -> void:
_play(splash_sfx_player)

View File

@ -152,6 +152,8 @@ func enter_zone(zone: BallZone) -> void:
_zones.push_back(zone)
if zone.water_hazard:
effects.play_splash()
sfx.play_splash()
entered_water.emit()

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=22 format=3 uid="uid://dfttci386ohip"]
[gd_scene load_steps=25 format=3 uid="uid://dfttci386ohip"]
[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/game_ball.gd" id="1_iwh2u"]
[ext_resource type="PhysicsMaterial" uid="uid://3bih72l068ic" path="res://src/equipment/balls/physics_ball/normal_physics.tres" id="1_l23pw"]
@ -10,8 +10,10 @@
[ext_resource type="AudioStream" uid="uid://3csnnhxndt67" path="res://assets/sound/sfx/ball/concrete5.wav" id="9_p0lmw"]
[ext_resource type="AudioStream" uid="uid://bbbp6wrkuhkek" path="res://assets/sound/sfx/ball/sand1.wav" id="10_b64mx"]
[ext_resource type="AudioStream" uid="uid://b5xx5t050i4p" path="res://assets/sound/sfx/ball/sand2.wav" id="11_ed8je"]
[ext_resource type="AudioStream" uid="uid://dutumw1vj854w" path="res://assets/sound/sfx/ball/splash1.wav" id="11_xmj6n"]
[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/ball_particle_effects.gd" id="12_7krl6"]
[ext_resource type="Texture2D" uid="uid://c47bkx508biqr" path="res://assets/sprites/particles/plasma.png" id="12_guipt"]
[ext_resource type="PackedScene" uid="uid://cm4bb3lg4mfd2" path="res://src/world/effects/splash/splash_effect.tscn" id="12_qlrvx"]
[sub_resource type="SphereMesh" id="SphereMesh_y0d13"]
material = ExtResource("3_rc7m1")
@ -95,6 +97,11 @@ streams_count = 2
stream_0/stream = ExtResource("10_b64mx")
stream_1/stream = ExtResource("11_ed8je")
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_nlbkf"]
playback_mode = 1
streams_count = 1
stream_0/stream = ExtResource("11_xmj6n")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_mwiw1"]
angle_min = -720.0
angle_max = 720.0
@ -176,6 +183,12 @@ unit_size = 40.0
max_db = 0.0
bus = &"SFX"
[node name="SplashSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true
stream = SubResource("AudioStreamRandomizer_nlbkf")
unit_size = 40.0
bus = &"SFX"
[node name="ManualSleepTimer" type="Timer" parent="."]
unique_name_in_owner = true
one_shot = true
@ -187,6 +200,7 @@ one_shot = true
[node name="ParticleEffects" type="Node3D" parent="."]
unique_name_in_owner = true
script = ExtResource("12_7krl6")
splash_effect_scene = ExtResource("12_qlrvx")
[node name="SandParticles" type="GPUParticles3D" parent="ParticleEffects"]
unique_name_in_owner = true

View File

@ -0,0 +1,265 @@
[gd_scene load_steps=25 format=3 uid="uid://cm4bb3lg4mfd2"]
[ext_resource type="Texture2D" uid="uid://bogj6pvl2a7d" path="res://assets/sprites/particles/light_03.png" id="1_xmlec"]
[ext_resource type="Texture2D" uid="uid://67r5iwexjlsc" path="res://assets/sprites/particles/dot.png" id="2_tcvw8"]
[ext_resource type="Texture2D" uid="uid://bjnil2wvvf35q" path="res://assets/sprites/particles/bubble.png" id="3_jouu7"]
[sub_resource type="Curve" id="Curve_tw8s6"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.5, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_pa3gt"]
curve = SubResource("Curve_tw8s6")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_vx5ug"]
direction = Vector3(0, 1, 0)
initial_velocity_min = 4.0
initial_velocity_max = 4.0
alpha_curve = SubResource("CurveTexture_pa3gt")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ik45x"]
transparency = 1
cull_mode = 2
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_color = Color(0.78, 0.930333, 1, 1)
albedo_texture = ExtResource("2_tcvw8")
texture_filter = 2
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_kmdkq"]
material = SubResource("StandardMaterial3D_ik45x")
size = Vector2(0.02, 0.02)
[sub_resource type="Curve" id="Curve_ul71f"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.75, 1), 0.0, 0.0, 0, 0, Vector2(0.751, 0), 0.0, 0.0, 0, 0, Vector2(0.8, 0), 0.0, 0.0, 0, 0, Vector2(0.801, 0.8), 0.0, 0.0, 0, 0, Vector2(0.85, 0.8), 0.0, 0.0, 0, 0, Vector2(0.851, 0), 0.0, 0.0, 0, 0, Vector2(0.9, 0), 0.0, 0.0, 0, 0, Vector2(0.901, 0.6), 0.0, 0.0, 0, 0, Vector2(0.95, 0.6), 0.0, 0.0, 0, 0, Vector2(0.951, 0), 0.0, 0.0, 0, 0]
point_count = 11
[sub_resource type="CurveTexture" id="CurveTexture_3sk7y"]
curve = SubResource("Curve_ul71f")
[sub_resource type="Curve" id="Curve_p2m8m"]
[sub_resource type="Curve" id="Curve_vydb8"]
_data = [Vector2(0, 1), 0.0, -2.42919, 0, 0, Vector2(0.250526, 0.0845791), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_yflu4"]
[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_ctsfi"]
curve_x = SubResource("Curve_p2m8m")
curve_y = SubResource("Curve_vydb8")
curve_z = SubResource("Curve_yflu4")
[sub_resource type="Curve" id="Curve_n4ky6"]
min_value = -2.0
max_value = 2.0
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_mvwav"]
min_value = -2.0
max_value = 2.0
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_15euc"]
min_value = -2.0
max_value = 2.0
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_4bki0"]
curve_x = SubResource("Curve_n4ky6")
curve_y = SubResource("Curve_mvwav")
curve_z = SubResource("Curve_15euc")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_v0h0y"]
lifetime_randomness = 0.33
direction = Vector3(0, 1, 0)
spread = 30.0
initial_velocity_min = 0.3
initial_velocity_max = 0.3
directional_velocity_min = 1.0
directional_velocity_max = 1.0
directional_velocity_curve = SubResource("CurveXYZTexture_ctsfi")
orbit_velocity_min = 0.5
orbit_velocity_max = 2.0
orbit_velocity_curve = SubResource("CurveXYZTexture_4bki0")
gravity = Vector3(0, 0, 0)
alpha_curve = SubResource("CurveTexture_3sk7y")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l1irr"]
transparency = 1
cull_mode = 2
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("3_jouu7")
texture_filter = 2
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_lvunc"]
material = SubResource("StandardMaterial3D_l1irr")
size = Vector2(0.1, 0.1)
[sub_resource type="Animation" id="Animation_ifddj"]
resource_name = "effect"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Decal:size")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(0.382, 1),
"update": 0,
"values": [Vector3(0, 4, 0), Vector3(4, 4, 4)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Decal:modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(0.618, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SprayParticles:emitting")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("BubbleParticles:emitting")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
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(2),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"queue_free"
}]
}
[sub_resource type="Animation" id="Animation_mg6va"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Decal:size")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(2, 4, 2)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Decal:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("SprayParticles:emitting")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("BubbleParticles:emitting")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_87fye"]
_data = {
"RESET": SubResource("Animation_mg6va"),
"effect": SubResource("Animation_ifddj")
}
[node name="SplashEffect" type="Node3D"]
[node name="Decal" type="Decal" parent="."]
size = Vector3(2, 4, 2)
texture_albedo = ExtResource("1_xmlec")
[node name="SprayParticles" type="GPUParticles3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
emitting = false
lifetime = 0.6
one_shot = true
explosiveness = 0.9
process_material = SubResource("ParticleProcessMaterial_vx5ug")
draw_pass_1 = SubResource("QuadMesh_kmdkq")
[node name="BubbleParticles" type="GPUParticles3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0)
emitting = false
amount = 2
lifetime = 3.0
one_shot = true
explosiveness = 0.8
process_material = SubResource("ParticleProcessMaterial_v0h0y")
draw_pass_1 = SubResource("QuadMesh_lvunc")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_87fye")
}
autoplay = "effect"

View File

@ -1,10 +1,11 @@
[gd_scene load_steps=5 format=3 uid="uid://cdtdvka0bssgy"]
[gd_scene load_steps=6 format=3 uid="uid://cdtdvka0bssgy"]
[ext_resource type="Script" path="res://src/world/level/level_catalog.gd" id="1_wjjeu"]
[ext_resource type="Resource" uid="uid://chewry1b1a28j" path="res://levels/debug_level/debug_island.tres" id="3_3eqbc"]
[ext_resource type="Script" path="res://src/world/level/level.gd" id="3_8lfqu"]
[ext_resource type="Resource" uid="uid://cfsy1nlfo4inx" path="res://levels/oneill/oneill.tres" id="4_8547s"]
[ext_resource type="Resource" uid="uid://3odongr8qm8e" path="res://levels/mall/mall.tres" id="5_htd21"]
[node name="LevelCatalog" type="Node"]
script = ExtResource("1_wjjeu")
levels = Array[ExtResource("3_8lfqu")]([ExtResource("3_3eqbc"), ExtResource("4_8547s")])
levels = Array[ExtResource("3_8lfqu")]([ExtResource("3_3eqbc"), ExtResource("4_8547s"), ExtResource("5_htd21")])

View File

@ -24,6 +24,8 @@ const PHYSICAL_LAYERS := {
1 << 28: Type.ROCK,
1 << 27: Type.METAL,
1 << 26: Type.GLASS,
1 << 25: Type.FAIRWAY,
1 << 24: Type.GREEN,
}

View File

@ -2,8 +2,8 @@
[ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"]
[ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"]
[ext_resource type="PackedScene" uid="uid://bm2o3mex10v11" path="res://levels/debug_level/debug_level.tscn" id="2_hn84b"]
[ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"]
[ext_resource type="PackedScene" uid="uid://ciqd8r8yt00y0" path="res://levels/mall/mall.tscn" id="2_u4xvm"]
[ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"]
[ext_resource type="Resource" uid="uid://c1pnqsddvey3m" path="res://src/equipment/clubs/drivers/debug_driver.tres" id="5_28hal"]
[ext_resource type="Script" path="res://src/world/play_manager/round_robin_manager.gd" id="5_h6mje"]
@ -167,7 +167,7 @@ _data = {
[node name="World" type="Node" groups=["WorldGroup"]]
script = ExtResource("1_ybjyx")
initial_level = ExtResource("2_hn84b")
initial_level = ExtResource("2_u4xvm")
manager = SubResource("Resource_rdjhi")
[node name="Level" type="Node3D" parent="."]