狂澜无间策划案及开发日志


    

前言

  这个学期有人机交互技术和三维游戏设计,打算做一个VR版的游戏。

  开始想做skyrunner和rail rush的VR版本,然后做着发现不是很契合VR的交互方式。

  随后玩了燥热VR和直到倒下之后感觉非常有意思,打算做一个类似的刀剑游戏。

资源

 模型主要就用polygon的樱花国、地牢、超凡怪物等包。

玩法

大循环

    演示的demo打算采取肉鸽的箱庭战斗玩法。

    在有限的场景内杀死一波又一波的敌人,在每一轮结束之后都有休整和升级的时间,随后进行下一轮战斗。

战斗系统

进攻

    【1】手段包括近战、投掷、远程、魔法、召唤。这次重点先实现前两个

    【2】每次有效打击均需消耗体力值、魔力值等。

    【3】打击伤害由武器类型、人物数值、单双手握持等决定。

    【3+】后续再考虑挥击力度,打击部分等因素。

    【4】可以后续加入处决和暗杀要素。

防御

    【1】手段包括闪避、格挡、护盾。

    【2】闪避即现实中避开砍来的攻击,不消化体力值。

    【2+】考虑左滚轮方向加按键式闪避,但视角问题得想一下。

    【3】格挡则是通过盾牌,刀剑等弹开对方的攻击,消耗体力值,但能创造破绽,削弱敌人韧性。

    【3+】考虑添加完美格挡,但是判定该怎么解决呢?

武器

    【1】抓握剑握住武器,肩键+手势使用武器的特殊能力(如果有)。

    【2】武器有耐久,格挡、进攻等行为会消耗武器耐久,耐久归零会破碎(特效类塞尔达)

    【3】武器分单双手也可以两者都有,但是会影响战技和数值。

    【4】战斗中可以夺过敌人的武器使用,有数值判定

    【5】武器还可以通过商店购买、法术召唤等方式产生

    【5+】等搞定姿势识别之后可考虑在两腰、双肩、两胸(待定)、双臂(待定)设置空4/6/8个装备栏以抽取装备。

道具

    【1】初期考虑用右键滚轮按下后的圆扇形选单搞定

    【2】后期可以考虑aylx的方法。

    【3】以下是初期的几个道具设想

        【1】传送苦无/传送箭/..,传送到射中的地方。

        【2】各类回复药水

        【3】各类投掷物(参考法环)

主动技能

    【1】占用X\Y\A\B 以及空手时的肩键和抓握键、以及左滚轮按下(冲刺)。

    【2】考虑右手A/B键一个可以做成魔法选单,可以是魔法的施放键。

      不过这样不就所有魔法都用右手了吗,是否左手也占用一个键?

    【3】后续可加入不同形态的变身,每个形态的能力都不一样。

    【4】以下是设想的几个能力

        【1】子弹时间:按下X键,减慢时间,将持续消耗体力值

        【2】各类冲刺:左滚轮按下+方向键

        【3】念力:空手时对准远处的可操控物体,按住抓握键则可以将物体拉向自己。

        【4】标记(传送/燃烧等等):手按在敌人/建筑表面时,按下抓握键放标记,随后可通过远程抓握键触发。

        【5】火药跳跃,指向远处的火焰按下跳跃键可直接传送过去。

        【6】定身术,可定住敌人几秒。

        【7】各种花里胡哨的魔法

被动技能

    【1】以下是设想的一些被动技能。

            【1】应激传送:可以参考诡秘的纸人替身或只狼的雾羽

            【2】夺魂系列: 击杀怪物回复生命、法力等,或获得几秒子弹时间等。

            【3】各类数值强化,如强化削韧性等。

            【4】各类免疫

            【5】白刃取:在子弹时间中夺取对方武器并反手攻击其弱点,可打一套处决。

成长系统:

