方块狙击猎手AI · Claude 3.5
游戏信息
生成提示词
可复制以下提示词,用于学习或复现这款游戏。
核心玩法循环与机制
方块狩猎狙击手(Blocky Safari Sniper) 是一款第一人称狙击游戏,玩家需要在程序化生成的方块地貌中猎捕 Minecraft 风格的动物。核心体验聚焦于精准瞄准、时机把握与目标锁定。
逐帧玩法
- 玩家在一片方块生物群系中出生,动物散布在地形各处
- 玩家用鼠标/触摸环顾四周,发现远处的动物
- 玩家开镜瞄准(右键/点击开镜按钮),进入带准星的精准视角
- 玩家对准目标并开火(左键/点击开火按钮)
- 成功命中会依据距离与动物稀有度获得得分
- 附近开枪时动物会逃窜,增加紧迫感
- 计时器倒数——玩家必须在时间耗尽前尽可能多地标记动物
- 计时器归零时本回合结束
- 结算界面展示成绩,包含最远距离记录与命中率统计
进程与吸引力
- 得分系统:得分依据距离(射程越远=分数越高)与动物类型(稀有动物=额外倍率)
- 连击系统:短时间窗口内连续命中可获得连击倍率
- 最高分记录:玩家与个人最佳成绩较量
- 动物行为:动物会自然游走,但听到枪声时会逃窜,营造出动态的狩猎场景
- 距离挑战:动物在不同距离生成(50-300 方块之外),命中远处目标需要技巧
胜负条件
- 胜利:在时间耗尽前达到目标分数阈值(例如 90 秒内 1000 分)
- 失败:在达到目标分数前时间耗尽
- 重玩价值:刷新个人最高分、提升命中率百分比、达成更远距离的射击
吸引力所在
- 令人满足的狙击机制,配合开镜缩放与精准瞄准
- 挑战高难度远距离射击 vs. 更轻松的近处目标之间的风险/回报权衡
- 逃窜动物与倒数计时带来的紧张感
- Minecraft 美术风格贴近熟悉的受众
- 易学难精
起步范围
在首个版本中,我们将实现一个 精简但打磨精良的原型,聚焦核心狙击机制:
首个版本包含:
- 单一生物群系(点缀着零星树木的草原)
- 3-4 种动物(牛、猪、羊、鸡),各有不同分值
- 带开镜缩放的基础狙击步枪
- 90 秒计时回合
- 带距离加成的得分系统
- 简单的动物 AI(游走 + 听到枪声逃窜)
- 带准星的镜面覆层
- 命中反馈(视觉 + 音效确认)
- 回合结束结算界面
- 与 Minecraft 美术风格一致的方块/体素画风
留待未来版本:
- 多种生物群系(森林、沙漠、雪原)
- 稀有/传说级动物
- 武器升级与自定义
- 影响子弹弹道的风力机制
- 持久化进程/解锁
- 多种难度等级
- 排行榜
游戏视角
3D 第一人称 —— 这一视角对狙击体验至关重要:
- 玩家透过角色的双眼观察世界
- 鼠标控制镜头旋转(配合指针锁定)
- 开镜模式提供带准星覆层的放大视角
- 沉浸式狩猎体验,凭借纵深感进行远距离射击
游戏世界与关卡设计
环境结构
游戏发生在一片受 Minecraft 美学启发的 程序化生成方块地形 中:
地形生成:
- 以平坦草原作为基底(y=0)
- 使用噪声生成的平缓起伏丘陵(高度变化:0-10 方块)
- 散布的方块树木(简单的树干 + 树叶冠层,高 5-8 方块)
- 渲染距离:400 方块,以支持远距离狙击
- 天空盒:从浅蓝到白色的简单渐变
- 地面纹理:草方块图案(顶面绿色,侧面为泥土)
空间布局:
- 玩家在中心点(0, 2, 0)出生——站在地面上
- 动物在距玩家 50-300 方块半径范围内生成
- 同时活动的动物 15-20 只
- 树木提供视觉地标并为动物提供部分掩护
- 方块美学意味着一切都采用立方体/长方体形状
尺度参考:
- 1 方块 = 1 米(Minecraft 标准)
- 玩家身高:1.8 方块
- 动物:依类型不同高 1-2 方块
- 树木:高 5-8 方块
- 开镜可清晰看到 200+ 方块外的动物
视觉氛围
- 明亮愉悦的白昼光照
- 远距离射击时视野清晰
- 树木与地形投下方块状阴影
- 子弹命中时的粒子特效(细小方块碎片)
- 动物有简单的待机动画(点头、摇尾)
编辑模式设计
编辑模式允许玩家自定义自己的狩猎体验:
可编辑属性
游戏设置:
roundDuration(30-300 秒,默认:90)——每回合持续时长targetScore(500-5000,默认:1000)——获胜所需分数animalCount(5-30,默认:15)——生成的动物数量scopeZoom(2-8 倍,默认:4 倍)——镜面放大倍率
动物配置: 每种动物都有可编辑属性:
spawnWeight(0-100)——相对生成概率pointValue(10-500)——标记时获得的基础分值moveSpeed(0.5-3.0)——游走速度fleeSpeed(1.0-5.0)——受惊逃跑速度fleeDistance(20-100 方块)——能听到枪声的范围
难度修正:
distanceBonus(每方块 0-10 分,默认:2)——距离额外加分comboMultiplier(1.0-3.0 倍,默认:1.5 倍)——连续命中加成comboWindow(1-10 秒,默认:3)——连击时间窗口
约束
- 至少 5 只动物以确保可玩性
- 回合时长至少 30 秒以保证有意义的游玩
- 开镜倍率在 2-8 倍之间以维持挑战性
- 动物速度设有上限,避免出现无法命中的目标
控制设计
方块狩猎狙击手 采用为狙击玩法优化的标准 3D 第一人称射击 控制方式:
桌面端控制(键盘 + 鼠标)
鼠标:
- 鼠标移动 —— 环顾/瞄准镜头(指针锁定激活时)
- 左键 —— 开火
- 右键 —— 切换开镜缩放(按住或切换)
- 鼠标滚轮 —— 调整开镜倍率(若后续加入多档缩放)
键盘:
- WASD —— 移动角色(前/左/后/右)
- 方向键 —— 备用移动方式
- 空格 —— 跳跃(使用较少,主要用于穿越地形)
- Shift —— 开镜时屏住呼吸(稳定瞄准,减少晃动)
- R —— 换弹(若后续加入弹药系统)
- Escape —— 暂停菜单/释放指针锁定
指针锁定:
- 游戏开始时自动请求指针锁定
- 显示暂停菜单或结算界面时释放指针锁定
- 恢复游戏时重新获取
移动端控制(触摸)
触摸区域:
- 屏幕右侧 60% —— 视角/瞄准摇杆(在触摸处出现)
- 拖动以旋转镜头
- 移动幅度越大=旋转越快
- 开镜时灵敏度降低以求精准
- 左下角 —— 移动摇杆(固定位置)
- 相对于镜头朝向的 8 方向移动
- 模拟输入实现可变速度
- 右下角按钮 —— 动作按钮(固定 UI)
- 大号圆形"FIRE"按钮(最小 96x96px)
- 上方为"SCOPE"切换按钮
摇杆行为:
视角摇杆(右侧):
- 基座出现在手指触摸处(避开 UI 区域)
- 最大半径:80px
- 死区:10px
- 动态重定心:若手指超出最大半径,基座位置会滑动,使摇杆头始终保持在手指下方的最大半径处
- 输出模拟 X/Y 值(-1 到 +1)用于镜头旋转
- 灵敏度:满偏时约 0.15 弧度/秒(开镜时降至约 0.05)
移动摇杆(左下):
- 固定位置:距左侧 100px,距底部 150px
- 最大半径:60px
- 死区:8px
- 输出相对于镜头的模拟 X/Y 移动方向
- 移动速度随偏移量缩放
触摸追踪:
- 按 ID 追踪每次触摸以防止相互干扰
- 右侧区域的首次触摸 = 视角控制
- 左侧区域的首次触摸 = 移动控制
- 按钮上的触摸 = 动作
- 忽略始于 UI 元素的触摸(就摇杆而言)
开镜模式调整:
- 开镜时视角灵敏度降低 70% 以求精准瞄准
- 开火按钮脉动/发光以示可开火状态
- 开镜时禁用或大幅减弱移动(玩家专注于瞄准)
瞄准机制
普通视角:
- 屏幕中央带准星的自由观察
- 无缩放,宽视野(约 75 度)
- 更快的镜头旋转以扫视环境
开镜视角:
- 出现镜面覆层(带准星的圆形边框)
- 缩放倍率:4 倍放大(视野缩小至约 20 度)
- 更慢、更精准的镜头移动
- 轻微的镜面晃动(呼吸效果)——按住 Shift/稳定键时减弱
- 屏幕边缘变暗/晕影,模拟透过瞄准镜观察
子弹机制:
- 为简化,首个版本采用即时命中(hitscan)
- 从镜头中心穿过准星发射射线
- 对动物碰撞盒进行命中检测
- 视觉曳光效果(淡淡的线条)短暂展示子弹轨迹
输入状态管理
桌面端:
const input = {
keys: {}, // Track pressed keys (lowercase)
mouse: { x: 0, y: 0, buttons: {} },
pointerLocked: false
};
// Prevent default for game keys
document.addEventListener('keydown', (e) => {
const key = e.key.toLowerCase();
if (['w','a','s','d',' ','shift'].includes(key)) {
e.preventDefault();
input.keys[key] = true;
}
});
// Clear input on blur
window.addEventListener('blur', () => {
input.keys = {};
input.mouse.buttons = {};
});
移动端:
const touches = {
look: null, // {id, baseX, baseY, currentX, currentY}
move: null,
active: new Map() // Track all active touches by ID
};
// Each joystick enforces max radius with dynamic base repositioning
function updateJoystick(joystick, touchX, touchY) {
const dx = touchX - joystick.baseX;
const dy = touchY - joystick.baseY;
const distance = Math.sqrt(dx*dx + dy*dy);
if (distance > joystick.maxRadius) {
// Move base so finger stays at max radius
const angle = Math.atan2(dy, dx);
joystick.baseX = touchX - Math.cos(angle) * joystick.maxRadius;
joystick.baseY = touchY - Math.sin(angle) * joystick.maxRadius;
}
// Calculate normalized output
const clampedDist = Math.min(distance, joystick.maxRadius);
if (clampedDist < joystick.deadZone) return {x: 0, y: 0};
const normalized = (clampedDist - joystick.deadZone) / (joystick.maxRadius - joystick.deadZone);
return {
x: (dx / distance) * normalized,
y: (dy / distance) * normalized
};
}
无障碍考量
- 移动端按钮采用大号触摸目标(最小 96x96px)
- 所有按钮按下时提供视觉反馈
- 提供镜头 Y 轴反转选项(常见偏好)
- 编辑模式中可调节灵敏度设置
- 为开镜模式、换弹状态等提供清晰的视觉指示
美术风格与视觉主题
方块狩猎狙击手 采用 体素/Minecraft 风格美学,形状简洁易辨,色彩明快愉悦。
整体美术方向
- 风格:受 Minecraft 启发的体素/方块 3D 美术
- 氛围:明亮、愉悦、老少皆宜的狩猎体验
- 色彩搭配:
- 用于草地与植被的鲜活绿色
- 用于泥土与树干的大地棕色
- 明亮的蓝天
- 色彩缤纷的动物(粉色猪、白色羊、棕色牛、白色鸡)
- 一致性:所有资产均采用立方/长方形态,尽量少用曲线
- 观察角度:配合 3D 模型的第一人称视角
视觉元素
地形与环境:
- 以代码渲染(Three.js 或类似)
- 简单的基于方块的几何体
- 草方块:绿色顶面,棕色/泥土侧面
- 树木:棕色立方树干 + 绿色树叶冠层(由立方体构成)
- 平面着色或简单的纹理贴图
动物:
- 生成为体素风格 3D 模型或精灵广告牌
- 可辨识的 Minecraft 风格比例
- 简单动画(待机晃动、行走循环)
- 清晰的剪影以便远距离辨识
- 尺寸:依物种不同高 1-2 方块
UI 元素:
- 简洁现代且带方块美学的界面
- 镜面覆层:带准星的圆形边框(生成资产)
- HUD:角落显示得分、计时器、连击计数
- 按钮:带清晰图标的圆角矩形
- 字体:粗体、易读的无衬线字体(如"Press Start 2P"或类似像素字体)
特效:
- 枪口火焰:明亮的黄/橙色粒子爆发
- 命中特效:细小彩色粒子(命中为红色,未中为灰色)
- 子弹曳光:淡淡的白色线条
- 镜面晃动:细微的呼吸律动
- 动物逃窜:奔跑时的尘土粒子
资产生成 vs. 代码渲染
生成为资产:
- 动物模型/精灵(牛、猪、羊、鸡)
- 带准星的镜面覆层
- 树木纹理(若采用纹理贴图)
- 粒子纹理(枪口火焰、命中特效)
- UI 图标(开镜图标、开火图标)
- 音效与音乐
以代码渲染:
- 地形几何体(程序化生成的方块)
- 基础形状(方块用立方体,UI 用矩形)
- HUD 文字与数字
- 摇杆可视化(圆圈与摇杆头)
- 简单几何特效(曳光、基础粒子)
尺度与比例
- 1 方块 = 1 米(Minecraft 标准)
- 玩家镜头高度:1.62 方块(眼平高度)
- 动物:
- 牛:高 1.4 方块,长 1.8 方块
- 猪:高 0.9 方块,长 1.4 方块
- 羊:高 1.3 方块,长 1.6 方块
- 鸡:高 0.7 方块,长 0.8 方块
- 树木:高 5-8 方块,树干宽 1-2 方块
- 开镜缩放:使 200+ 方块外的动物清晰可见
技术考量
- 使用 Three.js 进行 3D 渲染
- 简单光照(环境光 + 定向太阳光)
- 远处地形使用雾效(从 300 方块处开始)
- 首个版本无需 LOD(几何体简单)
- 目标是在移动设备上达到 60 FPS