Rebrand project and refresh title presentation

This commit is contained in:
Alexander Sellite 2026-08-25 17:14:12 -04:00
parent 17fef2c5d4
commit 7ae20789a9
138 changed files with 1511 additions and 1498 deletions

View file

@ -20,12 +20,12 @@ signal friend_invite_received(
signal friend_invite_finished(success: bool, message: String)
const BASE_URL_SETTING: String = "network/discovery/base_url"
const BASE_URL_ENVIRONMENT: String = "NETFISHING_DISCOVERY_URL"
const BASE_URL_ENVIRONMENT: String = "straywild_DISCOVERY_URL"
const SETTINGS_PATH: String = "user://network_discovery.cfg"
const DEFAULT_ROOM_NAME: String = "Player's Server"
const LEGACY_DEFAULT_ROOM_NAME: String = "NETfishing Room"
const LEGACY_DEFAULT_ROOM_NAME: String = "straywild Room"
const LEGACY_DEDICATED_DEFAULT_ROOM_NAME: String = (
"NETfishing Dedicated Server"
"straywild Dedicated Server"
)
const ROOM_NAME_SUFFIX: String = "'s Server"
const MAX_ROOM_NAME_LENGTH: int = 48
@ -33,7 +33,7 @@ const HEARTBEAT_INTERVAL_SECONDS: float = 15.0
const REQUEST_TIMEOUT_SECONDS: float = 8.0
const TRAVERSAL_POLL_INTERVAL_SECONDS: float = 1.0
const JOIN_PROBE_INTERVAL_SECONDS: float = 0.35
const TRAVERSAL_PACKET_PREFIX: String = "NETFISHING_TRAVERSAL_V1 "
const TRAVERSAL_PACKET_PREFIX: String = "straywild_TRAVERSAL_V1 "
const UPNP_MAPPING_DURATION_SECONDS: int = 3600
const UPNP_RENEW_INTERVAL_SECONDS: float = 2700.0
const UPNP_RETRY_INTERVAL_SECONDS: float = 300.0
@ -560,7 +560,7 @@ func _configured_base_url() -> String:
if not value.is_empty() and not (
value.begins_with("https://") or value.begins_with("http://")
):
push_warning("Ignored invalid NETfishing discovery URL.")
push_warning("Ignored invalid straywild discovery URL.")
return ""
return value
@ -809,7 +809,7 @@ func _on_traversal_request_completed(
var port: int = int(endpoint.get("port", 0))
if address.is_empty() or port < 1 or port > 65535:
continue
var punch: PackedByteArray = "NETFISHING_PUNCH_V1".to_utf8_buffer()
var punch: PackedByteArray = "straywild_PUNCH_V1".to_utf8_buffer()
for _attempt: int in 3:
_session.send_traversal_packet(address, port, punch)
@ -895,13 +895,13 @@ func _configure_upnp_mapping(port: int) -> Dictionary:
var mapping_result: int = upnp.add_port_mapping(
port,
port,
"NETfishing",
"straywild",
"UDP",
UPNP_MAPPING_DURATION_SECONDS,
)
if mapping_result == UPNP.UPNP_RESULT_ONLY_PERMANENT_LEASE_SUPPORTED:
mapping_result = upnp.add_port_mapping(
port, port, "NETfishing", "UDP", 0
port, port, "straywild", "UDP", 0
)
return {
"success": mapping_result == UPNP.UPNP_RESULT_SUCCESS,
@ -1374,18 +1374,18 @@ func _discovery_version_mismatch_message(required_version: String) -> String:
match rejection:
NetworkProtocol.RejectionCode.CLIENT_OUTDATED:
return (
"Your NETfishing version is out of date. Update to %s to "
"Your straywild version is out of date. Update to %s to "
+ "enable public discovery. This room will not be listed "
+ "until you update."
) % required_version
NetworkProtocol.RejectionCode.SERVER_OUTDATED:
return (
"Public discovery is still on NETfishing %s. This room "
"Public discovery is still on straywild %s. This room "
+ "will not be listed until discovery is updated for %s."
) % [required_version, local_version]
_:
return (
"Public discovery requires NETfishing %s. This room will "
"Public discovery requires straywild %s. This room will "
+ "not be listed until both versions match."
) % required_version
@ -1577,4 +1577,4 @@ func _save_settings() -> void:
config.set_value("social", "share_presence", _presence_sharing)
var error: Error = config.save(SETTINGS_PATH)
if error != OK:
push_warning("Could not save local NETfishing discovery settings.")
push_warning("Could not save local straywild discovery settings.")

View file

@ -3,7 +3,7 @@ extends Node
signal operation_finished(success: bool, message: String)
const MAGIC := "NETFISHING_IDENTITY_BACKUP"
const MAGIC := "straywild_IDENTITY_BACKUP"
const FORMAT_VERSION := 1
const MAX_BACKUP_BYTES := 256 * 1024
const MIN_PASSPHRASE_LENGTH := 12
@ -189,7 +189,7 @@ func import_backup(
)
_finish(
bool(result.get("ok", false)),
"Identity imported. Restart NETfishing before multiplayer."
"Identity imported. Restart straywild before multiplayer."
if bool(result.get("ok", false))
else "Could not install this identity backup.",
)

View file

@ -5,7 +5,7 @@ const ALGORITHM: String = "RSA-3072-SHA256"
const FINGERPRINT_LENGTH: int = 64
const MAX_PUBLIC_KEY_BYTES: int = 8192
const MAX_SIGNATURE_BYTES: int = 1024
const DOMAIN_PREFIX: String = "NETFISHING"
const DOMAIN_PREFIX: String = "straywild"
const IDENTITY_VERSION: String = "identity_v1"

View file

@ -3,7 +3,7 @@ extends RefCounted
const WorldLayoutType = preload("res://world/world_layout.gd")
const PROTOCOL_VERSION: int = 10
const PROTOCOL_VERSION: int = 11
const GAME_BUILD: String = "prealpha"
const MAX_GAME_VERSION_LENGTH: int = 64
const MAX_DISPLAY_NAME_LENGTH: int = 24
@ -304,7 +304,7 @@ static func make_server_hello(
assigned_peer_id: int,
player_count: int,
max_players: int,
server_display_name: String = "NETfishing",
server_display_name: String = "straywild",
world_seed: int = DEFAULT_WORLD_SEED,
world_layout: StringName = WorldLayoutType.GENERATED,
) -> Dictionary:
@ -372,17 +372,17 @@ static func rejection_text(code: int) -> String:
return "You are not permitted to join this server."
RejectionCode.CLIENT_OUTDATED:
return (
"Your NETfishing version is out of date. "
"Your straywild version is out of date. "
+ "Update the game to join this server."
)
RejectionCode.SERVER_OUTDATED:
return (
"This server is out of date. "
+ "The host needs to update NETfishing."
+ "The host needs to update straywild."
)
RejectionCode.VERSION_MISMATCH:
return (
"This game and server use different NETfishing versions. "
"This game and server use different straywild versions. "
+ "Update both to the latest release."
)
_:

View file

@ -160,7 +160,7 @@ var _local_appearance_snapshot: Dictionary = (
)
var _moderation_disconnect_message := ""
var _host_port: int = 0
var _session_display_name: String = "NETfishing Room"
var _session_display_name: String = "straywild Room"
var _dedicated_host: bool = false
var _configured_operator_fingerprints: Dictionary[String, bool] = {}
var _session_operator_fingerprints: Dictionary[String, bool] = {}
@ -432,7 +432,7 @@ func set_peer_operator(
func set_session_display_name(value: String) -> void:
var cleaned: String = value.strip_edges().left(48)
if cleaned.is_empty():
cleaned = "NETfishing Room"
cleaned = "straywild Room"
if cleaned == _session_display_name:
return
_session_display_name = cleaned
@ -1187,7 +1187,7 @@ func resolve_server_trust(accepted: bool) -> void:
if not _server_trust.trust(
get_current_endpoint(),
str(_pending_server_proof["server_fingerprint"]),
"NETfishing",
"straywild",
):
_fail_identity("The server identity could not be pinned.")
return

View file

@ -879,7 +879,7 @@ func export_canvas_png(canvas_id: String) -> String:
_emit_hud_state("paint something before exporting")
return ""
if _data_root == null or _data_root.root_path.is_empty():
_emit_hud_state("choose a NETfishing data folder before exporting")
_emit_hud_state("choose a straywild data folder before exporting")
return ""
var export_directory: String = _artwork_directory()
if DirAccess.make_dir_recursive_absolute(export_directory) != OK:
@ -990,7 +990,7 @@ func _stamp_entry_is_unlocked(entry: Dictionary) -> bool:
func _next_artwork_export_path(directory: String) -> String:
var date_time: Dictionary = Time.get_datetime_dict_from_system()
var stem: String = "netfishing-artwork-%04d%02d%02d-%02d%02d%02d" % [
var stem: String = "straywild-artwork-%04d%02d%02d-%02d%02d%02d" % [
int(date_time.get("year", 0)),
int(date_time.get("month", 0)),
int(date_time.get("day", 0)),

View file

@ -9,11 +9,11 @@ const BOOTSTRAP_TEMP_PATH := "user://data_root_bootstrap.json.tmp"
const BOOTSTRAP_VERSION := 1
const MANIFEST_VERSION := 1
const LAYOUT_VERSION := 1
const MANIFEST_FILENAME := "netfishing_data.json"
const MANIFEST_FILENAME := "straywild_data.json"
const README_FILENAME := "README.txt"
const ENVIRONMENT_VARIABLE := "NETFISHING_DATA_DIR"
const CREATE_ENVIRONMENT_VARIABLE := "NETFISHING_CREATE_DATA_DIR"
const APPLICATION_ID := "netfishing"
const ENVIRONMENT_VARIABLE := "straywild_DATA_DIR"
const CREATE_ENVIRONMENT_VARIABLE := "straywild_CREATE_DATA_DIR"
const APPLICATION_ID := "straywild"
const APP_DATA_PORTABLE_PATH := "user://portable-data"
const PATH_ALLOWED: StringName = &"allowed"
const PATH_SOURCE_PROJECT: StringName = &"source_project"
@ -48,7 +48,7 @@ func resolve() -> bool:
mode = Mode.ENVIRONMENT_OVERRIDE
var environment_path: String = OS.get_environment(ENVIRONMENT_VARIABLE)
if not environment_path.is_absolute_path():
return _fail("NETFISHING_DATA_DIR must be an absolute path.")
return _fail("straywild_DATA_DIR must be an absolute path.")
if (
OS.get_environment(CREATE_ENVIRONMENT_VARIABLE) == "1"
and not FileAccess.file_exists(
@ -84,7 +84,7 @@ func default_visible_path() -> String:
var documents: String = OS.get_system_dir(OS.SYSTEM_DIR_DOCUMENTS)
if documents.is_empty():
return ""
var candidate: String = _normalize(documents.path_join("NETFISHING"))
var candidate: String = _normalize(documents.path_join("straywild"))
if not candidate.is_absolute_path():
return ""
var classification: StringName = classify_candidate_path(
@ -109,16 +109,16 @@ func select_new_root(path: String, app_data: bool = false) -> bool:
if FileAccess.file_exists(manifest_path):
var manifest: Dictionary = _read_json(manifest_path)
if not _valid_manifest(manifest):
return _fail("The selected folder has a malformed NETfishing manifest.")
return _fail("The selected folder has a malformed straywild manifest.")
root_id = str(manifest["root_id"])
else:
if not _directory_is_empty(normalized) and not app_data:
return _fail(
"Choose an empty folder or an existing NETfishing data folder."
"Choose an empty folder or an existing straywild data folder."
)
root_id = Crypto.new().generate_random_bytes(16).hex_encode()
if not _create_layout(normalized, root_id):
return _fail("The NETfishing data folder could not be created.")
return _fail("The straywild data folder could not be created.")
if not _write_bootstrap(normalized, root_id):
return _fail("The data-folder pointer could not be saved.")
root_path = normalized
@ -238,15 +238,15 @@ func _activate_existing(path: String, expected_id: String, permit_creation: bool
return false
var manifest_path: String = normalized.path_join(MANIFEST_FILENAME)
if not FileAccess.file_exists(manifest_path):
return _fail("The selected folder is not a NETfishing data folder.")
return _fail("The selected folder is not a straywild data folder.")
var manifest: Dictionary = _read_json(manifest_path)
if not _valid_manifest(manifest):
return _fail("The NETfishing data-folder manifest is malformed.")
return _fail("The straywild data-folder manifest is malformed.")
var found_id: String = str(manifest["root_id"])
if not expected_id.is_empty() and expected_id != found_id:
return _fail("The selected data folder does not match this device pointer.")
if not _test_writable(normalized):
return _fail("The NETfishing data folder is unavailable or unwritable.")
return _fail("The straywild data folder is unavailable or unwritable.")
root_path = normalized
root_id = found_id
requires_selection = false
@ -339,7 +339,7 @@ static func _is_same_or_child_path(candidate: String, reference: String) -> bool
func _test_writable(path: String) -> bool:
var probe: String = path.path_join(
".netfishing-write-%s.tmp" % device_id.left(12)
".straywild-write-%s.tmp" % device_id.left(12)
)
var file: FileAccess = FileAccess.open(probe, FileAccess.WRITE)
if file == null:
@ -370,7 +370,7 @@ func _create_layout(path: String, id: String) -> bool:
):
return false
var readme: String = (
"NETfishing player data\n\n"
"straywild player data\n\n"
+ "This folder is safe to synchronize with tools such as Syncthing.\n"
+ "Active private identity keys remain device-local.\n"
+ "Encrypted identity backups require their passphrase.\n"

View file

@ -7,8 +7,8 @@ const FORMAT_VERSION := 2
const MAX_RECORDS := 500
const MAX_FRIENDS := 200
const SOCIAL_TOKEN_LENGTH := 64
const PRESENCE_CHANNEL_DOMAIN := "NETFISHING_PRESENCE_V1:"
const INVITE_INBOX_DOMAIN := "NETFISHING_INVITE_V1:"
const PRESENCE_CHANNEL_DOMAIN := "straywild_PRESENCE_V1:"
const INVITE_INBOX_DOMAIN := "straywild_INVITE_V1:"
var _records: Dictionary = {}
var _loaded := false

View file

@ -33,12 +33,12 @@ static func migrate_legacy_to(
return {
"ok": false,
"requires_existing_root_decision": true,
"message": "The selected folder already contains NETfishing data.",
"message": "The selected folder already contains straywild data.",
}
if not _directory_empty(normalized):
return {
"ok": false,
"message": "Choose an empty folder or create a NETfishing subfolder.",
"message": "Choose an empty folder or create a straywild subfolder.",
}
var staging: String = "%s.migration-%s" % [
normalized, Crypto.new().generate_random_bytes(8).hex_encode()
@ -111,11 +111,11 @@ static func migrate_active_to(
"ok": false,
"requires_existing_root_decision": true,
"message": (
"The selected folder already contains NETfishing data. "
"The selected folder already contains straywild data. "
+ "Choose it through the existing-data recovery flow."
),
}
return {"ok": false, "message": "Choose an empty folder or a NETfishing subfolder."}
return {"ok": false, "message": "Choose an empty folder or a straywild subfolder."}
var staging: String = "%s.migration-%s" % [
normalized, Crypto.new().generate_random_bytes(8).hex_encode()
]
@ -209,7 +209,7 @@ static func replace_existing_with_legacy(
var normalized: String = destination.simplify_path().trim_suffix("/")
var manifest: String = normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)
if not FileAccess.file_exists(manifest):
return {"ok": false, "message": "The selected folder is not a NETfishing data root."}
return {"ok": false, "message": "The selected folder is not a straywild data root."}
var recovery: String = ProjectSettings.globalize_path(
"user://migration-recovery"
).path_join(
@ -230,7 +230,7 @@ static func replace_existing_with_active(
) -> Dictionary:
var normalized: String = destination.simplify_path().trim_suffix("/")
if not FileAccess.file_exists(normalized.path_join(PlayerDataRoot.MANIFEST_FILENAME)):
return {"ok": false, "message": "The selected folder is not a NETfishing data root."}
return {"ok": false, "message": "The selected folder is not a straywild data root."}
var recovery: String = ProjectSettings.globalize_path(
"user://migration-recovery"
).path_join(