升级成长

    杀死怪物可获得经验,特效可参考将怪物破碎时的光粒吸入体内。

    每次升级时可选择一次成长,成长选项可参考地牢探索者,几项数值中选择。

    以下为预设的数值类型,可参考环

   【1】体力:血量【2】专注:魔法【3】精力:耐力值

   【4】筋骨:防御力【5】力量:物理伤害【6】智慧:魔法伤害

   【7】敏捷:移动速度【8】感知:时停速度

    每次升级会随机选中其中3/4项呈现,由玩家选一个升级。

    每个属性提升3级之后会有一个强化分支选择,如以下

    【体力】

        【1】吸星术:杀死敌人恢复生命

        【2】渴血呼吸: 受到伤害可在一定时间通过对敌人攻击来回复失去的血量(血缘中的反击回血)

        【3】生生不息:随时间缓缓回血

        【4】澎湃气血:提高生命上限

        【5】血蓝转换·血:消耗魔力值后恢复一定生命值

        【6】血之护盾:血满之后溢出的生命值回形成一层短暂的护盾。

        【7】受伤后提升少量生命上限

    【专注】

        【1】夺魂:杀死敌人恢复魔力

        【2】理之调息:随时间缓缓恢复魔力

        【3】血蓝转换·蓝:失去生命值时恢复一定魔力

        【4】挥剑护体:蓝满之后溢出的魔力值会在身后形成辉剑向前方射出

    【精力】

        【1】回阳调息:杀死敌人恢复精力

        【2】精妙操控:降低精力消耗

        【3】肺活增强:加快精力回复

        【4】强健体魄:提高精力上限

        【5】肾上腺素:受伤后加快精力恢复一段时间。

        【6】消耗精力提升一定精力上限

    【筋骨】

        【1】钢筋铁骨:增强防御力

        【2】荆棘:反伤

        【3】回弹:返回削韧性

        【4】打熬:每次受伤,防御少量增加

        【5】铜墙铁壁:暂定移动受到攻击后反伤、削韧(参考:黑神话)

    【力量】

        【1】增加攻击力

        【2】增强削韧

        【3】空手强化:空手蓄力,能获得极大削韧的一击

        【4】消耗精力后,提升少量攻击力

        【5】双手强化,单手强化等..

    【智慧】

        类同上

        【蓄力贯穿】

    【敏捷】

         雷同上

        【冲刺强化】等

     【感知】

        【1】受伤时停

        【2】击杀时停

        【3】减少时停开销

        【4】

交易

    【货币】货币和材料,通过与场景交互和击杀怪物获得。

    【货郎】每轮战斗结束后可在修整商店购买道具,以及一些常见魔法、武器等。

    【隐藏商店】藏在地图的某处,可兑换稀有道具

    后续可以考虑拆分出铁匠铺、法术老师等不同npc。

    在这些可以学习魔法,获得道具和独特武器,通过各类方式提升上述数值。

    这里要提一下设想的魔药系统。

    【魔药】

    获得魔药配方、通过材料调配魔药。魔药可提供数值加成和独特技能。

日志

玩法实现

        对于要实现的demo来说要实现以下几点:

  【1】场景内与现实同步的视角与位移

  【2】手柄变作手,同时实现靠近物体能自动吸附抓握

  【2+】投掷挥砍的速度模拟。

  【3】场景的子弹时间效果

  【3+】随人物运动而变化的子弹时间效果

  【4】简易的敌人AI

  【4+】受击动作

  【5】物品破碎效果.

  【6+】景深与抗锯齿

    经过这几天测试,技术选型结束。

    打算采用pico的SDK和unity 内置的unityXR

    因为(1)steamVR 的openXR与unityXR不是很兼容,输入系统要重新桥接

    (2)学校的网络不支持我无线连接电脑,不如直接内置在一体机里面。

    不过一体机的性能堪忧啊,不知道我的优化能不能跟上。

