Skip to content

Repository files navigation

蛋仔闲逛 (eggy)

一个用 Three.js 做的卡通风格 3D 休闲小游戏 —— 操控一只蛋仔在悠闲小镇里闲逛、探索、收集。

在线试玩: https://chuccp.github.io/eggy/

本项目的全部代码由 AI 生成。 从游戏逻辑、物理、UI 到模型、贴图与音效,均由 AI 在对话中编写或程序化生成,无人工手写代码。

游戏截图


游戏内容

世界

  • 200 × 200 的地形,60 棵树(4 种树形)、1500 株随风摆动的草丛、200 朵会回应玩家经过的花朵
  • 10 位居民 NPC,靠近按 E 会冒出发声的 3D 对话气泡
  • 8 种鸟类各有不同飞行姿态,另有烟囱炊烟、花田蝴蝶、林间落叶等粒子
  • 湖泊、秋千、跷跷板、喷泉、大炮、小船、可推动的球等互动设施

玩法

  • 装备系统 —— 5 个装备槽(帽子 / 面部 / 背部 / 翅膀 / 手持),20 余件装备会实时穿戴到 3D 模型上
  • 商店 —— 4 家主题商店(甜蜜面包店、时尚服装店、家具小馆、冰淇淋小屋),走近商品按 E 直接购买,也能在柜台卖出
  • 宝箱 —— 每 15 秒刷新,最多同时存在 5 个,5 级稀有度、20 种掉落物;湖底还藏着一个传说宝箱
  • 彩蛋 —— 3 个黄金蛋散落在地图各处,另有一幅墙面像素画
  • 飞行 —— 装备翅膀后连按 Space 扇动翅膀起飞

系统

  • 物理引擎:cannon-es 高度场碰撞,屋顶可以站立,球可以被推着滚
  • 存档:localStorage 自动存档(每 30 秒 / 关键事件 / 退出时)
  • 音效:程序化合成的音效与 BGM,靠近湖泊、树林时环境音会渐强
  • 后处理:Bloom 泛光 + 暗角,卡通材质使用 5 级渐变着色

操作

操作 键盘 / 鼠标 手柄
移动 W A S D / 方向键 左摇杆
奔跑 Shift B
跳跃 Space A
飞行 连按 Space(需装备翅膀) 连按 A
视角 鼠标移动 右摇杆
缩放 滚轮
交互 / 购买 / 上座 E X
物品栏 I 或点击右上 🎒
暂停菜单 Esc Start
菜单内切换 / 确认 Tab / Enter

首次进入需点击画面锁定鼠标;按 Esc 可释放鼠标打开暂停菜单。


本地运行

需要 Node.js ^20.19>=22.12,以及 pnpm。

pnpm install
pnpm dev        # 开发服务器,默认 http://localhost:3000
pnpm build      # 类型检查 + 生产构建,输出到 dist/
pnpm preview    # 预览构建产物

技术栈

项目 技术
渲染 Three.js 0.170
物理 cannon-es 0.20
语言 / 构建 TypeScript 5 + Vite 8
部署 GitHub Pages(GitHub Actions)

无任何资源文件依赖:所有模型、贴图与音效均由代码程序化生成。

项目结构

src/
├── main.ts              入口:开始界面 → 启动游戏
├── game/                Game 主循环、场景、输入、物理世界、存档
├── player/              蛋仔角色、第三人称相机、移动控制、装备外观
├── world/               地形、房屋、NPC、鸟类、商店、宝箱、道具、粒子…
├── ui/                  HUD、开始界面、暂停菜单
├── audio/               程序化音效与 BGM
├── effects/             后处理(Bloom + 暗角)
└── utils/               颜色与数学工具

许可

Apache License 2.0

About

一个用 Three.js 做的卡通风格 3D 休闲小游戏 —— 操控一只蛋仔在悠闲小镇里闲逛、探索、收集。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages