- Главная
- Плагины
- Для удовольствия
- dsh-whale-valley
dsh-whale-valley
long432120-blip/dsh-whale-valley
«История китовой долины»: пиксельный фермерский городок для жизни с девушкой-китом. Настольный питомец для DeepSeek Harness; можно играть и отдельно в браузере.
Установка
dsh plugin --profile web add github:long432120-blip/dsh-whale-valleyREADME
她有自己的作息:早上待在房間、下午去花園、傍晚散步、晚上回家睡覺。 你不用操控她,點她說話、陪她釣魚種田、帶她去鎮上逛逛,晚上一起去酒館坐坐。 每天睡前,她會把今天和你一起做的事寫成一篇小小的像素日記。
🎨 美術素材大多是 AI 生成(ChatGPT、豆包),來源與授權見 ASSETS.md。
📸 畫面
![]() | ![]() | ![]() |
| 摸摸頭 連點三下 | 釣魚 18 種魚、湖中女神 | 牧場 種田、養雞養牛 |
![]() | ![]() | ![]() |
| 酒館 晚上大家都在 | 四季 每 7 天換一季 | 日記 睡前寫一篇 |
✨ 有什麼
| 🏡 她自己生活 | 照時段在房間、花園、牧場、海邊、小鎮之間移動;點她說話,連點三下摸摸頭 |
| 🎣 釣魚與圖鑑 | 不同季節、天氣、時段釣到不同的魚;集滿一組有獎勵;還有湖中女神 |
| 🌱 種田與牧場 | 播種、澆水、灑水器、收成;雞鴨牛羊會長大、會生產;加工機器做果醬、燻魚 |
| 🏘️ 小鎮 | 花店小葵、鐵匠阿綱、漁夫老陳、酒館老闆老吳;任務、節慶、告白結婚 |
| 🍺 休閒 | 酒館猜硬幣、打牌;廚房吃飯、浴室泡澡游泳、遊戲室打電動;擺家具 |
| 🌦️ 四季天氣 | 跟現實時間同步;晴天、雨天、雷雨、雪天;櫻花、螢火蟲、落葉、雪花 |
| 📔 日記與小願望 | 每天一個小願望;睡前自動寫日記(有 AI 時由 AI 改寫) |
| 💬 AI 對話(選用) | 接 DeepSeek,她會看著時間、天氣、體力、心情說話;記得最近 3 輪對話 |
| 🏡 串門 | ⚙️ 設定產生「邀請碼」貼給朋友,朋友就能來你的農場逛逛、幫你澆水、留一封信 |
| 🏪 交易所 | 今日市集;把東西擺上自己的攤位、傳攤位碼給朋友買;寵物也能用領養碼送給朋友 |
| 🗨️ 聊天室 | 預設是本地模擬(鎮上的居民和旅人會回你);附一個聊天伺服器(npm run chat:server),架起來就能和同一個網路的朋友即時聊天(目前要在網址加 ?dev&chat=ws://… 連線);有髒話過濾 |
| 🌏 繁體/简体 | ⚙️ 設定切換,連用語一起換(存檔→存档、網路→网络) |
| ☰ 遊戲選單 | 左上角 ☰ 或 Esc,在畫面正中央:繼續、💾 3 格存檔/讀檔、✨ 開新遊戲、⚙️ 設定、🚪 結束遊戲 |
| 📴 不用連外網 | 不載 Google Fonts、CDN、Firebase、GA;斷網也能玩(只有 AI 對話要連 DeepSeek)。npm run check:offline 自動檢查 |
🚀 開始玩
🎮 直接玩(免安裝)
- 自己打一包(需要 Node.js 22+):
npm install然後npm run demo:standalone - 雙擊
demo/pixel-standalone.html,用 Chrome 或 Edge 開 - 打包好的 zip 之後會放上 Releases(目前還沒有)
存檔在你自己的瀏覽器裡,每個動作都會自動存檔。玩法說明在 怎麼玩.txt。
🧩 裝進 DeepSeek Harness(DSH 插件)
# 方法 A:Release 的套件檔
dsh plugin --profile web add ./dsh-whale-valley-0.25.0.tgz
# 方法 B:直接從 GitHub(repo 已附編譯好的 lib/,不用另外建置;需要電腦有裝 git)
dsh plugin --profile web add github:long432120-blip/dsh-whale-valley
# 沒有 git 的話,改用 GitHub 的壓縮檔地址
dsh plugin --profile web add https://github.com/long432120-blip/dsh-whale-valley/archive/refs/heads/main.tar.gz
⚠️ 不要用「本機資料夾」安裝(
dsh plugin add <你的原始碼資料夾>)。曾經發生過:移除或改裝這種 link 安裝的插件時,DSH 把整個原始碼資料夾的內容一起刪掉。只用上面兩種方法。
裝好後重開 dsh web,左側欄會多一個「鯨魚谷物語」(跟「插件」「自動化任務」排在一起)。
點它,遊戲會在另一個視窗打開:Windows 上用 Chrome/Edge 的「應用程式模式」(沒有網址列、沒有分頁列,1280×900,看起來就是一個獨立的小程式),DSH 的畫面完全不會被遮住。關掉那個視窗就結束遊戲。
-
第一次按如果沒看到視窗,卡片上會寫原因(例如找不到 Chrome/Edge),按「🪟 打開遊戲視窗」再試一次
-
存檔跟 DSH 共用(
~/.dsh/storages/dsh-whale-valley);遊戲裡的 ☰ 選單按「🚪 結束遊戲」也會關掉視窗 -
這個視窗是插件請 host 用系統瀏覽器開的:DSH 桌面版(Electron)會拒絕網頁自己
window.open(只放行https:),所以不能走瀏覽器彈窗那條路 DSH 的模型可以用兩個工具:whale_pet_status(看她的狀態,唯讀)和whale_pet_act(只開放餵食、澆水、收成)。 -
支援的 DSH 版本:
>=0.2.1-rc.5 <0.3.0(DSH 還在 Developer Preview,介面可能變動) -
從舊版
dsh-whale-pet升級:先dsh plugin --profile web remove dsh-whale-pet再裝;舊存檔會自動沿用
💻 從原始碼跑
需要 Node.js 22 以上。
git clone https://github.com/long432120-blip/dsh-whale-valley.git
cd dsh-whale-valley
npm install
npm run demo # 打開 http://localhost:8080/demo/pixel.html
改了 JSON 或地圖,重新整理頁面就生效。網址加 ?dev(例如 pixel.html?dev)會出現「快轉 3 小時、跳到明天」這些開發者按鈕。
💬 AI 對話與 API Key
AI 是選用的:沒有 Key、斷網、10 秒沒回應、Key 錯了,她都會自動改說內建台詞,遊戲不會卡住。
| 版本 | Key 放哪裡 | 誰看得到 |
|---|---|---|
| 單機版 | 遊戲側邊欄 🔑(鍵盤 I)自己填,存在你自己瀏覽器的 localStorage | 只有你這台電腦;只會送到 api.deepseek.com |
| DSH 插件 | DSH 內建模型(不用另外申請),或 DSH 插件設定 ai.apiKey、環境變數 DEEPSEEK_API_KEY、存檔資料夾裡的 .env | 只有 host 讀得到,永遠不會送到瀏覽器 |
開發用 npm run demo:ai | 專案根目錄的 .env(照 .env.example 複製) | 只在本機 127.0.0.1 的開發伺服器 |
🔒 程式碼裡沒有任何 Key。
.env已經在.gitignore裡;發布前可以跑npm run check:secrets再確認一次。 公用電腦不要填 Key;不玩了可以在 🔑 設定按「清除 Key」。
🛠️ 自訂:改 JSON 就能改遊戲
所有內容都在角色包 packs/whale-girl-pixel/,不用改程式。改完重新整理就生效;
npx tsx scripts/check-pixel.ts 會檢查有沒有打錯 id、漏欄位。
| 檔案 | 管什麼 |
|---|---|
character.json | 名字、走路速度、作息(幾點去哪)、台詞 |
gameplay.json | 物品、作物、商店、好感等級、加工、解鎖、節慶、日曆 |
fishing.json | 魚的種類、價格、在哪裡什麼時候釣得到 |
weather.json | 天氣種類與每一季的機率 |
scenes.json | 場景、背景圖、出口、季節粒子、時間木牌 |
interactables.json | 背景圖上可以點的地方(床、冰箱、街機…) |
animals.json、pets.json | 牧場動物、寵物 |
quests.json、wishes.json | 任務、每天的小願望 |
diary.json | 日記的句子範本 |
ai.json | AI 的角色設定、規則、記憶輪數、防抖 |
social.json | 交易所、攤位價格範圍、領養冷卻、串門與信箱、聊天室的居民回覆與敏感詞 |
locales/*.json(專案根目錄) | 介面文字(繁體、简体)、兩岸用語對照 |
stats.json、leisure.json、tavern.json | 體力飽食、摸摸頭與休閒、酒館 |
maps/*.tmj | 用 Tiled 畫的地圖 |
例 1:加一句台詞(character.json 的 lines)
{ "text": "晚上的魚缸亮晶晶的,陪我看一下好不好?", "scenes": ["room"], "phases": ["night"], "action": "happy", "weight": 2 }
{ "text": "是河豚!主人最懂我了~", "on": ["feed"], "items": ["fish_puffer"] }
{ "text": "有主人在,每天都好開心。", "minAffection": 330 }
條件都是選填:on 什麼時候說(預設 click 點她;還有 feed 餵食、caught 釣到、harvest 收成、levelup 好感升級…)、
scenes 場景、phases 時段(morning/afternoon/evening/night)、items 針對哪些物品、minAffection 好感門檻;
weight 越大越常說;action 是說話時的動作。
例 2:加一種作物(gameplay.json 的 crops)
{
"id": "carrot", "seed": "seed_carrot", "seasons": ["spring", "autumn"], "staminaCost": 5,
"stages": [
{ "name": "剛播種", "emoji": "🟫", "atMinutes": 0 },
{ "name": "發芽", "emoji": "🌱", "atMinutes": 60 },
{ "name": "成熟", "emoji": "🥕", "atMinutes": 180 }
],
"harvest": { "item": "crop_carrot", "min": 1, "max": 3 }
}
種子和收成物(seed_carrot、crop_carrot)要在 items 裡也定義;想讓商店賣種子,加進商店清單。
例 3:加一種魚(fishing.json)
// items:魚本身
{ "id": "fish_bass", "name": "鱸魚", "emoji": "🐟", "category": "fish", "price": 40,
"description": "肉很結實,鯨魚娘的日常主食。", "food": { "satiety": 25, "affection": 3 } }
// fishing.tables.pond:在池塘釣得到;條件選填
{ "item": "fish_bass", "weight": 30, "seasons": ["summer"], "phases": ["evening"], "weather": ["rainy"], "minAffection": 150 }
例 4:調天氣、調好感速度
// weather.json:每一季各種天氣的權重(0 = 不會出現)
"winter": { "sunny": 6, "rainy": 0, "storm": 0, "snowy": 4 }
// gameplay.json:每天最多加多少好感、各等級門檻
"affection": { "dailyCap": 20, "levels": [ { "min": 0, "name": "初次見面" }, { "min": 50, "name": "熟悉" }, … ] }
想看改了之後要玩幾天才能求婚:npm run sim -- --days 60(模擬三種玩家)。
想換成自己的角色、改地圖、加 mod,或想了解架構,請看 開發文件。
🧰 開發指令
| 指令 | 做什麼 |
|---|---|
npm run demo | 開發用頁面(http://localhost:8080/demo/pixel.html) |
npm run demo:ai | 同上,加上 AI 對話(讀 .env 的 Key) |
npm test | 單元測試 |
npx tsx scripts/check-pixel.ts | 檢查角色包 JSON 與地圖 |
npm run sim -- --days 60 | 數值模擬(金幣、好感曲線) |
npm run chat:server | 聊天室伺服器(ws://127.0.0.1:8790);遊戲網址加 ?dev&chat=ws://127.0.0.1:8790 就會連上 |
npm run check:secrets | 發布前檢查有沒有 Key、Token、個人 email、本機路徑 |
npm run check:offline | 檢查出貨檔案沒有 Google Fonts、CDN、Firebase、GA 這些外部依賴 |
npm run build | 打包 DSH 插件(lib/) |
npm run demo:standalone | 產生單一檔案的試玩版 demo/pixel-standalone.html |
npm pack | 產生 DSH 插件套件檔 dsh-whale-valley-<版本>.tgz |
packs/whale-girl-pixel/ 角色包:JSON、地圖、圖片、音樂(改這裡就能改遊戲)
src/shared/ 遊戲規則(host 和瀏覽器共用,純函數,有測試)
src/host/ DSH 插件的 host 端:存檔、AI、工具
src/client/ 畫面:像素舞台、面板、AI 設定、串門、聊天室、繁簡切換
locales/ 語言包(繁體、简体)與繁簡對照表
demo/ 單機版與開發頁面
scripts/ 建置、檢查、模擬
test/ 單元測試
docs/ 開發文件、各版本設計書
🤝 回報問題、參與
- 遇到 bug 或有想法:開 Issue,附上瀏覽器、做了什麼、看到什麼
- 送 PR 前請跑
npm test和npx tsx scripts/check-pixel.ts;改了src/要重跑npm run build(lib/不要手改)
📄 授權
Похожие плагины
dsh-web-ui (dsh-pet)
zhu1090093659/dsh-web-ui
dsh-pet (dsh-pet)
pc2005-cloud/dsh-pet
dsh-tavern (dsh-tavern)
flizzywine/dsh-tavern
dsh-tavern (dsh-profile-bridge)
flizzywine/dsh-tavern