目前改进方向

    【1】key点添加碰撞体后,通过 auto hand 的插件 实现更真实的手部交互

    【2】通过识别collider挂载的子对象名称,获取受到打击的部位,已实现不同部位不同的打击效果。(初步完成)

   【3】购买pico的腿环,加入脚步映射,使腿部行动更加自然。(思考:如何解决摇杆移动的动作问题,纯平移吗?=v=)

  【4】用Scriptobject给物体做属性容器,保存其质量、扔出力度、角速度、物理材质,受击反馈等,以差异化其表现,不过需要大量调参,暂且搁置。

10.5

    [1]将主要模型包导入,并测试了主场景的显示。

    发现:帧数较低 & 远处场景锯齿化严重。

    [2]搭建了一个简单的场景用于后续实验

    [3]用两个小方块简单代替了手,修复了重复生成的bug,不过具体原理未知

10.6

    [1]将小方块替换成了手,并加入了抓握的动作。不过阴影容易穿帮,后续找机会处理一下。

    [2]实现通过摇杆控制左右移动和左右转向,以及高度检测,调好的输入系统就很舒服。

    [3]实现了物体的抓取和抛出,用封装好的toolkit做脚本小子太舒服了。

    [4]在思考一下双手抓取该怎么实现。

    [5]震动功能简单实现了,但是代码触发不太成功,需要debug一下。

    [6]没debug出来,不过测试发现sendHap能用,那只要换种通信方式就可以了。

    [7]明天测试一下按键映射和时停效果就可以正式开始gameplay模块的编写了

    [8]找到unity破碎插件rayfire,有空尝试一下。

10.7

    [1]将按键映射搞定了,第三方设备是这样的,需要自己做设备映射,同时按下,松开等情况也需要自己从物理状态中抽象出来。

    [2]暂停时间测试成功,人物实际运动不受影响。但是摇杆运动会收到影响,同时物体移动一卡一卡的,丢出物品时物品也会直接卡在那。

    [3]改变刚体插值方式之后,情况有所缓解,但还是速度快了还是一卡一卡的。

    [4]碰撞的物理模拟不是很理想,但是存在,可以用于破碎检测。

    [5]实验了丢出力的调整,情况挺理想,可以通过不同参数,实现不同投掷物的手感。

    [6]接下来就试着实现你动时间才动的效果。

    [7]unity XR toolkit有现成的隧穿组件,Mark一下,以后用到的时候可以用。

    [8]用polygon地下城的预览场景剪了张地图,方便之后调试。

    [9]换了种插值方式之后,暂停时间后的场景变的异常丝滑,不过问题是这个短时间扔出的物体的加速度会非常的大,当然如果采取superhot这种运动方式就没什么问题了。

10.8

    【1】今天赶路不怎么想写代码

    【2】将之前的场景另起一个scene装起来方便之后玩。

    【3】改变武器的movement type 使交互更加合理

    【4】之前的YouTube 有切物体和全身IK的教程,有空看一下。

10.9

    【1】最终想了想,不打算采取spuerhot的那种时停机制,而是偏向于魂系(只狼)的战斗风格,所以时停作为一种能力存在即可。

    【2】接下来要先解决玩法框架,再进行游戏的设计,这部分我打算放在玩法中进行阐述。

    【3】把战斗系统写的差不多了,升级系统留着明天上课慢慢写吧。

    【4】实现了双手抓握,不过手感有些奇怪。

    【5】将movement type改了回去,穿模就穿模吧,另一种移动类型容易颤动,在慢放中也不符合交互风格。

    【6】室友早早就睡了,敲不了代码,干脆下楼来继续写策划案,现在楼下装修的真的好,以后小说和诡秘策划案也可以考虑到楼下来写,当然,最好还是调下生物钟。

    【7】外部循环的基本框架也敲定了,明天把里面的细节补充一下。

