Skip to content

Repository files navigation

餐廳外場模擬器

一個類似 Overcooked 的餐廳外場模擬器,重點在於除了滿足客人的食物需求,還要在情緒上讓每個人滿意。

操作方式

移動

  • W/↑: 向上移動
  • S/↓: 向下移動
  • A/←: 向左移動
  • D/→: 向右移動

表情控制(Mask 系統)

  • J: 營業微笑 😊 - 服務業的標準答案,絕對的安全牌(每秒消耗 1.0 SAN)
  • K: 冷靜專業 😐 - 說不上友善,但還在禮貌的範圍內,精神負擔小(每秒消耗 0.5 SAN)
  • L: 委屈尷尬 😢 - 道歉用的表情,躲過憤怒客人客訴的唯一解,精神負擔大(每秒消耗 1.5 SAN)

注意: 使用表情時會持續消耗 SAN 值,不同表情消耗速度不同!

遊戲機制

客人系統

遊戲中有 8 種客人類型,每種都有獨特的個性和偏好:

主要客人類型

  1. 地方阿姨 (LOCAL_AUNTIE)

    • 友善的中年阿姨,天使客人,教學關卡專用
    • 喜歡:營業微笑
    • 討厭:無
    • 耐心時間:120秒
    • 偏好食物:魯肉飯、蚵仔煎
  2. 害羞學生 (SHY_STUDENT)

    • 平常都去點餐機點餐,覺得服務人員很兇
    • 喜歡:營業微笑
    • 討厭:冷靜專業
    • 耐心時間:60秒
    • 偏好食物:珍珠奶茶、臭豆腐、蚵仔煎
  3. 趕時間上班族 (RUSHED_OFFICE)

    • 一直低頭看手機,只在乎儘快拿到餐點
    • 喜歡:無
    • 討厭:無
    • 耐心時間:40秒
    • 偏好食物:魯肉飯、珍珠奶茶
  4. 奇怪的 vlogger (VLOGGER)

    • 拿著自拍棒直播,自我中心,可能找碴做效果
    • 喜歡:委屈尷尬
    • 討厭:冷靜專業
    • 耐心時間:45秒
    • 偏好食物:牛肉麵、臭豆腐
  5. 飆車外送員 (RUSHED_DELIVERY)

    • 超級趕時間!!!
    • 喜歡:無
    • 討厭:無
    • 耐心時間:30秒
    • 偏好食物:魯肉飯、珍珠奶茶

舊版兼容類型(保留)

  • 友善 (FRIENDLY): 喜歡開心表情
  • 中性 (NEUTRAL): 喜歡中性表情
  • 暴躁 (GRUMPY): 喜歡難過表情

客人機制

  • 每位客人有初始滿意度和最高滿意度(依類型而異)
  • 每個客人只會想要一種食物,在生成時從其偏好食物列表中隨機決定
  • 使用喜歡的表情接單:滿意度提升(依類型而異)
  • 使用討厭的表情接單:滿意度下降(依類型而異)
  • QTE 失敗:滿意度下降(依類型而異)

食物系統(台灣在地風格)

每種食物都有獨特的屬性:

  1. 牛肉麵 (BEEF_NOODLE)

    • 描述:香濃的牛肉湯配上Q彈的麵條,是台灣經典美食
    • 製作時間:5.0 秒
    • 吃掉回 SAN:15.0
    • 可以丟的距離:200.0 像素
  2. 臭豆腐 (STINKY_TOFU)

    • 描述:外酥內嫩的臭豆腐,搭配泡菜和醬汁,風味獨特
    • 製作時間:3.0 秒
    • 吃掉回 SAN:10.0
    • 可以丟的距離:150.0 像素
  3. 珍珠奶茶 (PEARL_MILK_TEA)

    • 描述:濃郁的奶茶配上Q彈的珍珠,是台灣最具代表性的飲品
    • 製作時間:2.0 秒
    • 吃掉回 SAN:8.0
    • 可以丟的距離:300.0 像素
  4. 蚵仔煎 (OYSTER_OMELETTE)

    • 描述:新鮮的蚵仔配上蛋液和地瓜粉,煎至金黃酥脆
    • 製作時間:4.0 秒
    • 吃掉回 SAN:12.0
    • 可以丟的距離:180.0 像素
  5. 滷肉飯 (BRAISED_PORK)

    • 描述:肥瘦相間的滷肉配上白飯,是台灣最受歡迎的平民美食
    • 製作時間:3.5 秒
    • 吃掉回 SAN:13.0
    • 可以丟的距離:170.0 像素

