Prepare v0.6.8-alpha release

This commit is contained in:
Alexander Sellite 2026-08-13 18:59:19 -04:00
parent dbe0a7b313
commit 31d459b3a7
15 changed files with 139 additions and 41 deletions

View file

@ -168,14 +168,14 @@ func _run() -> void:
"error": {
"code": "game_version_mismatch",
"message": "generic mismatch",
"required_game_version": "0.6.8-alpha",
"required_game_version": "99.0.0-alpha",
},
}
var outdated_message: String = str(
discovery.call("_request_failure", outdated_discovery_error)
)
assert("out of date" in outdated_message)
assert("0.6.8-alpha" in outdated_message)
assert("99.0.0-alpha" in outdated_message)
assert("will not be listed" in outdated_message)
discovery.set(
"_host_request_kind",
@ -196,7 +196,7 @@ func _run() -> void:
"error": {
"code": "game_version_mismatch",
"message": "generic mismatch",
"required_game_version": "0.6.6-alpha",
"required_game_version": "0.0.0-alpha",
},
}
var newer_message: String = str(

View file

@ -84,6 +84,7 @@ func _run() -> void:
main.queue_free()
for _frame: int in 4:
await process_frame
await create_timer(0.1).timeout
quit()
@ -97,7 +98,10 @@ func _run_multiplayer_host() -> void:
var session := main.get_node("%NetworkSession") as NetworkSession
assert(session.set_host_open(true))
var client_connected := false
var connection_deadline: int = Time.get_ticks_msec() + 30000
# Loading the full client world can take longer on a cold import. Keep the
# host available until the client has completed authentication rather than
# timing out while the client is still starting.
var connection_deadline: int = Time.get_ticks_msec() + 60000
while Time.get_ticks_msec() < connection_deadline:
await process_frame
if session.get_authenticated_peer_ids().size() >= 2:

View file

@ -32,7 +32,7 @@ func _run_host() -> void:
"%NetworkFishingService"
) as NetworkFishingService
var join_deadline: int = Time.get_ticks_msec() + 20000
var join_deadline: int = Time.get_ticks_msec() + 60000
while (
Time.get_ticks_msec() < join_deadline
and session.get_authenticated_peer_ids().size() < 2
@ -55,7 +55,7 @@ func _run_host() -> void:
var remote_visuals := remote_avatar.get_node("Visuals") as Node3D
remote_visuals.rotation.y = PI * 0.5
session.publish_authoritative_teleport(remote_peer_id)
var aiming_deadline: int = Time.get_ticks_msec() + 5000
var aiming_deadline: int = Time.get_ticks_msec() + 15000
while (
Time.get_ticks_msec() < aiming_deadline
and int(remote_avatar.get("_fishing_visual_phase"))
@ -110,7 +110,7 @@ func _run_host() -> void:
Player.FishingVisualPhase.FISHING,
]
)
var sitting_deadline: int = Time.get_ticks_msec() + 3000
var sitting_deadline: int = Time.get_ticks_msec() + 10000
while Time.get_ticks_msec() < sitting_deadline and not remote_avatar.is_sitting():
await process_frame
assert(remote_avatar.is_sitting())
@ -139,6 +139,12 @@ func _run_host() -> void:
int(remote_avatar.get("_fishing_visual_phase"))
== Player.FishingVisualPhase.RETRACT
)
var retract_animation_deadline: int = Time.get_ticks_msec() + 3000
while (
Time.get_ticks_msec() < retract_animation_deadline
and remote_animation_player.current_animation != &"retract_sit"
):
await process_frame
assert(remote_animation_player.current_animation == &"retract_sit")
var completion_deadline: int = Time.get_ticks_msec() + 12000
@ -209,7 +215,7 @@ func _run_client() -> void:
for _frame: int in 30:
await physics_frame
player.set_fishing_visual(false)
player.call("_set_sitting", true)
player.call("_set_sitting", true, true)
assert(player.is_sitting())
for _frame: int in 15:
await physics_frame
@ -303,6 +309,12 @@ func _run_client() -> void:
int(player.get("_fishing_visual_phase"))
== Player.FishingVisualPhase.RETRACT
)
var retract_animation_deadline: int = Time.get_ticks_msec() + 3000
while (
Time.get_ticks_msec() < retract_animation_deadline
and character_animation_player.current_animation != &"retract_sit"
):
await process_frame
assert(character_animation_player.current_animation == &"retract_sit")
var bobber := fishing_spot.get_node(
"FishingPresentation/Bobber"

View file

@ -162,6 +162,34 @@ func _validate_portable_water_body() -> void:
func _validate_starter_region_surfaces() -> void:
var region := StarterRegionScene.instantiate() as Node3D
root.add_child(region)
var ocean_region := region.get_node(
"WaterBodies/Ocean/FishingRegions/OceanFishingRegion"
) as FishableWaterRegionType
var minimum_x: float = INF
var maximum_x: float = -INF
var minimum_z: float = INF
var maximum_z: float = -INF
for child: Node in ocean_region.get_children():
var shape_node := child as CollisionShape3D
assert(shape_node != null and shape_node.shape is BoxShape3D)
var box := shape_node.shape as BoxShape3D
assert(is_equal_approx(box.size.y, 2.0))
minimum_x = minf(minimum_x, shape_node.position.x - box.size.x * 0.5)
maximum_x = maxf(maximum_x, shape_node.position.x + box.size.x * 0.5)
minimum_z = minf(minimum_z, shape_node.position.z - box.size.z * 0.5)
maximum_z = maxf(maximum_z, shape_node.position.z + box.size.z * 0.5)
var ocean_footprint := Vector2(
maximum_x - minimum_x,
maximum_z - minimum_z,
)
assert(is_equal_approx(
ocean_footprint.x * ocean_footprint.y,
12840.0,
))
assert(is_equal_approx(
ocean_footprint.x / 107.0,
ocean_footprint.y / 80.0,
))
var fishing_spot := FishingSpotScene.instantiate() as FishingSpotType
root.add_child(fishing_spot)
await physics_frame
@ -179,6 +207,14 @@ func _validate_starter_region_surfaces() -> void:
)
assert(ocean.is_fishable())
assert(is_equal_approx(ocean.position.y, -0.45))
var expanded_ocean: FishingSurfaceSampleType = (
fishing_spot.resolve_fishing_surface(
Vector3(72.0, -0.45, 0.0),
4.0,
)
)
assert(expanded_ocean.is_fishable())
assert(is_equal_approx(expanded_ocean.position.y, -0.45))
var covered_ocean: FishingSurfaceSampleType = (
fishing_spot.resolve_fishing_surface(
Vector3(20.0, -0.45, 0.0),

View file

@ -97,6 +97,7 @@ func _run() -> void:
main.queue_free()
for _frame: int in 4:
await process_frame
await create_timer(0.1).timeout
quit()