10.10

    【1】搞一手IK,现在这么智能了吗?!

    【2】有点傻逼但也能用了,别要求太高啊,混蛋。

    【3】还行,但是穿模很严重,而后能捕捉的点太少了,match不上现实的动作,不如改用碰撞盒。

    【4】接下来先解决人物受击检测的问题。

    【5】先用boxcollider借用character controller的高度凑合一下吧。

    【6】看了pico的体感追踪,挺吸引人的,后续开发的完成度高的话可以考虑接入这个加入腿技。

    【7】今晚先搞到这,搜索下相关插件和教程,明天搞物理检测攻击。

10.11

    【1】昨晚没睡好,今天没什么精神

    【2】将RPG动作包和polygon的超凡生物给导了进去,打算通过IK先实现怪物始终转头看下玩家,再实现各类受击动作。

    【3】思考要不要把动作包的animator熟悉一下,还是自己从头写一个。

    【4】实现了头部的视角跟随,版本跟教材没对上,很多参数要自己去试试,可以想象后面开发有很多需要调参的地方,考虑要不要找一个

    【5】搞了一手finalIK,这位更是无脑,不过人物高度和臂展如何匹配现实该怎么办?这个比例又不是固定的,甚至要直接条mesh,难。

    【6】调一手模型大小,至少不这么违和。

    【7】把身高和臂展稍微留高点吧,这样兼容性强一些。

    【8】明天把抓握动作搞定,今天直接开摆。

10.12

    【1】搞定了抓握动作,隐藏弃用了之前的双手。

    【2】看了几个final IK的教程,又老又稀里糊涂的,可能是个好程序,但绝对不是一个好的讲师。

    【3】看到一些很不错的VR插件,但学习成本让我踌躇,考虑要不先这样凑合,以后需要升级时在考虑这些插件?

    【4】出现冲突,头不动了,考虑要不直接试试插件算了,实在是吸引人。

    【5】彻底抛弃前天的不成熟IK,权且当做练习。

    【6】双手的动作实现,现在添加手型碰撞体方便后面更真实抓握的实现。

    【7】key的手有些走形,也懒得加圆柱体了,开摆。

    【8】一坨,果然哪些效果都是通过高强度key点实现的,点打不好不如直接先内置的凑合一下。姑且算是留一个以后优化的地方吧。

    【9】mark一个,以后可以同这套系统的IK点直接做手势动作。

    【10】人物手好短啊,把模型大小重新调回去了。手臂粗就粗吧,手短穿模太影响体验了。

    【11】学到了碰撞矩阵的概念,或者说重温吧。现在有办法在人物身上塞入大大小小碰撞体了,明天开始尝试。

10.13

    今天课多,不想学习,摆一下。

10.14

    沉迷与东方夜雀食堂无法自拔,今天先简单完成角色碰撞体的设置。

【1】碰撞体的设置基本完成,不过实际游戏中如何每个角色都要设置过去着实有些麻烦,找一下有没有基于骨骼的自动添加碰撞体。

【2】网上找了一个skinned mesh collider 的插件,效果不错,不知道开销怎么样。下一步是如何监测所有子collider的碰撞。

【3】新增改进方向一栏,记录目前已知大的改进点。

10.15

   周末沉迷游戏,开摆一天

10.16

    【1】身体躯干检测完成,考虑在双手受击时加入个受击特效?

    【2】用函数将双手的震动抽象出来,免得直面API;

    【3】unityXR的震动时灵时不灵的,改用了Pico自带的API,能调的参数挺多,但是却没找到震动一次这样的API,还要自己去抽象出来。

    【4】重新key了一下手的位置和抓取点,虽然不是很精确,但至少符合现实的抓握方法。

    【5】接下来先去搞一下敌人身体不怎么动,目光始终注视着玩家的实现吧。