內場人員

遊戲中有 2 種內場人員,每種都有獨特的個性和專長:

  1. 阿強 (AQIANG)

    • 描述:有包手的冷靜低敏感廚師,不會介意你催他,但態度友善一點也不壞
    • 可製作食物:魯肉飯、蚵仔煎、牛肉麵
    • 喜歡表情:營業微笑
    • 討厭表情:無
  2. KASUMI (KASUMI)

    • 描述:傳說中會使用美味魔法的女僕廚師,要對她溫柔一點喔
    • 可製作食物:珍珠奶茶、臭豆腐
    • 喜歡表情:委屈尷尬
    • 討厭表情:冷靜專業

內場人員機制

  • 內場人員有心情系統(mood),使用正確表情可提升心情
  • 使用錯誤表情會降低心情
  • 心情影響製作效率和品質

QTE 點單系統

  1. 靠近客人(距離 < 100 像素)並按下任意表情鍵(J/K/L)開始點單
  2. QTE UI 會顯示在互動中的客人上方 10px 處,以 1.5 倍大小顯示
  3. 對話泡泡會輪播該客人想要的食物 + 隨機 emoji,每 0.5 秒切換一次
    • 只會顯示該客人想要的特定食物,而非所有食物品項
    • 混合隨機 emoji 增加 QTE 難度
  4. 當顯示到客人想要的食物名稱時,鬆開表情鍵即可接單成功
  5. 如果做錯表情,客人滿意度會下降
  6. 如果 QTE 失敗(在錯誤的食物或 emoji 上鬆開),需要重新開始

SAN 值系統

  • 初始 SAN 值:100 點(最高 100 點)
  • 使用表情時會持續消耗 SAN 值,消耗速度依表情類型而定:
    • 營業微笑:每秒消耗 1.0 點
    • 冷靜專業:每秒消耗 0.5 點
    • 委屈尷尬:每秒消耗 1.5 點
  • 吃掉食物可以恢復 SAN 值(依食物類型而異)
  • SAN 值歸零時遊戲結束
  • 可在遊戲結束後按 R 鍵重新開始

排隊系統

  • 客人會陸續加入排隊(左側區域)
  • 最多同時客人數量依關卡配置而定(2-6 位)
  • 生成間隔依關卡配置而定(3-8 秒)
  • 客人完成訂單後會自動離開,其他客人會重新排列

客人視覺系統

  • 每位客人根據其類型顯示對應的圖片:
    • 地方阿姨customer_local_aunt.png
    • 害羞學生customer_shy_student.png
    • 趕時間上班族customer_salary_man.jpeg
  • 客人頭頂顯示其類型名稱(如「地方阿姨」、「害羞學生」等)

關卡系統

遊戲包含多個關卡,每個關卡有不同的配置:

  1. 教學關卡 (Level 0)

    • 持續時間:90 秒
    • 生成間隔:8 秒
    • 最多客人:2 位
    • 只有地方阿姨
  2. 基礎關卡 (Level 1)

    • 持續時間:120 秒
    • 生成間隔:5 秒
    • 最多客人:3 位
    • 包含友善、中性、暴躁三種基本類型
  3. 進階關卡 (Level 2)

    • 持續時間:120 秒
    • 生成間隔:4 秒
    • 最多客人:4 位
    • 包含所有客人類型,不同出現頻率
  4. 高級關卡 (Level 3)

    • 持續時間:120 秒
    • 生成間隔:3.5 秒
    • 最多客人:5 位
  5. 專家關卡 (Level 4+)

    • 持續時間:180 秒
    • 生成間隔:3 秒
    • 最多客人:6 位

UI 系統

  • SAN 值條:右上角顯示當前 SAN 值(使用自定義紋理)
  • 時間條:底部顯示關卡剩餘時間(使用自定義紋理)
  • 玩家表情面板:右下角顯示玩家當前表情的臉部特寫圖片
    • 沒做表情時顯示 player_idle.png
    • 營業微笑時顯示 player_smile.png
    • 冷靜專業時顯示 player_professional.png
    • 委屈尷尬時顯示 player_sorry.png
  • 操作說明面板:左上角顯示操作說明
  • 遊戲結束面板:SAN 值歸零或時間到時顯示
  • 其他 UI 元素:日期顯示、設定按鈕、圖標等

