diff --git a/.gitignore b/.gitignore index 0af181c..a56a938 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ # Godot 4+ specific ignores .godot/ /android/ +/builds/ diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..6386c22 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,89 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="builds/*,playtest/*,scripts/*" +export_path="builds/playtest-0.1/windows-x86_64/netfishing.exe" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="0.1.0.0" +application/product_version="0.1.0.0" +application/company_name="" +application/product_name="NETFISHING" +application/file_description="NETFISHING Pre-Alpha Playtest 0.1" +application/copyright="" +application/trademarks="" +application/export_angle=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash\nexport DISPLAY=:0\nunzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"\n\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash\nkill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")\nrm -rf \"{temp_dir}\"" + +[preset.1] + +name="Linux Desktop" +platform="Linux" +runnable=true +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="builds/*,playtest/*,scripts/*" +export_path="builds/playtest-0.1/linux-x86_64/netfishing" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +binary_format/architecture="x86_64" +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash\nexport DISPLAY=:0\nunzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"\nchmod +x \"{temp_dir}/{exe_name}\"\n\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash\nkill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")\nrm -rf \"{temp_dir}\"" diff --git a/playtest/README-PLAYTEST.txt b/playtest/README-PLAYTEST.txt new file mode 100644 index 0000000..03f5938 --- /dev/null +++ b/playtest/README-PLAYTEST.txt @@ -0,0 +1,96 @@ +NETFISHING +Pre-Alpha Playtest 0.1 +Version 0.1.0-prealpha + +Thank you for trying this early private playtest. + +NETFISHING is currently a local gameplay prototype for a future +multiplayer-first game. Networking and multiplayer are NOT implemented in +this build. + +INSTALLATION + +1. Extract the entire ZIP into a new folder. +2. Keep the executable and netfishing.pck together. +3. Launch netfishing.exe on Windows or netfishing on Linux. + +Windows may show a warning for an unsigned application. This private build is +not code signed. Only run a copy received from the playtest organizer. + +Linux users may need to allow execution: + + chmod +x netfishing + +CONTROLS + +Move W / A / S / D or left stick +Jump Space +Sprint Shift +Sneak Ctrl +Slow walk Alt +Rotate camera Hold right mouse, or use right stick +Zoom camera Mouse wheel +Cast / withdraw / reel Left mouse +Inventory and Logbook Tab +Game Menu / back Escape + +FISHING + +- Hold left mouse to select cast distance, then release to cast. +- The target preview shows whether the selected landing point is fishable. +- While waiting, hold left mouse to withdraw the bobber. +- A bite starts the chase automatically. +- Hold left mouse to advance the green catch meter. +- At barriers, use distinct left-click presses to damage the barrier. +- Do not let the red chase meter catch the green meter. +- Accessibility auto-click can be enabled in Settings. + +FEATURES TO TRY + +- Movement, jumping, camera rotation, and zoom +- Short, medium, and maximum-distance casts +- Valid water and invalid land casts +- Manual withdrawal before a bite +- Barrier-and-chase catching +- Accessibility auto-click settings +- Catch showcase and fish size variation +- Inventory, Logbook, favorites, and sorting +- Pelican selling and wallet updates +- Save, Continue, New Game, and Delete Save +- Game Menu and persistent camera settings +- Water-entry recovery from several shores + +SAVES AND SETTINGS + +Progression and settings are stored in Godot's per-user application-data +directory, outside this extracted game folder. Delete Save removes progression +but preserves settings. + +Windows: + %APPDATA%\Godot\app_userdata\NETFISHING\ + +Linux: + ~/.local/share/godot/app_userdata/NETFISHING/ + +This is an early save format. Keep expectations modest and report any failure +to Continue, save, sell, favorite, or retain an individual fish. + +FEEDBACK + +Please include: + +- Your operating system and whether you used mouse/keyboard or controller +- What you were doing when a problem occurred +- Whether the issue repeated after restarting +- Screenshots or a short recording when useful +- How movement, casting, chase pressure, barrier clicking, menus, and camera + controls felt + +KNOWN PRE-ALPHA LIMITATIONS + +- Multiplayer/networking is not implemented. +- Fish and character art are temporary. +- UI and balance values are placeholders. +- There is no audio. +- There is no installer or automatic updater. +- Windows builds are unsigned. diff --git a/project.godot b/project.godot index ee3e77f..7278211 100644 --- a/project.godot +++ b/project.godot @@ -10,7 +10,8 @@ config_version=5 [application] -config/name="netfishing" +config/name="NETFISHING" +config/version="0.1.0-prealpha" run/main_scene="res://main/main.tscn" config/features=PackedStringArray("4.7", "GL Compatibility") config/icon="res://icon.svg" diff --git a/scripts/build_playtest.sh b/scripts/build_playtest.sh new file mode 100755 index 0000000..3cf206e --- /dev/null +++ b/scripts/build_playtest.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +set -euo pipefail + +readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)" +readonly BUILD_ROOT="${PROJECT_ROOT}/builds/playtest-0.1" +readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64" +readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64" +readonly README_SOURCE="${PROJECT_ROOT}/playtest/README-PLAYTEST.txt" +readonly WINDOWS_ZIP="${BUILD_ROOT}/netfishing-prealpha-0.1-windows-x86_64.zip" +readonly LINUX_ZIP="${BUILD_ROOT}/netfishing-prealpha-0.1-linux-x86_64.zip" +readonly GODOT_BIN="${GODOT_BIN:-godot}" + +if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then + echo "error: project.godot was not found" >&2 + exit 1 +fi + +if [[ ! -f "${README_SOURCE}" ]]; then + echo "error: playtest README was not found" >&2 + exit 1 +fi + +rm -rf -- "${BUILD_ROOT}" +mkdir -p -- "${WINDOWS_DIR}" "${LINUX_DIR}" + +"${GODOT_BIN}" \ + --headless \ + --path "${PROJECT_ROOT}" \ + --export-release "Windows Desktop" \ + "${WINDOWS_DIR}/netfishing.exe" + +"${GODOT_BIN}" \ + --headless \ + --path "${PROJECT_ROOT}" \ + --export-release "Linux Desktop" \ + "${LINUX_DIR}/netfishing" + +for required_file in \ + "${WINDOWS_DIR}/netfishing.exe" \ + "${WINDOWS_DIR}/netfishing.pck" \ + "${LINUX_DIR}/netfishing" \ + "${LINUX_DIR}/netfishing.pck"; do + if [[ ! -s "${required_file}" ]]; then + echo "error: expected export output is missing: ${required_file}" >&2 + exit 1 + fi +done + +chmod +x -- "${LINUX_DIR}/netfishing" +cp -- "${README_SOURCE}" "${WINDOWS_DIR}/README-PLAYTEST.txt" +cp -- "${README_SOURCE}" "${LINUX_DIR}/README-PLAYTEST.txt" + +( + cd -- "${BUILD_ROOT}" + zip -X -q -r "$(basename -- "${WINDOWS_ZIP}")" windows-x86_64 + zip -X -q -r "$(basename -- "${LINUX_ZIP}")" linux-x86_64 + sha256sum \ + "$(basename -- "${WINDOWS_ZIP}")" \ + "$(basename -- "${LINUX_ZIP}")" \ + > SHA256SUMS +) + +echo "Playtest packages created in ${BUILD_ROOT}" diff --git a/ui/title_screen.tscn b/ui/title_screen.tscn index 4815567..dce846f 100644 --- a/ui/title_screen.tscn +++ b/ui/title_screen.tscn @@ -60,6 +60,13 @@ layout_mode = 2 text = "A cozy social fishing game" horizontal_alignment = 1 +[node name="PlaytestLabel" type="Label" parent="Center/MainPanel/Margin/Content"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.682, 0.733, 0.761, 1) +theme_override_font_sizes/font_size = 13 +text = "Pre-Alpha Playtest 0.1" +horizontal_alignment = 1 + [node name="Spacer" type="Control" parent="Center/MainPanel/Margin/Content"] custom_minimum_size = Vector2(0, 12) layout_mode = 2