10.17

    【1】用aim IK调注视效果还挺方便,不过要更真实的效果还是要慢慢调参

    【2】发现auto hand的抓握动画还是受timescale的影响的,后面找机会改吧。

    【3】接下来先解决跟随贴人动画的实现,然后是攻击和受击动画吧。

10.18

    【1】尝试使用 Emerald AI 3.0 作为前期简易AI的实现方案,行为树可以暂时放一放,把流程搭出来再说。

    【2】乘着下载插件的时间,先把转场做了吧,先试一试体积雾的性能。

    【3】理了一下资产,免得都放在一个目录内乱糟糟的。

    【4】体积雾不了一点啊,这shader转编译的时间未免也太久了吧。

    【5】修复了因为移动素材导致的一些寻址匹配失败问题。

    【6】要开始备份起来了,免得一夜回到解放前。

    【7】我擦,有快10个g了,之前的skyrunner都有20个g,哪来这么大的东西?

    【8】先打包再说,冗余就冗余吧,不缺这点空间。

    【9】动画运动搞定了,就是死活检测不到人物,几个小时了,都不知道哪里有问题,恼。

    【10】相互检测是可以做到的,就是不知道为什么检测不到玩家,只能看那个抽象教程了。

    【11】查了FQA,发现这个是常见问题,这个系统未免也太自闭了一点,不支持第三方碰撞体等一堆杂七杂八的东西,考虑直接弃用这个插件吧。

    【12】搞了半天,等于是一晚上白干。upset。

10.19

    【1】blaze AI 的文档看着头大,不如试着抢救一下。

    【2】思考了一下,发现重新设一个character controller的子对象可以解决大部分问题。

    【3】解决了上下坡时模型不跟着走的问题。

    【4】调出来的攻击检测挺抽象的,不知道什么原因

    【5】解决了攻击检测的问题,抽象啊,教程给人的感觉是他只检测指定的layer,实际上却是检测全部,需要你自己去指定忽略哪些层,而不是指定检测哪些层。

    【6】引入puppet master 实现受击IK反馈,这么有名的插件之前我竟然不知道,还是玩少了。

    【7】接下来就是繁复的调参时间。

    【8】调了2个多小时,效果还不是很好,主要是每次编译都要花挺多时间的。

    【9】算了,就到这里吧。明天把简易AI应用到这里面去,开始测试攻击与受击。

10.21

    【1】调整了手部的layer,防止与手持的物体发生碰撞。

    【2】进一步调整了puppet的表现,但要更好还需要逐步调骨骼、懒、以后再说

    【3】成功将Emerald AI应用到骷髅士兵中,后续要解决受击的通讯问题。

    【4】调整了骷髅的动作速度与高度,应用了IK;

10.22

    【1】打算搞一个puppet master的受击监测,再由其为独立敌人的AI通讯提供数据,在此之前,先看下puppet master和Emerald AI 有没有便捷的方法。

    【2】没找到,直接用SendMessageUpwards和SendMessage搞定算了。

    【3】明天就UI和受击反馈的事情问下老师吧,现在搞定一下捡起物体时,改变物体tag的实现吧。

    【4】新设了一个武器类,用于存储武器信息,考虑攻击结算时再跟全局变量进行计算。

    【5】pico咋就没电了,调试不了一点。开摆,明天再说。

10.23

    【1】受击动作还是没有什么太好的办法,现阶段干脆死了直接碎了算了。

    【2】Emerald AI说是可定制度高,实际上依托,连选择攻击动作和受击动作都做不到。

    不过也还好,仅仅作为攻击用的AI插件来说到也不错。

    【3】尝试了一下puppet master的死亡效果,其受击反馈没做出来,不如尝试一下Emerald AI的。emmm,算下时间的话,受击动画先不做。把死亡和碎裂特效搞定。然后

把升级系统和UI简单的搞一下,再把音乐和场景逻辑搞定,接着敌人死亡掉落武器的动画,然后就可以交差了。

    【4】加入rayfire之后尝试打包,时间上可以接受,接着尝试将其应用在敌人死亡时。

    【5】emmm,效果不是很理想,打算明天试试Advanced Dissolve。

