FPS项目文档v1.1

0.前言(套盾

本文档仅供项目组内部参考使用
本文档内链接均用于学习
本文档所属项目仅为学习用demo,非商业化作品
本文档中包含游戏机制、游戏道具、各类属性的说明与策划给出的部分实现思路


1.项目目标

  • 实现多人联机功能:

    • 房间的创建、删除
    • 地图加载
    • 房间的进入、退出
    • 同步
  • 实现FPS的基本内容:

    • 战斗
      • 武器
      • 道具
      • 技能
      • 动作
    • 角色
      • 角色定位
      • 外观
      • 数值
      • 技能(是在地图里获取技能还是角色自带技能)
    • 交互
      • UI
      • 键位
      • 与场景交互
    • 地图/场景
      • 地图加载/销毁
      • 地图内设施
      • 道具刷新点
  • 实现游戏核心机制:

    • 角色
      • 角色选择
      • 角色创建与初始化
        • 角色数值初始化
        • 出生点选择
      • 角色状态与转换
        • 健康
        • 负伤
        • 死亡(盒子
        • 转换
      • 角色掉落
        • 部分掉落
        • 完全掉落
      • 角色属性与变化机制
      • 角色销毁
        • 撤离点
        • 被击杀
        • 迷失
    • 限时撤离
    • 胜利目标

2.项目设定

2.1分工(这个清清来吧,还是需要一个书面的东西来详细划定的)

2.2项目参考 (更新中)

利用Photon实现服务器
搭建服务器框架和实现联机大厅
Unity C#服务器
UnityFPS官方示例
枪械后坐力参考
逃离塔科夫枪械后坐参数说明


3.具体设计说明

3.0 游戏总体设计

玩家在初始界面设定联机ID创建角色,连接进入游戏大厅,选择房间或创建房间。开始游戏后,玩家先有若干秒选择角色,同时地图上随机刷新资源,倒计时结束后出生在随机出生点。玩家可在地图上搜集资源。击杀其他玩家时,可以获取其携带物资和标识,并获得少量分数,当地图上仅剩一名玩家时,游戏界面倒计时撤离时间,若最后一名玩家未在规定时间内撤出,则会被强制击杀。被击杀或撤离时弹出结算界面和分数,物资可兑换少量分数,击杀玩家可兑换大量分数。游戏结束后,分数汇总生成表格推送给玩家。

3.1 武器与战斗(策划与动画、美术、叶宝对接)

3.1.0 战斗的大致介绍

主要以中近程战斗为主,玩家使用武器与自身技能击杀敌人,使用道具回复血量与护甲,击杀敌人后获取1击杀数,并根据被击杀玩家的击杀数获取奖励分数,敌人变成道具箱(道具箱UI同角色背包);被击杀则在倒地后画面逐渐变黑,显示被击杀页面

3.1.1 武器

武器的基本设定

  • 外观
  • 射击条件(枪械配件槽内有弹匣、弹匣内有子弹方可射击,只有这个配件决定枪械是否开火)
  • 枪声(枪声的更改发生在消音器被安装/取下的时候)
  • 射速(理解为枪口生成子弹的速度)
  • 后坐力(分为水平和垂直,水平后坐力导致枪身左右晃动,垂直导致枪身上下晃动)
  • 枪口回落速度(射击停止后枪口朝向回到原方向的时间,也可以设置为速度)
  • 子弹散布(我的思路是后坐力方向变化范围,参考2.2给出的塔科夫枪械后座参数说明)
  • 可用弹种
  • 可使用配件(配件将可能对枪械的基本属性进行更改)
  • 枪械本身分值(枪械本身不含配件的分数)

武器种类与数值

较为具体的设计我在表格内已经给出了,这里要补充的一点是半自动步枪的定位。半自动步枪的定位是精准,因此初始散布应当是最小的,且具有最快的枪口回落速度。

3.1.2 战斗

  • 射击(鼠标左键):使用不同瞄具的瞄准和腰射
    • 需要考虑的要素:当前使用的瞄具,当前使用的握把,后坐力的大小,目前站姿势(站立、蹲、趴)
    • 注意:跳跃不可射击
    • 弹匣内无弹药且背包内无可用弹药时再按鼠标左键切换武器
  • 换弹匣(R)
    • 需要考虑的要素:弹匣的种类,技能是否开启(对换弹时间的改变)
  • 切换枪械(1和2):一支在手里一支在背上(背上可以放置武器的地方在背两侧),当切换枪械时,先将手里的换到背上空出的地方,再将另一把从背上换到手里,播放完动画才可进行其他对武器的操作
    • 需要考虑的要素:枪械大小,枪械移位与角色部位活动的绑定
  • 改装武器(动作可以先不做,但改装武器必须花费时间)每更换一次配件,整个枪的状态就要更新一次,更换配件的方法是将背包内的配件拖到配件槽上,更换时间结束后两个配件的图标交换,更换时间=原配件的更换时间(见表格)+新配件的更换时间(见表格),若枪械配件槽为空,则只计算新配件的更换时间
  • 一个准则:对武器的操作之间是互斥进行的(瞄准包含在射击内)

    3.2 道具(策划与叶宝对接)

    3.2.1 道具分类

  • 弹药
    • 手枪弹药:低伤害低分数带的多
    • 步枪弹药:高伤害高分数带的少
    • 弹药击中玩家屏幕中央给出击中X形图标反馈,由枪械生成。暂时不做弹道下坠,弹药击中场景内物体(除弹药箱、玩家死后变成的盒子、玩家外)生成贴图
  • 回复道具(护甲回复与血量回复)
    • 维修套装(一次性):中刷新中分值
    • 血量回复
      • 急救包(一次性回血):高刷新低分值
      • 回血针(持续回血):低刷新高分值
  • 配件
    • 带倍率瞄具:试着做镜内放大吧
    • 机瞄和红点:实际上是两种类型的机瞄
    • 握把和后托,握把实现垂直后坐力的削弱和枪口散布范围的缩小,后托实现水平后坐力的削弱
  • 稀有道具(高分极低刷)
    • 金/银/铜球

3.2.2 道具刷新

道具的刷新点、爆率、特性已经在表格内给出。

3.3 角色(策划与动画、叶宝对接)

3.3.1 角色的属性

  • 血量(见表格)
  • 护甲值(见表格)
  • 技能点(见表格)
  • 技能回复速度:固定为2点/s(数值见表格)
  • 移速(具有三档速度,数值举例见表格,按x进入/退出静步,静步将不再发出声音,按shift进入快跑,快跑持续时间和回复速度待定
  • 耐力(见表格,决定了玩家能连续跑多久)
  • 耐力消耗速度/回复速度(见表格)
  • 击杀数(见表格)
  • 得分(玩家按两下3即可在画面右上角显示,显示时间为3s,3s内再发出查询命令则重置计时器)

3.3.2 角色状态、数值的转化机制

  • 玩家被击中时若有护甲,则被击中产生的伤害80%由护甲承担,剩余20%为真伤,该伤害判定在击中时发生,若剩余护甲小于子弹伤害的80%,则护甲置0,剩余伤害均为真伤。
  • 玩家可通过回复道具回复血量,产生的溢出不会被计算
  • 若判定玩家承受该子弹伤害后血量<=0,则触发死亡退出机制,使用布娃娃系统实现脱力倒地成为尸体,可以搜刮。

3.3.3 角色的动作

  • 移动:匍匐(z)、蹲走(ctrl)、静步(x)、快走、跑步、跳跃
  • 战斗:举枪、瞄准、射击、换弹、切换武器、死亡
  • 拿取物品(暂定为静止不动)
  • 恢复:包扎(急救包)、扎针(回血针)、修补护甲(参照apex)
  • 技能
  • 在原有动作上进行更改(比如增速技能就提高跑步动画的播放速度)
  • 死亡(先倒地再黑屏后结算)
  • 迷失:超过每局最大时长仍未撤离(先黑屏后结算)

3.3.4 角色的背包

每个角色的背包是和角色绑定的,不会变化。玩家进入游戏并选好角色后按照表格内给出的刷新概率刷新物品,并更新玩家的得分。玩家被击杀时,计算背包内物品的总分数,玩家对背包内物品的每次调整都将刷新分数,玩家随时可以查询。角色的背包由通用武器槽、子弹槽、回复道具槽和任意物品槽四类槽位构成,各个槽位能放置的物品及其数量上限见表格,不能放在槽内的物品被拖拽时将不会被换入槽内,结束拖拽,图标将自行归位。

子弹的消耗机制(涉及到背包)

每个槽内只能放一种子弹,当玩家换弹时自动查询弹药槽,只会消耗放在弹药槽内的弹药若有该类弹匣对应的子弹则自动填充,若没有则按3.1.2对换弹的说明进行切换武器,如果弹药在任意物品槽内则不会被自动消耗,需玩家自行拖拽至弹药槽内。

你可以把不要的东西丢出去!

如果你想丢掉一些东西,选中它(鼠标移上去就会高亮)左键点击选择抛出数量,右键点击则全部抛弃,然后这个物体的模型将从身体周围生成并掉到地上。

我后悔了怎么办

对于半径1m以内的物体看向它(轮廓会高亮)高亮教程,然后按左键,将对背包进行查询,如果有位置就能放入。

3.4 地图(策划与美术、叶宝对接)

3.4.0 地图设定

目前的方案是训练基地(主要是可以大量复用素材)的一个区域,多楼层,多房间,多过道,中央是一个天井供中距离战斗,包含多个出生点且均有随机性,撤离点有通用撤离点、限时撤离点、随机撤离点、触发撤离点四种,房间最大人数10,具体每层的设计后续会和美术磋商。

3.4.1 出生点

出生点是玩家刷新的地方,角色初始满甲满血,按表格内给出的爆率在背包内刷新物品。出生点的数量和房间内最大玩家容量一致且均匀分布在地图角落,玩家在哪个出生点进入游戏是随机的。玩家在各个刷新点的刷新概率应均等(这个好做,比如在玩家池中随机选出一个玩家,然后随机安排出生点,再从剩余玩家里接着选一个并安排,以此类推),每个玩家的出生点都被设置好,所有资源均加载完毕后进入游戏。

3.4.2 撤离点

撤离点是玩家触发退出机制的地方,若撤离点可用,则玩家进入判定区域将弹出倒计时页面,待一段时间就可撤离并进入结算页面,不会留下任何东西。

通用撤离点

玩家进入游戏后随时都可撤离,将会被放在武器库的门口、通风管道这样的地方,难以找到或比较偏僻

限时撤离点

会在特定的时间点开启,并有限定时间,比如临时开启的大门

随机撤离点 (搁置)

会在每局开始时就决定是否开启,若开启则会有外观的变化(比如某处墙壁是否有裂口)

触发撤离点

满足某种条件才可激活(比如拉电闸),需在一定时间内赶到撤离点撤离,否则需重新触发,比如电梯。

3.4.3 物品箱

物品箱的种类和道具爆率等设定均已在表格内给出。

3.5 游戏机制

3.5.1 房间(策划与lzy对接)

进入游戏,设定用户名,分配玩家ID,连接到游戏大厅,玩家点击开始游戏,若当前没有可加入的房间则生成一个房间,客户端显示一定时长的倒计时,若在时间内房间满员则开始游戏,进入角色选择页面(给30s准备时间)并加载地图内资源,30s倒计时结束且地图资源加载完毕即可进入游戏;如果倒计时结束没有足够玩家(2人)则退回主页面。游戏结束(所有玩家都已完成游戏或每局时间上线已到)后对玩家分数进行排名,生成分数记录榜并通过邮件系统推送给玩家(实现服务器的用户连接、创建房间、加入房间、玩家信息记录、玩家同步、排行榜的创建)

3.5.2 游戏内机制补充(策划与ycy对接)

撤离点和出生点(见3.4.1与3.4.2)

玩家分数的计算规则

如果你死亡玩家得分=玩家击杀分(规则见表格)+ 道具得分 + 剩余血量x10 + 剩余护甲x2.5
如果你在最后10分钟内撤离玩家得分=玩家击杀分(规则见表格)+ 道具得分 + 剩余血量x10 + 剩余护甲x2.5 +1000
如果你在最初5分钟撤离玩家得分=玩家击杀分(规则见表格)+ 道具得分 + 剩余血量x10 + 剩余护甲x2.5 -1000
如果你迷失玩家得分=玩家击杀分(规则见表格)+ 道具得分 + 剩余血量x10 + 剩余护甲x2.5 -1500

游戏结束的触发条件

场上玩家均死亡/迷失/撤离


4.美术需求(动画、美术、策划对接)

4.1 模型 目前暂时以现有素材替代,借助现有素材完成动画制作后再套新模型

  • 人物的模型
  • 各类武器、道具、配件的模型(种类表格内已给出)
  • 场景需要的模型
    • 建筑物(地图本身)
    • 各类摆设
    • 各类道具箱
    • 撤离点

4.2 UI

4.2.1 图标 目前需要的Sprite暂以现有素材替代

图标

  • 武器、配件、道具的图标均为模型的截图
  • 此外还需要:HUD(弹匣内弹药数/总弹药数,血条、技能条、护甲条、耐力条、击杀反馈图标、受伤反馈),背包内图标(配件槽的图标(配件槽可使用/配件槽不可使用)、各类道具槽的图标),道具箱内图标(武器槽、弹药槽、配件槽、药品槽、随机槽)

互动方案

光标移到图标上自动弹出文字介绍

4.2.2 面板 目前需要的Sprite暂以现有素材替代

  • HUD
  • 背包的面板
  • 各类道具箱的面板
  • 服务器选房间的面板
  • 选择角色页面的面板:选择角色的页面我想做成滑动的
  • 被击杀页面的面板:显示存活时间、最终分数、击杀数和击杀者(每颗子弹带有击杀者信息,角色需记录并更新最后一颗射向自己的子弹是谁,初始为NULL,死亡时调用这个属性)

4.2.3 字体(实在没空就先默认字体吧,有空再做)

4.3 动画与特效

角色

动作分类我已在3.1.2和3.3.3给出,不过技能和护甲受击是否需要做特效呢?

场景

撤离点状态的切换(比如仓库大门的打开和关闭)
道具箱状态的切换(打开和关闭)


5.音乐与音效需求

5.1 背景音乐 (有空再找)

主场景、选择角色、结算

5.2 音效

  • 玩家移动的各类音效
  • 枪械切换、射击、换弹的各类音效
  • 技能开启的音效
  • 与场景互动的音效
  • 护甲被击中的音效
  • 受伤、濒死的声音反馈
  • 回复道具使用的音效
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2022 Daniel Qi
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信