summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordusoleil <howcansocksbereal@gmail.com>2022-09-20 19:08:43 -0400
committerdusoleil <howcansocksbereal@gmail.com>2022-09-20 19:08:43 -0400
commite726067048dc8771d83ec490767f3ca5ea063219 (patch)
tree103aa096b3ee6e20d716026070f78a5d89c51d62
parent743c526b46a1d1c6e0b7ef8b9b0f10b22ee43ab3 (diff)
downloadgame_jam49-e726067048dc8771d83ec490767f3ca5ea063219.tar.gz
game_jam49-e726067048dc8771d83ec490767f3ca5ea063219.zip
Incorporate new assets into the world gen
-rw-r--r--project.godot14
-rw-r--r--world/World.tscn3
-rw-r--r--world/chunk/ChunkGen.gd118
-rw-r--r--world/monuments/Dock.tscn163
-rw-r--r--world/monuments/DockMonument.gd7
-rw-r--r--world/monuments/lighthouse/lighthouseMonument.gd7
-rw-r--r--world/obstacles/Rock_coll.tres4
-rw-r--r--world/obstacles/Rock_mat.tres21
-rw-r--r--world/obstacles/Rock_mesh.tres4
-rw-r--r--world/obstacles/rock/rock_2.obj.import20
-rw-r--r--world/obstacles/rock/rock_3.obj.import20
-rw-r--r--world/obstacles/rock/rock_4.obj.import20
-rw-r--r--world/obstacles/rock/rock_collision.tres4
-rw-r--r--world/obstacles/rock/rock_lowres_mesh.tres (renamed from world/obstacles/Rock_lowres_mesh.tres)2
14 files changed, 169 insertions, 238 deletions
diff --git a/project.godot b/project.godot
index 67ac57f..98ac295 100644
--- a/project.godot
+++ b/project.godot
@@ -9,11 +9,6 @@
config_version=4
_global_script_classes=[ {
-"base": "Monument",
-"class": "DockMonument",
-"language": "GDScript",
-"path": "res://world/monuments/DockMonument.gd"
-}, {
"base": "Reference",
"class": "Monument",
"language": "GDScript",
@@ -23,11 +18,16 @@ _global_script_classes=[ {
"class": "Wave",
"language": "GDScript",
"path": "res://water/Wave.gd"
+}, {
+"base": "Monument",
+"class": "lighthouseMonument",
+"language": "GDScript",
+"path": "res://world/monuments/lighthouse/lighthouseMonument.gd"
} ]
_global_script_class_icons={
-"DockMonument": "",
"Monument": "",
-"Wave": ""
+"Wave": "",
+"lighthouseMonument": ""
}
[application]
diff --git a/world/World.tscn b/world/World.tscn
index e5b4a67..446ad03 100644
--- a/world/World.tscn
+++ b/world/World.tscn
@@ -7,7 +7,7 @@
radius = 1000.0
[sub_resource type="SphereShape" id=25]
-radius = 500.0
+radius = 800.0
[sub_resource type="SphereShape" id=26]
radius = 150.0
@@ -56,7 +56,6 @@ linear_damp = 0.5
[node name="CollisionShape" type="CollisionShape" parent="Chunks"]
shape = SubResource( 23 )
-
[connection signal="area_entered" from="ChunkRenderDistance" to="." method="_on_ChunkRenderDistance_area_entered"]
[connection signal="area_exited" from="ChunkRenderDistance" to="." method="_on_ChunkRenderDistance_area_exited"]
[connection signal="area_entered" from="ChunkRenderMid" to="." method="_on_ChunkRenderMid_area_entered"]
diff --git a/world/chunk/ChunkGen.gd b/world/chunk/ChunkGen.gd
index 4d0c94d..7420ae7 100644
--- a/world/chunk/ChunkGen.gd
+++ b/world/chunk/ChunkGen.gd
@@ -7,9 +7,8 @@ var _seed
var monuments = []
func _ready():
- #randomize()
- #self._seed = randi()
- self._seed = 0
+ randomize()
+ self._seed = randi()
self.noise.seed = self._seed
self.noise.seed = 0
self.noise.period = 16
@@ -17,9 +16,9 @@ func _ready():
self.rng.seed = self._seed
func setup_monuments():
- monuments.push_back(DockMonument.new(Transform(Basis().scaled(Vector3(2.0,2.0,2.0)),Vector3(0.0,0.0,-600.0))))
- monuments.push_back(DockMonument.new(Transform(Basis().rotated(Vector3.UP,PI),Vector3(0.0,0.0,600.0))))
- monuments.push_back(DockMonument.new(Transform(Basis().scaled(Vector3(1.5,1.5,1.5)).rotated(Vector3.UP,PI/4.0),Vector3(700.0,0.0,0.0))))
+ monuments.push_back(lighthouseMonument.new(Transform(Basis(),Vector3(300.0,0.0,-300.0))))
+ monuments.push_back(lighthouseMonument.new(Transform(Basis(),Vector3(0.0,0.0,-1000.0))))
+ monuments.push_back(lighthouseMonument.new(Transform(Basis(),Vector3(-500.0,0.0,-2500.0))))
func rng_2dv(coords:Vector2):
self.rng.seed = hash(coords)
@@ -70,48 +69,109 @@ func make_multimesh(name,cnt,mesh):
var multi = MultiMesh.new()
multi_inst.multimesh = multi
multi.transform_format = MultiMesh.TRANSFORM_3D
+ multi.mesh = mesh
multi.instance_count = cnt
multi.visible_instance_count = 0
- multi.mesh = mesh
return multi_inst
-var rock_mesh = preload("res://world/obstacles/Rock_mesh.tres")
-var rock_mat = preload("res://world/obstacles/Rock_mat.tres")
+var rock1_mesh = preload("res://world/obstacles/rock/rock_1.obj")
+var rock2_mesh = preload("res://world/obstacles/rock/rock_2.obj")
+var rock3_mesh = preload("res://world/obstacles/rock/rock_3.obj")
+var rock4_mesh = preload("res://world/obstacles/rock/rock_4.obj")
+var rock_mat = preload("res://world/obstacles/rock/rock_material.tres")
func gen_rocks(chunk,tree):
- rock_mesh.material = rock_mat
- var multi = make_multimesh("rocks",200,rock_mesh)
- tree.add_child(multi)
- iterate_chunk(chunk, multi.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [0.4,0.6,1.0,4.0,1.0,funcref(self,"make_rock")])
-
-var rock_lowres_mesh = preload("res://world/obstacles/Rock_lowres_mesh.tres")
+ var rocks1 = make_multimesh("rocks1",100,rock1_mesh)
+ var rocks2 = make_multimesh("rocks2",100,rock2_mesh)
+ var rocks3 = make_multimesh("rocks3",100,rock3_mesh)
+ var rocks4 = make_multimesh("rocks4",100,rock4_mesh)
+ rocks1.material_override = rock_mat
+ rocks2.material_override = rock_mat
+ rocks3.material_override = rock_mat
+ rocks4.material_override = rock_mat
+ tree.add_child(rocks1)
+ tree.add_child(rocks2)
+ tree.add_child(rocks3)
+ tree.add_child(rocks4)
+ iterate_chunk(chunk, rocks1.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [1,funcref(self,"make_rock")])
+ iterate_chunk(chunk, rocks2.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [3,funcref(self,"make_rock")])
+ iterate_chunk(chunk, rocks3.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [4,funcref(self,"make_rock")])
+ iterate_chunk(chunk, rocks4.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [2,funcref(self,"make_rock")])
+
+var rock_lowres_mesh = preload("res://world/obstacles/rock/rock_lowres_mesh.tres")
func gen_lowres_rocks(chunk,tree):
rock_lowres_mesh.material = rock_mat
var multi = make_multimesh("rocks",50,rock_lowres_mesh)
tree.add_child(multi)
- iterate_chunk(chunk, multi.multimesh, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0.4,0.6,2.0,8.0,0.5,funcref(self,"make_rock")])
+ iterate_chunk(chunk, multi.multimesh, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0,funcref(self,"make_rock")])
-var rock_coll = preload("res://world/obstacles/Rock_coll.tres")
+var rock_coll = preload("res://world/obstacles/rock/rock_collision.tres")
func gen_rock_hitboxes(chunk,tree):
- iterate_chunk(chunk, tree, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0.4,0.6,1.0,4.0,1.0,funcref(self,"make_rock_hitbox")])
+ iterate_chunk(chunk, tree, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0,funcref(self,"make_rock_hitbox")])
func rock_rng(chunk,rocks,chunk_coords:Vector2,data):
var coords = ChunkLoader.v3_coords(chunk_coords)
var basis = Basis()
+
var world_coords = chunk_coords + ChunkLoader.v2_coords(chunk.transform.origin)
self.rng_2dv(world_coords)
- var rng_val = self.rng.randf_range(0.0,TAU)
- basis = Basis(Vector3.UP,rng_val) * basis
var noise_val = self.noise.get_noise_2dv(world_coords * 0.125)
- if noise_val < data[0]:
+
+ #threshold to generate a rock
+ var noise_min_pointy = 0.4
+ var noise_max_pointy = 0.5
+ var noise_max_round = 0.7
+
+ if noise_val < noise_min_pointy:
return
- noise_val = min(noise_val,data[1])
- noise_val -= data[0]
- noise_val /= data[1] - data[0]
- noise_val = lerp(data[2],data[3],noise_val)
- basis = basis.scaled(Vector3.ONE*noise_val)
- basis = basis.scaled(Vector3(1.0,data[4],1.0))
- coords.y += (noise_val*data[4]*5.0)-5.0
- data[5].call_func(rocks,Transform(basis,coords))
+
+ var rock = self.rng.randi_range(1,4)
+ #choose a rock
+ if data[0] != 0:
+ if noise_val <= noise_max_pointy:
+ if rock != data[0]:
+ return
+ else:
+ if ((rock%2)+1) != data[0]:
+ return
+
+ #normalize noise from 0.0 to 1.0
+ noise_val = min(noise_val,noise_max_round)
+ noise_val -= noise_min_pointy
+ noise_val /= noise_max_round - noise_min_pointy
+
+ #random rotation
+ var rng_val = self.rng.randf_range(0.0,TAU)
+ basis = Basis(Vector3.UP,rng_val) * basis
+
+ #scale based on noise
+ var scale_min = 0.167
+ var scale_max = 0.667
+ var scale = lerp(scale_min,scale_max,noise_val)
+ basis = basis.scaled(Vector3.ONE*scale)
+
+ #scale the pointy rocks taller
+ if rock == 3 || rock == 4:
+ rng_val = self.rng.randf_range(1.0,1.25)
+ scale = rng_val * scale
+ basis = basis.scaled(Vector3(1.0,rng_val,1.0))
+
+ #normalize height
+ match rock:
+ 0:
+ coords.y += 30.0 * scale
+ 1:
+ coords.y += 31.5 * scale
+ 2:
+ coords.y += 27.5 * scale
+ 3:
+ coords.y += 42.5 * scale
+ 4:
+ coords.y += 40.0 * scale
+
+ #shift them all slightly down
+ coords.y -= 5.0
+
+ data[1].call_func(rocks,Transform(basis,coords))
func make_rock(rocks,xform:Transform):
rocks.visible_instance_count += 1
diff --git a/world/monuments/Dock.tscn b/world/monuments/Dock.tscn
deleted file mode 100644
index 5a21576..0000000
--- a/world/monuments/Dock.tscn
+++ /dev/null
@@ -1,163 +0,0 @@
-[gd_scene load_steps=14 format=2]
-
-[sub_resource type="OpenSimplexNoise" id=1]
-period = 128.0
-persistence = 1.0
-lacunarity = 4.0
-
-[sub_resource type="NoiseTexture" id=2]
-noise = SubResource( 1 )
-
-[sub_resource type="NoiseTexture" id=3]
-seamless = true
-as_normalmap = true
-noise = SubResource( 1 )
-
-[sub_resource type="SpatialMaterial" id=4]
-albedo_color = Color( 0.905882, 0.823529, 0.427451, 1 )
-albedo_texture = SubResource( 2 )
-emission_enabled = true
-emission = Color( 0.905882, 0.823529, 0.427451, 1 )
-emission_energy = 0.2
-emission_operator = 0
-emission_on_uv2 = false
-normal_enabled = true
-normal_scale = 1.0
-normal_texture = SubResource( 3 )
-uv1_triplanar = true
-
-[sub_resource type="SphereMesh" id=5]
-material = SubResource( 4 )
-radius = 50.0
-height = 50.0
-
-[sub_resource type="SpatialMaterial" id=6]
-emission_enabled = true
-emission = Color( 1, 1, 1, 1 )
-emission_energy = 0.25
-emission_operator = 0
-emission_on_uv2 = false
-
-[sub_resource type="CubeMesh" id=7]
-material = SubResource( 6 )
-size = Vector3( 150, 50, 100 )
-
-[sub_resource type="Gradient" id=8]
-interpolation_mode = 1
-offsets = PoolRealArray( 0.0724138, 0.52069 )
-colors = PoolColorArray( 1, 1, 1, 1, 0, 0, 0, 1 )
-
-[sub_resource type="GradientTexture2D" id=9]
-gradient = SubResource( 8 )
-width = 5
-height = 5
-fill = 1
-fill_from = Vector2( 0.5, 0.5 )
-repeat = 1
-
-[sub_resource type="SpatialMaterial" id=10]
-albedo_color = Color( 0.521569, 0.298039, 0.00392157, 1 )
-albedo_texture = SubResource( 9 )
-uv1_triplanar = true
-
-[sub_resource type="PrismMesh" id=11]
-material = SubResource( 10 )
-size = Vector3( 150, 50, 100 )
-
-[sub_resource type="CubeMesh" id=12]
-material = SubResource( 10 )
-size = Vector3( 5, 50, 150 )
-
-[sub_resource type="CubeMesh" id=13]
-material = SubResource( 10 )
-size = Vector3( 100, 5, 30 )
-
-[node name="Dock" type="Spatial"]
-
-[node name="Shore" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -15, 0 )
-
-[node name="MeshInstance" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -100, 0, 0 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance2" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 100, 0, 0 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance7" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -100, 0, 70 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance8" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 100, 0, 70 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance3" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -30, 0, -50 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance4" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30, 0, -50 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance5" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -30, 0, -140 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance9" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -115, 0, -50 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance10" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -115, 0, -140 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance6" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30, 0, -140 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance11" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 115, 0, -50 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="MeshInstance12" type="MeshInstance" parent="Shore"]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 115, 0, -140 )
-mesh = SubResource( 5 )
-skeleton = NodePath("../..")
-
-[node name="House" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 25, -80 )
-
-[node name="MeshInstance" type="MeshInstance" parent="House"]
-mesh = SubResource( 7 )
-
-[node name="MeshInstance2" type="MeshInstance" parent="House"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 0 )
-mesh = SubResource( 11 )
-
-[node name="Dock" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -10, 50 )
-
-[node name="MeshInstance" type="MeshInstance" parent="Dock"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0 )
-mesh = SubResource( 12 )
-
-[node name="MeshInstance2" type="MeshInstance" parent="Dock"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0 )
-mesh = SubResource( 12 )
-
-[node name="MeshInstance3" type="MeshInstance" parent="Dock"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -40 )
-mesh = SubResource( 13 )
diff --git a/world/monuments/DockMonument.gd b/world/monuments/DockMonument.gd
deleted file mode 100644
index 6aa1495..0000000
--- a/world/monuments/DockMonument.gd
+++ /dev/null
@@ -1,7 +0,0 @@
-extends Monument
-class_name DockMonument
-
-var packed_scene = preload("res://world/monuments/Dock.tscn")
-
-func _init(xform:Transform).(xform,Vector2(300.0,300.0),packed_scene):
- pass
diff --git a/world/monuments/lighthouse/lighthouseMonument.gd b/world/monuments/lighthouse/lighthouseMonument.gd
new file mode 100644
index 0000000..ad30893
--- /dev/null
+++ b/world/monuments/lighthouse/lighthouseMonument.gd
@@ -0,0 +1,7 @@
+extends Monument
+class_name lighthouseMonument
+
+var packed_scene = preload("res://world/monuments/lighthouse/lighthouse.tscn")
+
+func _init(xform:Transform).(xform,Vector2(300.0,300.0),packed_scene):
+ pass
diff --git a/world/obstacles/Rock_coll.tres b/world/obstacles/Rock_coll.tres
deleted file mode 100644
index b06d080..0000000
--- a/world/obstacles/Rock_coll.tres
+++ /dev/null
@@ -1,4 +0,0 @@
-[gd_resource type="ConvexPolygonShape" format=2]
-
-[resource]
-points = PoolVector3Array( 2.5, -5, 2.5, 2.5, -5, -2.5, -2.5, -5, -2.5, -2.5, -5, 2.5, 0, 5, 2.5, 0, 5, -2.5 )
diff --git a/world/obstacles/Rock_mat.tres b/world/obstacles/Rock_mat.tres
deleted file mode 100644
index 8547487..0000000
--- a/world/obstacles/Rock_mat.tres
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_resource type="SpatialMaterial" load_steps=4 format=2]
-
-[sub_resource type="OpenSimplexNoise" id=3]
-octaves = 4
-period = 32.0
-
-[sub_resource type="NoiseTexture" id=4]
-noise = SubResource( 3 )
-
-[sub_resource type="NoiseTexture" id=5]
-seamless = true
-as_normalmap = true
-bump_strength = 32.0
-noise = SubResource( 3 )
-
-[resource]
-albedo_color = Color( 0.231373, 0.231373, 0.231373, 1 )
-albedo_texture = SubResource( 4 )
-normal_enabled = true
-normal_scale = 1.0
-normal_texture = SubResource( 5 )
diff --git a/world/obstacles/Rock_mesh.tres b/world/obstacles/Rock_mesh.tres
deleted file mode 100644
index bced5b6..0000000
--- a/world/obstacles/Rock_mesh.tres
+++ /dev/null
@@ -1,4 +0,0 @@
-[gd_resource type="PrismMesh" format=2]
-
-[resource]
-size = Vector3( 5, 10, 5 )
diff --git a/world/obstacles/rock/rock_2.obj.import b/world/obstacles/rock/rock_2.obj.import
new file mode 100644
index 0000000..fa1cd12
--- /dev/null
+++ b/world/obstacles/rock/rock_2.obj.import
@@ -0,0 +1,20 @@
+[remap]
+
+importer="wavefront_obj"
+type="Mesh"
+path="res://.import/rock_2.obj-6b46dcd26b50100b97b7de27c9d2442e.mesh"
+
+[deps]
+
+files=[ "res://.import/rock_2.obj-6b46dcd26b50100b97b7de27c9d2442e.mesh" ]
+
+source_file="res://world/obstacles/rock/rock_2.obj"
+dest_files=[ "res://.import/rock_2.obj-6b46dcd26b50100b97b7de27c9d2442e.mesh", "res://.import/rock_2.obj-6b46dcd26b50100b97b7de27c9d2442e.mesh" ]
+
+[params]
+
+generate_tangents=true
+scale_mesh=Vector3( 1, 1, 1 )
+offset_mesh=Vector3( 0, 0, 0 )
+octahedral_compression=true
+optimize_mesh_flags=4286
diff --git a/world/obstacles/rock/rock_3.obj.import b/world/obstacles/rock/rock_3.obj.import
new file mode 100644
index 0000000..2b6e51a
--- /dev/null
+++ b/world/obstacles/rock/rock_3.obj.import
@@ -0,0 +1,20 @@
+[remap]
+
+importer="wavefront_obj"
+type="Mesh"
+path="res://.import/rock_3.obj-25a12d271c599173a2a802010b38296e.mesh"
+
+[deps]
+
+files=[ "res://.import/rock_3.obj-25a12d271c599173a2a802010b38296e.mesh" ]
+
+source_file="res://world/obstacles/rock/rock_3.obj"
+dest_files=[ "res://.import/rock_3.obj-25a12d271c599173a2a802010b38296e.mesh", "res://.import/rock_3.obj-25a12d271c599173a2a802010b38296e.mesh" ]
+
+[params]
+
+generate_tangents=true
+scale_mesh=Vector3( 1, 1, 1 )
+offset_mesh=Vector3( 0, 0, 0 )
+octahedral_compression=true
+optimize_mesh_flags=4286
diff --git a/world/obstacles/rock/rock_4.obj.import b/world/obstacles/rock/rock_4.obj.import
new file mode 100644
index 0000000..40d0a17
--- /dev/null
+++ b/world/obstacles/rock/rock_4.obj.import
@@ -0,0 +1,20 @@
+[remap]
+
+importer="wavefront_obj"
+type="Mesh"
+path="res://.import/rock_4.obj-e336a57eb233d92daa5c7d433c8532c7.mesh"
+
+[deps]
+
+files=[ "res://.import/rock_4.obj-e336a57eb233d92daa5c7d433c8532c7.mesh" ]
+
+source_file="res://world/obstacles/rock/rock_4.obj"
+dest_files=[ "res://.import/rock_4.obj-e336a57eb233d92daa5c7d433c8532c7.mesh", "res://.import/rock_4.obj-e336a57eb233d92daa5c7d433c8532c7.mesh" ]
+
+[params]
+
+generate_tangents=true
+scale_mesh=Vector3( 1, 1, 1 )
+offset_mesh=Vector3( 0, 0, 0 )
+octahedral_compression=true
+optimize_mesh_flags=4286
diff --git a/world/obstacles/rock/rock_collision.tres b/world/obstacles/rock/rock_collision.tres
new file mode 100644
index 0000000..c5b2554
--- /dev/null
+++ b/world/obstacles/rock/rock_collision.tres
@@ -0,0 +1,4 @@
+[gd_resource type="SphereShape" format=2]
+
+[resource]
+radius = 60.0
diff --git a/world/obstacles/Rock_lowres_mesh.tres b/world/obstacles/rock/rock_lowres_mesh.tres
index 910d7f6..c78ae9f 100644
--- a/world/obstacles/Rock_lowres_mesh.tres
+++ b/world/obstacles/rock/rock_lowres_mesh.tres
@@ -1,4 +1,4 @@
[gd_resource type="CubeMesh" format=2]
[resource]
-size = Vector3( 5, 10, 5 )
+size = Vector3( 60, 60, 60 )