10.24

    今天沉迷游戏,小摆一手

10.25

    【1】打算用disolve FX和feel 插件简单满足一下画面表现。

    【2】试用成功,但不知道该怎么移植到自身的材质上,他材质是占一整张的。而我lowpoly风格的材质往往只有一小部分部分被用到,复制属性的方法不怎么奏效,明天看看有什么新的方法没有。

    【3】或许我应该先去把整个游戏的框架给搭出来,在花时间考虑画面表现的问题,先做出能交,后面的当做进阶,希望不是做完了之后就懒得它了。

10.26

    【1】通过调整溶解曲线,初步解决了溶解特效的问题,解下来的问题是如何只作用于单个物体。

    【2】又是折磨的 shader编译环节,犹豫到底要不要上这个特效了。

    【3】打算先测试一波运行表现,然后删除,等游戏的最后再考虑要不要加上去。

    【4】玩了半天的场景加载和rayfire破碎,发现pico孱弱的性能读条时间有点长,直接先去把核心的游戏循环搞定了再说这些吧。

10.27

    【1】今天写游戏综述,开摆一天。

    【2】查牧场like游戏,直接沉迷于星露谷,下周一在继续写。

11.1

    【1】坏了,沉迷的时间有点久了,让我愈发想开始搞我的命轮游戏了。今天开始接着搞狂澜,把基础的体验流程搞定再搞画面上的事情。

    【2】简单搞定了波次的生成。

    【3】简单配置了一下物体的悬浮。

    【4】明天依次解决:声音的添加、投掷的优化、教程的开始。

11.2

    【1】昨天说的前两项搞点,找声音着实花了我不少的时间。

    【2】考虑要不要做一下攻击到目标后的手部受击反馈,不过这么搞通信起来挺麻烦的。

    【3】先去把UI和教程先做了吧。

    【4】教程解决,接下来把双持一下,单持两下的攻击安排上。

    【5】伤害的传导也解决了,接下来就是如何找到是哪个手握住了东西。

11.3

    【1】今天尝试添加UI,发现怎么搞怎么碍眼,而且不能直接贴在overplay上,直接显示也是个曲面,技术难度大,用声音等作为反馈吗?周一问下老师吧。

    【2】明天的计划是添加更多的关卡,尝试设置带武器的怪物。

    【3】考虑增加curve UI ,然后把血量和精力放到正下方,感觉这个位置有说法。

11.4

    【1】curve UI 等问过老师了再说

    【2】给抓握武器加了通信,总算能知道每只手抓了什么东西了。

    【3】新的教程和教程关卡

    【4】emm,实现夺取武器之前,要不先把购物和升级给解决吧。

    【5】今天不想再搞了,明天先搞个血条,再用VR UI 搞个简易的升级系统吧。购物我觉得可以在商人面前搞个选单?

11.5

    【1】搞了半天,feel还是不能用。

    【2】加了血量条,加入攻击判定和简易的游戏结束

    【3】想搞点弹反功能,但不知道怎么判定。

    【4】考虑通过盾牌和时间限制来鼓励正面拼刀,而不是秦王绕柱。

11.6

    【1】试图用curve UI和光线交互实现升级系统,但交互一直实现不了,烦躁起来了,尤其是每次调试编译都需要花大量的时间,整个人都不好了。

    【2】实现不了升级系统的话,抢夺过程也不想搞了,就这样交了算了,基本功能都已经有了。

    【3】MD,用方块抓握简单的凑合一下吧。

    【4】给方块和交互手重新设置了一下layer,免得身体吧方块撞飞。

    【5】将方块替换成了水晶,这样子看得舒服一点。

    【6】把简单 的升级系统给搞定了。


文章作者: 金扬植
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 金扬植 !
评论
  目录