技術細節

遊戲引擎

  • Godot 4.5 (Mobile renderer)
  • 視窗大小:1280x720

核心系統

  • GameManager: 管理遊戲狀態、SAN 值,初始化所有資源數據(食物、表情、客人、內場人員)
  • LevelManager: 管理關卡配置、狀態和切換邏輯(Autoload)
  • Player: 處理玩家移動和表情控制
  • Customer: 管理客人個性、滿意度、QTE 系統、視覺顯示(圖片和名稱)
  • KitchenStaff: 處理內場人員的食物準備和心情系統
  • QueueManager: 管理客人排隊和生成,應用關卡配置
  • InteractionManager: 處理玩家與客人的交互邏輯
  • QTEUI: 顯示 QTE 對話泡泡
  • UIManager: 管理所有 UI 顯示和更新(SAN 值條、時間條、玩家表情面板等)

資源類系統

所有遊戲數據都已對象化為資源類:

  • Food: 食物資源類(描述、製作時間、回 SAN 值、丟的距離)
  • Mask: 表情資源類(描述、SAN 消耗、按鍵)
  • CustomerData: 客人資料資源類(描述、喜歡/討厭表情、說話速度、耐心時間、滿意度變化、偏好食物)
  • KitchenStaffData: 內場人員資料資源類(名稱、描述、可製作食物、喜歡/討厭表情)
  • LevelConfig: 關卡配置資源類(關卡名稱、生成間隔、最多客人數、持續時間、客人生成配置)
  • CustomerSpawnConfig: 客人生成配置資源類(客人個性類型、生成權重)

專案結構

game-jam-2026/
├── Objects/              # 遊戲物件場景
│   ├── player.tscn       # 玩家場景
│   ├── customer.tscn     # 客人場景
│   └── kitchen_staff.tscn # 內場人員場景
├── Scenes/               # 遊戲場景
│   ├── main.tscn         # 主場景(包含所有遊戲物件)
│   ├── ui.tscn           # UI 場景
│   └── qte_ui.tscn       # QTE UI 場景
├── Scripts/              # 遊戲腳本
│   ├── game_manager.gd   # 遊戲管理器(核心邏輯)
│   ├── level_manager.gd  # 關卡管理器(Autoload)
│   ├── level_config.gd   # 關卡配置資源類
│   ├── customer_spawn_config.gd  # 客人生成配置資源類
│   ├── player.gd         # 玩家腳本
│   ├── customer.gd       # 客人腳本
│   ├── kitchen_staff.gd  # 內場人員腳本
│   ├── queue_manager.gd  # 排隊管理器
│   ├── interaction_manager.gd  # 交互管理器
│   ├── qte_ui.gd         # QTE UI 腳本
│   ├── ui_manager.gd     # UI 管理器
│   ├── food.gd           # 食物資源類
│   ├── mask.gd           # 表情資源類
│   ├── customer_data.gd  # 客人資料資源類
│   └── kitchen_staff_data.gd  # 內場人員資料資源類
├── Assets/               # 遊戲資源
│   ├── player_*.png      # 玩家表情臉部特寫圖片
│   ├── customer_*.png    # 客人圖片
│   └── *.png             # 其他 UI 和遊戲資源
├── project.godot         # Godot 專案設定
└── README.md            # 本文件

已實現功能

  • ✅ 完整的關卡系統(5+ 個關卡,不同難度和配置)
  • ✅ 客人視覺系統(根據類型顯示對應圖片和名稱)
  • ✅ 玩家表情臉部特寫顯示系統
  • ✅ 自定義 UI 紋理(SAN 值條、時間條等)
  • ✅ 時間限制系統(每個關卡有固定時間)
  • ✅ 客人生成權重系統(不同關卡不同客人出現頻率)

未來改進方向

  • 完善內場人員的互動系統(實際取餐流程)
  • 添加更多遊戲機制(難度遞增、成就系統等)
  • 優化 UI 顯示和動畫效果
  • 添加音效和背景音樂
  • 實現食物準備和配送系統
  • 添加統計數據和關卡完成記錄

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages