Init
1
05-SDHGame/.keep
Normal file
@@ -0,0 +1 @@
|
||||
this file is created for keeping the folder after git.
|
47
05-SDHGame/ActionRPG时代的设计/2021.9.14.md
Normal file
@@ -0,0 +1,47 @@
|
||||
## 道家手诀
|
||||
- 道教手印示范:https://zhuanlan.zhihu.com/p/61527767
|
||||
|
||||
- 道家九字真言手印教程:https://www.zhihu.com/zvideo/1421205441016205312
|
||||
|
||||
## 符箓
|
||||
清代道教手抄全符秘本:https://zhuanlan.zhihu.com/p/48983252
|
||||
|
||||
也可以参考图书馆。
|
||||
|
||||
## 施法Pose
|
||||
山西玉皇庙彩塑
|
||||
|
||||
《道士下山》《绣春刀》《禁武令之九幽》动画片《功夫小子》
|
||||
|
||||
## 呼吸吐纳法
|
||||
《武当九式吐纳养生法》《传统武术答疑解惑录》
|
||||
|
||||
修炼步骤:
|
||||
- 两脚平衡分开与肩同宽
|
||||
- 脚十趾轻轻抓地
|
||||
- 脚掌心微空
|
||||
- 涌泉穴有上吸之意
|
||||
- 双腿微弯曲
|
||||
- 双手掐腰大拇指朝后(或双手相互叠加于小腹关元穴前)
|
||||
- 双肘微微前扣,胸微含,肩打开
|
||||
- 舌抵上腭双唇紧闭牙齿松开
|
||||
- 下颚微微内收,顶劲领起
|
||||
- 眼平视或略微向下
|
||||
- 立身中正
|
||||
- 鼻呼鼻吸
|
||||
|
||||
**呼吸动作**
|
||||
>逆腹式呼吸(吸气时收腹,吐气时小腹鼓起),吸气时提肛收阴,同时收腹向前上方送出胯部。吐气时小腹鼓起同时开档泛臀(向上轻轻翘臀),吸气要深吐气要长,吸和呼用时一致,即吸多少呼多少,气息绵绵不断,呼吸和动作完全保持致,习练十几分钟做到320次吐纳。吐纳完毕收功三次结束。
|
||||
|
||||
**力度掌握**
|
||||
>视练功情况和练功者身体状况而定,一般前期用文火吐纳(力度小,且大部分朋友的身体情况太差了),待身体逐渐恢复健康后,想练功亦或者养生,由学员自行选择,文火武火吐纳,选择一种持续学习。一般要根据体质的差异和练功阶段制定不同的练习计划,季节不同、地域不同、时辰不同也有所变化。具体细节要在学习过程中。由专业的教练把控指导。
|
||||
|
||||
**意金导入**
|
||||
>练功前期:意守关元,即呼和吸时意念想着关无穴的地方(肚脐下四指),丹田处,学前先找到属于自己的丹田位置!
|
||||
|
||||
>练功中期:吸气时,意守长强,长强穴得气,清气沿督脉上升,气冲百会;呼气时,气沿任脉下降,气沉会阴,一吸一呼一周天,即循小周天。
|
||||
|
||||
>练功后期:循大周天,这里不详述。
|
||||
|
||||
## 参考电影
|
||||
林正英系列:
|
107
05-SDHGame/ActionRPG时代的设计/ActionRPG中的攻击逻辑与其他实现方法.md
Normal file
@@ -0,0 +1,107 @@
|
||||
## 角色类
|
||||
逻辑位于BP_PlayerCharacter中,通过按键事件执行ActivateAbilitiesWithTags(定义于ARPGCharacterBase,本质上是执行AbilitySystemComponent的TryActivateAbilitiesByTag函数)、ActivateAbilitiesWithItemSlot(定义于ARPGCharacterBase,本质上通过查询ItemSlot来激活对应的Ability,使用了AbilitySystemComponent的TryActivateAbility函数)来施放“Ability”。
|
||||
|
||||
## Ability类
|
||||
在ActionRPG中攻击Ability以PlayMontageAndWaitForEvent为主,这个节点是一个GameplayTask,具体的介绍可以参考我之前的文章。攻击Ability的基类为Abilities/Shared/GA_MeleeBase。
|
||||
|
||||
一种是武器攻击判定,在Ability类中通过PlayMontageAndWaitForEvent节点播放Montage,之后通过在Montage中设置的AnimNotify(WeaponAttackNS)调用对应角色的WeaponActor的EventBeginWeaponAttack,来开启WeaponActor的碰撞判定。之后将碰撞的Actor信息通过SendGameplayEventToActor发送给角色。
|
||||
|
||||
另一种是范围技能,直接通过AnimNotify(RangeAttackNS)向对应角色发送EventTag来触发(SendGameplayEventToActor)。
|
||||
|
||||
### PlayMontageAndWaitForEvent事件处理
|
||||
PlayMontageAndWaitForEvent之后会接收到信息(本质是角色的AbilitySystemComponent接收到事件,之后再广播委托),Event会包含发起者与目标对象,之后调用ApplyEffectContainer函数,将Ability类中设置的GameplayEffect应用到与之对应的target上(通过设置对应的URPGTargetType派生类)。
|
||||
|
||||
### URPGTargetType
|
||||
在GA_MeleeBase中默认使用的目标对象获取类为URPGTargetType_UseEventData。可以看得出是直接使用了EventData。
|
||||
```
|
||||
void URPGTargetType_UseEventData::GetTargets_Implementation(ARPGCharacterBase* TargetingCharacter, AActor* TargetingActor, FGameplayEventData EventData, TArray<FHitResult>& OutHitResults, TArray<AActor*>& OutActors) const
|
||||
{
|
||||
const FHitResult* FoundHitResult = EventData.ContextHandle.GetHitResult();
|
||||
if (FoundHitResult)
|
||||
{
|
||||
OutHitResults.Add(*FoundHitResult);
|
||||
}
|
||||
else if (EventData.Target)
|
||||
{
|
||||
OutActors.Add(const_cast<AActor*>(EventData.Target));
|
||||
}
|
||||
}
|
||||
```
|
||||
除了c++ 实现的URPGTargetType,ActionRPG还使用蓝图实现了TargetType_SphereTrace(其他皆只为参数修改)。本质上还是碰撞判断,所以个人还是推荐使用C++来实现,以获得较好的性能。
|
||||
|
||||
## WeaponActor
|
||||
其中攻击判断逻辑位于WeaponActor中的ActorBeginOverlap事件,其他逻辑主要为开启与关闭碰撞判定。
|
||||
|
||||
Instigator为Actor中伤害系统(Damage)中的组成部分,可以理解为伤害的发起对象。在WeaponActor中即为装备了该武器的角色类。
|
||||
|
||||
攻击判定逻辑大致为:
|
||||
1. 判断碰撞到武器是否为武器本身。
|
||||
2. 如果不是,且处于攻击过程中,就向WeaponActor发送GameplayEvent(通过)。
|
||||
|
||||
[WeaponActor蓝图](http://blueprintue.cn/render/-9q3fr9h)
|
||||
|
||||
## ActionRPG中的Combo实现
|
||||
官方的ActionRPG是将连击逻辑中跳转控制放在Character类中。
|
||||
|
||||
在播放Montage的过程中触发AnimNotify,AnimNotify会设置BP_PlayerCharacter类中的JumpSectionNotify引用(还会设置一个Bool变量)。并在需要跳转MontageSection时读取SectionName以进行跳转。
|
||||
|
||||
DoMeleeAttack中的逻辑为:如果符合若干前置条件,并且没有施放GA_MeleeBase及其子类能力,就施放指定Melee能力。如果正在施放Melee能力,则进行Montage跳转(调用AnimInstance的MontageSetNextSection)。
|
||||
|
||||
具体的实现请参考ActionRPG案例中的Blueprints/AnimNotifies/JumpSectionNS与Blueprints/BP_PlayerCharacter中的DoMeleeAttack函数。
|
||||
|
||||
## 本人尝试的方法
|
||||
本人想把所有逻辑都写进Ability中,尝试了以下几个思路:
|
||||
|
||||
>通过AbilityActorInfo获取AnimInstance,之后绑定AnimationInstance中的OnPlayMontageNotifyBegin与End委托,来获取Notify信息。
|
||||
|
||||
这个方法因为OnPlayMontageNotifyBegin与End委托没有暴露给蓝图,并且还需要所以需要编写c++有点麻烦。另外我还写了个AnimNotifyState类,重写若干虚函数以绑定这两种委托。因为默认只有UAnimNotify_PlayMontageNotifyWindow与UAnimNotify_PlayMontageNotify会触发这两种委托。这里先介绍一下:
|
||||
|
||||
**ActorInfo**
|
||||
是一个包含各个组件指针的类,换句话说就是一个GAS组件拥有者的相关组件指针类(应该是在Component初始化时填充数据)。
|
||||
```
|
||||
/** Cached off data about the owning actor that abilities will need to frequently access (movement component, mesh component, anim instance, etc) */
|
||||
TSharedPtr<FGameplayAbilityActorInfo> AbilityActorInfo;
|
||||
```
|
||||
你可以在Ability蓝图类中调用GetActorInfo获取,之后再通过ActorInfo获取AnimInstance操作Montage。
|
||||
```
|
||||
UAnimInstance* AnimInstance = AbilityActorInfo.IsValid() ? AbilityActorInfo->GetAnimInstance() : nullptr;
|
||||
```
|
||||
当然也可以使用
|
||||
```
|
||||
/** Returns the avatar actor for this component */
|
||||
AActor* GetAvatarActor() const;
|
||||
```
|
||||
进行获取。
|
||||
|
||||
|
||||
但上面介绍的方法依然需要将Montage跳转逻辑写在角色类中,这主要是因为调用TryActivateAbilityByClass函数会重复创建Ability实例。所以
|
||||
|
||||
>我写了个新的TryActivateAbilityByClassOrReturnInstance函数,当存在指定类型的Ability实例就不会创建新的实例而是返回这个实例。
|
||||
|
||||
这样我们就可以把所有逻辑都写在Ability类中了。但是这个方法需要编写若干c++代码,比如增加GamplayAbility存在实例时的事件、增加若干TryActivateAbility系列函数,这对只会蓝图的开发开发者不太友好。所以下面我将介绍另一种方法:
|
||||
|
||||
## 使用GameplayEvent控制
|
||||
这个方法的好处在于不用写c++代码,能把技能相关代码都写进Ability类中。在外部使用Event对Ability进行控制,易于观察与控制,同时也进行了解耦。
|
||||
|
||||
1. 在AnimNotify中使用GetOwner获取Character后作为SendEventToActor的参数使用,并在SendEventToActor的参数中填入对应的GameplayEvent标签与所需的Payload结构体。
|
||||
2. 在角色类中对应的输入事件中首先判断是否存在对应标签的Ability(参考Blueprints/BP_Character中的IsUsingMelee),之后根据结果执行TryActivateAbilityByClass构建Ability或者调用SendGameplayEventToActor发送Combo事件。
|
||||
3. 在对应Ability中RPGAbilityTask_PlayMontageAndWaitForEvent节点的RecivedEvent下,判断接收到EventTag并执行对应的逻辑,比如:接收到ComboEvent则进行Montage跳转,接收到HitEvent则将DamageEffect应用到目标上。
|
||||
|
||||
如果你有强迫症,想把所有逻辑都写进Ability中,那就把这个方法与上一种方法合起来使用吧。
|
||||
### 有关SendGameplayEventToActor
|
||||
1.~~SendEventToActor所用的GameplayEventTag必须是Event的子标签。~~ 其实是因为ActionRPG的PlayMontageAndWaitForEvent节点加了过滤事件(EventTag形参)
|
||||
|
||||
2.SendEventToActor的Payload形参中的OptionalObject可以用来传递自定义的UObject,以此来达到传递自定义数据的目的。具体操作为:使用ConstructObjectFromClass节点对自己定义的UObject(在UObject中定义各种数据变量)进行实例化(C++好像是NewObject),再对实例进行修改后(修改变量或者调用函数操作)连入OptionalObject。之后就可以在RecivedEvent委托中获取这个UObject。
|
||||
3.SendEventToActor的目标Actor必须继承IAbilitySystemInterface接口。
|
||||
|
||||
## 结语
|
||||
以上就是ActionRPG与本人Demo的攻击判断逻辑,但有一些还是需要改进:例如对于使用骨骼模型的PhysicalAsset进行攻击判断的方案,这套逻辑容易造成重复判定。
|
||||
|
||||
在看源码的时候发现了个不错的GameplayAbility文档:
|
||||
[https://github.com/tranek/GASDocumentation](https://github.com/tranek/GASDocumentation)配合最近挺火的https://www.deepl.com/translator翻译,效果更佳。
|
||||
|
||||
除了文档之外,它还包含了一个小项目,我大致看了一下,推荐在学习过ActionRPG后在学习这个项目。
|
||||
这个项目使用AbilityInput绑定与GameplayCue,使用Tag进行技能施放与阻止施放判断,同时有更多的c++代码,对于ActionRPG是一个很好的补充。
|
||||
|
||||
另外我还找到一个中文版(然而并不全),大致看了一下应该是学习了这个项目后写的笔记,英语不太好的可以参考下:
|
||||
https://tianqi.li/2020/02/29/gas-document.html
|
54
05-SDHGame/ActionRPG时代的设计/GameplayAbility与角色类武器类逻辑.md
Normal file
@@ -0,0 +1,54 @@
|
||||
## ActionRPG中的文件夹结构
|
||||
```
|
||||
Ability
|
||||
|——DataTables (数据表)
|
||||
|——Enemies (敌人的能力)
|
||||
|——Player (玩家的能力)
|
||||
└──Shared (继承c++父类的基础蓝图类)
|
||||
```
|
||||
## 需要实现的基础能力类
|
||||
GA_MeleeBase
|
||||
GA_PotionBase
|
||||
GA_Skill
|
||||
GE_DamageBase
|
||||
GE_DamageImmune
|
||||
GE_HealBase
|
||||
GE_MeleeBase
|
||||
GE_RangedBase
|
||||
GE_StatsBase
|
||||
|
||||
|
||||
## 武器类实现
|
||||
其中主要的攻击逻辑位于WeaponActor中。(ActionRPG中是WeaponActor引用DataAsset)
|
||||
基础的DataAsset用于设置数据(GameplayAbility)以及关联需要加载Asset。
|
||||
### 攻击判定
|
||||
OverlapBegin:
|
||||
对进入判定区域的Actor发送hit信息,也就是GameplayEventData,里面带有事件类型(攻击类型)、施放者与目标。
|
||||
OverlapEnd:用于重置OverlapBegin中的DoOnce判断。
|
||||
|
||||
BeginWeaponAttack:设置初始相关变量,设置IsAttacking为true,开启碰撞判断
|
||||
EndWeaponAttack:设置IsAttacking为false,关闭碰撞判断。
|
||||
### 伤害以及队伍判定
|
||||
队伍判定可以使用GameplayEffect做成Buffer进行判断,之后再使用计算类或者修改类进行伤害计算。
|
||||
|
||||
### 关于GA_MeleeBase部分
|
||||
执行PlayMontage And Wait for Event(GameplayTasks),播放Montage,
|
||||
如果在执行过程中发生了事件则会执行应用GameplayEffect事件。如果发出的Gameplay事件与传入的 EventTags 匹配,将使用标记和有效负载激活 EventReceived 执行引脚,然后调用 ApplyEffectContainer 函数。
|
||||
|
||||
GA_MeleeBase的EffectContainerMap会设置EventTag与GameplayEffect的map。PlayMontage And Wait for Event会根据接收到EventTag对目标对象赋予GameplayEffect.
|
||||
|
||||
这些EventTag是从Montage中的AnimNotify中赋值给WeaponActor,之后再调用WeaponActor的BeginAttack事件。
|
||||
### RPGtargetType类
|
||||
从武器类中得到的GameplayEventData数据中提取到目标的Actor指针。
|
||||
## 角色类与敌人类的实现
|
||||
|
||||
### 连击逻辑
|
||||
如果处于能施放能力状态下,再进行是否处于连击状态判断,之后选择激活武器能力或者跳转MontageSection。
|
||||
|
||||
个人觉得连击的逻辑与变量还是放在武器类中比较好。
|
||||
AnimNotiy里控制下一个MontageSection变量与偏移事件。相关的变量与计时在武器类中。
|
||||
|
||||
## GameMode与GameInstance逻辑
|
||||
GameMode编写控制游戏开始与结束的逻辑,对于Demo可以编写角色重生与死亡后的逻辑。
|
||||
|
||||
|
119
05-SDHGame/ActionRPG时代的设计/GameplayTag.md
Normal file
@@ -0,0 +1,119 @@
|
||||
```
|
||||
Ability(能力类型:使用物品、连击、随机数值技能、技能)
|
||||
|——item √
|
||||
|——Melee √
|
||||
|——Ranged
|
||||
|——Skill √
|
||||
| └──GA_QuickStep √
|
||||
Cooldown(技能冷却:存在即代表技能处于冷却状态)
|
||||
| └──Skill
|
||||
EffectContainer(GameplayEffect容器:用于将所有Effect应用到目标)
|
||||
| └──Default
|
||||
Event(事件)
|
||||
| └──Montage
|
||||
| |——layer
|
||||
| | |——Combo
|
||||
| | |——BurstPound
|
||||
| | |——ChestKick
|
||||
| | |——FrontalAttack
|
||||
| | |——GroundPound
|
||||
| | └──JumpSlam
|
||||
| └──Shared
|
||||
| |——UseItem √
|
||||
| |——UseSkill √
|
||||
| └──WeaponHit √
|
||||
Status(状态)
|
||||
| └──DamageImmune
|
||||
AttackType
|
||||
| └──Physical
|
||||
| | |——Chop
|
||||
| | |——Hit
|
||||
| | └──Stab
|
||||
| └──Magic
|
||||
| |——Fire
|
||||
| |——Ice
|
||||
| |——Shadow
|
||||
| └──magic
|
||||
DefensiveType
|
||||
| |——NoArmor
|
||||
| |——LightArmor
|
||||
| └──HeavyArmor
|
||||
Team
|
||||
| |——Monster
|
||||
| └──Player
|
||||
```
|
||||
|
||||
## 角色属性
|
||||
生命、最大生命值
|
||||
符文、最大符文值
|
||||
体力、最大体力值
|
||||
攻击力、防御力
|
||||
移动速度
|
||||
韧性
|
||||
|
||||
## 武器属性
|
||||
冲击力 分为5个等级Light,中是normal,大是heavy,击趴击飞是massive 强制force。
|
||||
攻击类型
|
||||
|
||||
## 防具属性
|
||||
其中,将物理防御力,防打击,防斩击,防突刺统称为物理抗性
|
||||
将法术防御力,火防御力,雷防御力统称为属性抗性
|
||||
将出血抵抗力,毒抵抗力,诅咒抵抗力统称为异常状态抗性
|
||||
强化防具时,所有物理抗性与所有属性抗性的变化是一样的,而异常状态抗性则是另外的变化规律。
|
||||
剩余三项:韧性,耐久和重量不会因强化而发生改变
|
||||
|
||||
## AttackType
|
||||
物理攻击:斩、打、刺
|
||||
魔法:火、冰、暗、法术
|
||||
|
||||
## DefensiveType
|
||||
无甲、轻甲、重甲
|
||||
|
||||
## 物品
|
||||
### c++定义的物品类
|
||||
RPGPotionItem 放在地上的buff或者药水什么的
|
||||
RPGSkillItem 技能
|
||||
RPGTokenItem 凭证或者货币,钱或者魂
|
||||
RPGEquipmentItem 装备
|
||||
|
||||
## 各种倍率
|
||||
抗性
|
||||
无 极少 少 中 高 极高 免疫
|
||||
0% 12.5% 25% 50% 75% 87.5% 100%
|
||||
|
||||
被攻击有效程度
|
||||
70% 85% 100% 135% 150%
|
||||
强 较强 中 较弱 弱
|
||||
|
||||
## 各种状态
|
||||
|
||||
|
||||
|
||||
# actionRPG原始表
|
||||
```
|
||||
Ability(能力类型:使用物品、连击、随机数值技能、技能)
|
||||
|——item
|
||||
|——Melee
|
||||
|——Ranged
|
||||
|——Skill
|
||||
| └──GA_PlayerSkillMeteorStorm
|
||||
Cooldown(技能冷却:存在即代表技能处于冷却状态)
|
||||
| └──Skill
|
||||
EffectContainer(GameplayEffect容器:用于将所有Effect应用到目标)
|
||||
| └──Default
|
||||
Event(事件)
|
||||
| └──Montage
|
||||
| |——layer
|
||||
| | |——Combo
|
||||
| | |——BurstPound
|
||||
| | |——ChestKick
|
||||
| | |——FrontalAttack
|
||||
| | |——GroundPound
|
||||
| | └──JumpSlam
|
||||
| └──Shared
|
||||
| |——UseItem
|
||||
| |——UseSkill
|
||||
| └──WeaponHit
|
||||
Status(状态)
|
||||
└──DamageImmune
|
||||
```
|
67
05-SDHGame/ActionRPG时代的设计/MegaScans中符合黑魂风格的场景.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 搜索
|
||||
scorched、scorch、burnt wood、charcoal
|
||||
|
||||
# 推荐合集
|
||||
TUTORIAL
|
||||
FANTASY FORT
|
||||
魔兽世界场景
|
||||
|
||||
TUTORIAL
|
||||
FOREST PATH
|
||||
森林
|
||||
|
||||
TUTORIAL
|
||||
SCI-FI LANDSCAPE
|
||||
|
||||
COMMUNITY
|
||||
FOREST RUINS
|
||||
|
||||
COMMUNITY
|
||||
GEODOME
|
||||
|
||||
COMMUNITY
|
||||
SHORELINE REMAINS
|
||||
|
||||
COMMUNITY
|
||||
THE FOREST STAIRWAY
|
||||
|
||||
# ENVIRONMENT
|
||||
ICELAND
|
||||
灰白色的沙地与石头都很适合
|
||||
|
||||
CASTLE RUINS
|
||||
北欧风格城堡
|
||||
|
||||
ROMAN EMPIRE
|
||||
里面的石柱与石砖较为合适
|
||||
|
||||
WILD WEST
|
||||
欧洲乡村,里面的轮子、水桶会比较合适
|
||||
|
||||
LIMESTONE QUARRY
|
||||
UE5演示中的神庙
|
||||
|
||||
RUBBLE
|
||||
里面的碎石堆挺不错
|
||||
|
||||
# ESSENTIAL
|
||||
JUNGLE FLOORS
|
||||
丛林地面贴花
|
||||
|
||||
MEDIEVAL TOOLS
|
||||
中世纪工具,锤子、榔头、铁砧、镰刀、铁链
|
||||
|
||||
MOSS
|
||||
苔藓
|
||||
|
||||
NATURAL SCATTER DEBRIS
|
||||
这个集合中的鹅卵石,碎屑和枯叶填充您的场景。
|
||||
|
||||
Sands
|
||||
沙地
|
||||
|
||||
Wear-and-tear
|
||||
破损以及刮痕
|
||||
|
||||
Wooden-decorative
|
||||
木头装饰物
|
50
05-SDHGame/ActionRPG时代的设计/RPGGameplayAbility使用文档.md
Normal file
@@ -0,0 +1,50 @@
|
||||
## RPGGameplayAbility使用说明
|
||||
### AnimNotify
|
||||
- ANS_SendGameplayEventToSelfTwice
|
||||
- ANS_AddGameplayEffectToSelf
|
||||
|
||||
### GameplayAbility
|
||||
/** Gameplay标签与GameplayEffect Map */
|
||||
ActionRPG框架使用
|
||||
|
||||
- TMap<FGameplayTag, FRPGGameplayEffectContainer> EffectContainerMap:Tag与Effect的对应关系Map,根据接收到的Tag应用对应的GE。
|
||||
- FGameplayTagContainer ActivateEffectTag:存储被激活的EffectTag。
|
||||
- MakeEffectContainerSpecFromContainer():根据EffectContainerMap构建EffectContainerSpec。
|
||||
- MakeEffectContainerSpec():构建EffectContainerSpec。
|
||||
- ApplyEffectContainerSpec():对指定目标应有GE。
|
||||
- ApplyEffectContainer(): 调用MakeEffectContainerSpec生成FRPGGameplayEffectContainerSpec,再对指定目标应用GE。
|
||||
|
||||
|
||||
- TMap<FGameplayTag, FActiveGameplayEffectHandle> ActivateEffectMap:Tag与ActiveEffectHandle的Map.
|
||||
- BP_ApplyGameplayEffectToOwnerAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- ApplyGameplayEffectToOwnerAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- K2_ApplyGameplayEffectSpecToOwnerAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- ApplyGameplayEffectSpecToOwnerAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- BP_ApplyGameplayEffectToTargetAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- ApplyGameplayEffectToTargetAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
K2_ApplyGameplayEffectSpecToTargetAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- ApplyGameplayEffectSpecToTargetAndSaveHandle():往ActivateEffectMap添加Tag与Handle的版本。
|
||||
- RemoveActiveGameplayEffectByContainer():根据指定Tag查询ActivateEffectMap,之后根据Tag对应的Handle移除对应自身的GE,不指定就移除所有Map存储的GE。
|
||||
|
||||
### AttributeSet
|
||||
具体请参考RPGAttributeSet.h中注释。
|
||||
#### 基础属性
|
||||
- 生命值 FGameplayAttributeData Health;
|
||||
- 最大生命值 FGameplayAttributeData MaxHealth;
|
||||
- 精力值 FGameplayAttributeData Energy;
|
||||
- 最大精力值 FGameplayAttributeData MaxEnergy;
|
||||
- 魔法值 FGameplayAttributeData Rune;
|
||||
- 最大魔法 FGameplayAttributeData MaxRune;
|
||||
- 攻击力 FGameplayAttributeData AttackPower;
|
||||
- 防御力 FGameplayAttributeData DefensePower;
|
||||
- 移动速度 FGameplayAttributeData MoveSpeed;
|
||||
- 韧性 FGameplayAttributeData Tough;
|
||||
|
||||
### GameplayTag
|
||||
具体请参考Config目录下的GameplayTag.json文件。
|
||||
|
||||
### AsyncTasks
|
||||
- AsyncTaskAttributeChanged:异步检测属性集中的属性变化。
|
||||
- AsyncTaskCooldownChanged:异步检测冷却变化。
|
||||
- AsyncTaskEffectStackChanged:异步检测GE堆叠变化。
|
||||
- URPGAbilityTask_PlayMontageAndWaitForEvent:播放Montage并且执行对应回调事件。
|
100
05-SDHGame/ActionRPG时代的设计/SDHGame 二次元修仙设计日志.md
Normal file
@@ -0,0 +1,100 @@
|
||||
战斗:类似3d dnf
|
||||
游戏时间:一周目20~30小时,熟练玩家可以10小时通关。
|
||||
|
||||
## 创建新档
|
||||
捏脸、名字、roll属性点
|
||||
|
||||
## 锻体
|
||||
- 动作参考风格:普通的武器攻击,攻击招式比较基础与僵硬(普通人级别的招式)
|
||||
- 设计目的与时间:游戏开始,讲述开场剧情,完成开场事件后,进行教学关卡,会出现一位师傅NPC传授基础操作。完成后会以一段动画(游戏OP)之后进入练气期间(最后主角成功能放出对应属性的气)。
|
||||
- 游戏时间:时间会在5~30min。
|
||||
|
||||
## 练气
|
||||
- 该阶段可以做的事情:可以学习基础武器攻击招式(流畅的连招,江湖中人级别的招式),基础法术(提升状态)
|
||||
- 动作参考风格:黑魂初期(10h)与中期
|
||||
- 作战对象:初级门派中的弟子,后门派外围区域妖兽。
|
||||
- 增加系统:门派贡献与兑换系统(藏经阁、炼丹房、药园等)、增加门派每周任务与挑战、关系系统(门派里的关系)。
|
||||
- 设计目的与时间:熟悉游戏的具体设定,让玩家准备大致的修炼方向;可以去门派外围历练。
|
||||
- 游戏时间:2~3H。
|
||||
|
||||
## 筑基
|
||||
- 该阶段可以做的事情:可以学习中级武器攻击招式(带有些许轻微特效,武侠顶级招式),基础攻击法术与若干实用法术(隐身、金钟罩等具有实用效果的),但通过法力限制使用量。修仙之路正式开启。
|
||||
- 动作参考风格:黑魂后期(法师) 只狼
|
||||
- 作战对象:野外与秘境遇到外围门派人士与妖兽。
|
||||
- 增加系统:秘境(副本)、联机(在门派里召唤其他玩家)、炼丹系统、野外临时洞府系统、关系系统(世界关系)。
|
||||
- 设计目的与时间:正式开始游戏,玩家可以体验大部分修炼系统;可以去大地图历练,积累基础资源以及基础秘籍心法。
|
||||
- 游戏时间:3~5H
|
||||
|
||||
## (结晶)金丹
|
||||
结晶为其他小说的伪金丹
|
||||
|
||||
- 该阶段可以做的事情:可以学习高级武器攻击招式(带有微量中量特效<视招式品质与等级决定>,传说中的传奇武侠高手级别招式),中础攻击法术与升级版实用法术。可以把法术作为常规攻击手段,但依然可以被耗死。
|
||||
- 动作参考风格:绯红结系、鬼泣、旧战神3
|
||||
- 作战对象:碰到的一切敌人。出现XX阶妖兽、出现XX魔修。
|
||||
- 增加系统:大秘境(高难度副本)、带有特写的大招、野外永久洞府系统(你的家,家园系统,内有修炼设备、可以用于召唤其他玩家)、大地图开放新的探险区域、更多的势力、做符、法宝。
|
||||
- 设计目的与时间:探索更多的区域,了解基础的世界秘密;积累中级础资源以及中级秘籍心法。
|
||||
- 游戏时间:5~8H
|
||||
|
||||
## (具灵)元婴
|
||||
具灵为其他小说的伪元婴
|
||||
|
||||
- 该阶段可以做的事情:可以学习顶级武器攻击招式(好看就好,想怎么做就怎么做),高础攻击法术与高级实用法术。大招用得多会空蓝。
|
||||
- 动作参考风格:猎天使魔女、尼尔机械纪元 驱动妖精(黄游)
|
||||
- 增加系统:开放空岛区域(随机生成RougeLike)、增加空战、器灵。
|
||||
- 作战对象:大型怪物、超大型怪物(猎天使魔女)、一切让你感觉不爽的修士。
|
||||
- 设计目的与时间:让玩家体验完全的系统,探索所有区域,了解大部分的世界秘密;该阶段的设计游玩时间会是最长的。
|
||||
- 游戏时间:8~15H
|
||||
|
||||
## 化神(悟道)——羽化(登仙)
|
||||
- 该阶段可以做的事情:突破成仙,干死最终Boss。
|
||||
- 动作参考风格:阿修罗之怒
|
||||
- 增加系统:仙人模式,招式效果增强,回蓝回血加强。
|
||||
- 作战对象:大型怪物、超大型怪物(猎天使魔女)、一切让你感觉不爽的修士。
|
||||
- 设计目的与时间:最终结局,让玩家爽爽,同时解释世界秘密。
|
||||
- 游戏时间:1~2H
|
||||
|
||||
## 内容扩充
|
||||
- 完成基础战斗框架
|
||||
- 完善1个武器、拳法、法术战斗内容
|
||||
- 完善世界系统,关系、事件、奇遇。
|
||||
- 添加法宝、器灵、添加各种大秘境。
|
||||
|
||||
## 动作风格
|
||||
我玩过的动作游戏
|
||||
鬼泣1345 DMC、猎天使魔女1(一半)、忍者龙剑传2(开头)
|
||||
|
||||
与ARPG游戏有:
|
||||
黑暗之魂23、怪物猎人世界、刺客信条12345、噬血代码、绯红结系、噬神者3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 制作目标
|
||||
制作类似3D DNF
|
||||
|
||||
## 玩家游玩动力
|
||||
鬼谷八荒:
|
||||
怪物猎人:
|
||||
血源诅咒、黑魂、噬血代码、绯红结系:
|
||||
DNF:
|
||||
|
||||
【游戏设计室】游戏玩家动机模型,你属于哪类玩家?:https://www.bilibili.com/video/BV1e7411c7L7
|
||||
【游戏设计室】游戏是如何控制你的?游戏成瘾机制的心理学解释:https://www.bilibili.com/video/BV1Ca411c7JG
|
||||
【游戏设计室LITE】LOL技能设计的10个原则,如何设计优秀的技能?:https://www.bilibili.com/video/BV1YA41177vi
|
||||
|
||||
|
||||
|
||||
## 游戏主要玩法模式
|
||||
联机:
|
||||
迷宫探索与刷副本:
|
||||
|
||||
## 采用机制
|
||||
|
||||
## 模仿游戏
|
||||
我们没有特多精力进行具体的设计,只能先从成熟的游戏中选取精华成分进行套用。
|
||||
|
||||
## 动作风格与武技数量
|
||||
每种武器包含
|
||||
|
||||
### 后续DLC更新
|
45
05-SDHGame/ActionRPG时代的设计/其他游戏的分析.md
Normal file
@@ -0,0 +1,45 @@
|
||||
## 经营类参考
|
||||
修仙经营类《一方灵田》
|
||||
|
||||
## 通用
|
||||
【理科魂学家】魂系列战斗系统的迭代式演进:https://www.bilibili.com/video/BV1F4411c7Lg
|
||||
【理科魂学家】魂系列PVE战斗逻辑分类https://www.bilibili.com/video/BV1F4411c7Nz
|
||||
## 仁王2
|
||||
仁王中伤害计算的一些简单结论https://tieba.baidu.com/p/6664515040
|
||||
【仁王2】真正的半妖都是用头脑战胜敌人!https://www.bilibili.com/video/BV1tA411v7Rv
|
||||
【仁王2】七分钟教你压制人类敌人的最强打法(AI状态机分析):https://www.bilibili.com/video/BV1cV411r7Hd
|
||||
【仁王2】从敌人机制设计出发的打法原理概述:https://www.bilibili.com/video/BV1g5411t7gY
|
||||
【仁王2】部分人类boss习性探究与汇总https://www.bilibili.com/video/BV1HK411J7BV
|
||||
仁王2-对人战术学[关于对战人形boss你所需要知道的一切]-完结:https://www.bilibili.com/video/BV1Po4y127CJ/?spm_id_from=333.788.videocard.0
|
||||
|
||||
### 精力回复
|
||||
【仁王2】逐帧比对!精力回复速度的机制分析(上):https://www.bilibili.com/video/BV1fr4y1w7uE
|
||||
【仁王2】精力恢复速度的机制分析(中):https://www.bilibili.com/video/BV1pZ4y1V7ii/?spm_id_from=333.788.videocard.8
|
||||
|
||||
## 血源
|
||||
魂系列之殇——你不该轻视的圣杯地牢(前言)https://www.bilibili.com/video/BV1Nx411b7p1
|
||||
(亮度修正版)【血源诅咒】金杯地城&圣杯地牢——积分理论https://www.bilibili.com/video/BV1Ex411u7xW
|
||||
柯南讲堂【血源诅咒】迷宫基础知识问答https://www.bilibili.com/video/BV1kx411j79L
|
||||
【血源诅咒】金杯地城全面攻略-战前准备https://www.bilibili.com/video/BV1jW411a7TL
|
||||
【血源诅咒】金杯地城全面攻略-陷阱认知与破解https://www.bilibili.com/video/BV16W41187qH
|
||||
【血源诅咒】宝石篇-入门https://www.bilibili.com/video/BV1Ws411p7Dr
|
||||
【血源诅咒】宝石篇-负面词条研究https://www.bilibili.com/video/BV12s411E7zg
|
||||
印象破灭【黑暗之魂2】堆怪研究https://www.bilibili.com/video/BV1xW411f7uM
|
||||
|
||||
## 黑魂3
|
||||
印象破灭【黑暗之魂2】堆怪研究https://www.bilibili.com/video/BV1xW411f7uM
|
||||
黑暗之魂3【柯南讲堂】第二讲:化身薪王(暂定版)https://www.bilibili.com/video/BV1Ex411U7G1
|
||||
黑暗之魂3【柯南讲堂】第三讲:化身余灰(续15项)https://www.bilibili.com/video/BV1Cx41127LW
|
||||
|
||||
【深入理解魂系列】计算伤害时,为什么一定要有防御力?:https://www.bilibili.com/video/BV1SB4y1N7Pi
|
||||
### 韧性与冲击力
|
||||
【黑暗之魂3】韧性,冲击力,谁才是弟弟?https://www.bilibili.com/video/BV17t411p7bT
|
||||
【黑暗之魂3|世界的真相】基础系统讲解一 攻击力与伤害计算https://www.bilibili.com/video/BV1e7411v7Hg
|
||||
【黑暗之魂3|世界的真相】基础系统讲解二 冲击力-韧性机制https://www.bilibili.com/video/BV1e7411v7wn
|
||||
【黑暗之魂3|世界的真相】基础系统讲解三 硬直类型总结https://www.bilibili.com/video/BV1i7411v7u2
|
||||
## 只狼
|
||||
【理科魂学家|只狼】成功的实验品:只狼整体系统的设计理念https://www.bilibili.com/video/BV1ix411f7kq/?spm_id_from=333.788.videocard.1
|
||||
【理科魂学家|只狼】只狼中忍义手与部分道具的设计理念https://www.bilibili.com/video/BV1Tx411f7E4
|
||||
|
||||
## 绯红结系
|
||||
【绯红结系】二次元ACT大作如何才能打得爽?https://www.bilibili.com/video/BV1RU4y1g7ao/?spm_id_from=333.788.videocard.1
|
60
05-SDHGame/ActionRPG时代的设计/动画蓝图与状态机.md
Normal file
@@ -0,0 +1,60 @@
|
||||
## 动画状态机
|
||||
总状态
|
||||
Normal
|
||||
Fighting
|
||||
Dead
|
||||
|
||||
非战斗状态
|
||||
Normal
|
||||
Pickup
|
||||
Falling(可能不需要,以后删去)
|
||||
|
||||
战斗状态
|
||||
Normal
|
||||
Attack
|
||||
Step滑步
|
||||
Stun 昏迷陷入Debuff
|
||||
Damage 受到伤害
|
||||
KnockDown 被击倒
|
||||
Block 格挡
|
||||
kick 踹
|
||||
|
||||
## 动画蓝图大致逻辑
|
||||
```
|
||||
OutputPose
|
||||
MovementState: 融合 RagdollStates 状态机 通过CharacterBP中的RagdollEnd函数捕捉Pose。
|
||||
Foot IK: 动画层
|
||||
Hand IK: LocalToComponent=>TwoBoneIk(hand_l)=>TwoBoneIk(hand_r)=>ComponentToLocal
|
||||
AimOffset And Manual Spine Rotation:ApplyMeshSpaceAdditive Base:PostLayering Additive:AimOffsetBeHaviors(动画层)
|
||||
Blend(根据Enable_SpineRotation融合),B输入为:ComponentToLocal《=根据SpineRotation变量旋转各个Spine骨骼《=LocalToComponent《=PostLayering()。
|
||||
|
||||
Post Layering :LayerBlending《=BaseLayer、OvelayLayer、BasePose
|
||||
```
|
||||
BasePoses为基础Pose,里面均为一帧资源。
|
||||
OverlayLayer为几个不同运动状态的基础Pose。
|
||||
|
||||
动画主要的状态都集中在BaseLayer中。观察这个层可以学到以及技巧,你可以在层内制作多个状态机并将结果缓存到Pose中。之后再在一个主状态机中进行切换。
|
||||
|
||||
### BaseLayer
|
||||
层中分为大致3个部分:普通状态机、AdditiveTransition动画状态机与最终结果合并状态机。
|
||||
|
||||
#### (N)Locomotion States
|
||||
NotMoving主要使用了基础Pose。
|
||||
|
||||
RotateLeft与RotateRight主要为控制角色转身时的脚部动画,主要使用了ALS_N_Rotate_L90与ALS_N_Rotate_R90 Asset。
|
||||
|
||||
Moving状态则使用了(N)Locomotion Detail状态机
|
||||
#### (N)Locomotion Detail
|
||||
Walking使用了LocomotionCycles状态机
|
||||
|
||||
```
|
||||
graph BT
|
||||
A[Walking] --条件-->E(Run)
|
||||
E(Run)--条件-->B[RunStart]
|
||||
E(Run)--条件-->C[Walk->Run]
|
||||
B[RunStart] --条件-->D[Running]
|
||||
C[Walk->Run] --条件-->D[Running]
|
||||
D[Running] --条件-->A[Walking]
|
||||
```
|
||||
#### (N)Locomotion Cycles
|
||||
|
30
05-SDHGame/ActionRPG时代的设计/按键控制与对应事件.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# □
|
||||
左边
|
||||
|
||||
# ○
|
||||
○=>L:Confirm
|
||||
|
||||
确定
|
||||
# ∆
|
||||
∆=>I:UseItem
|
||||
|
||||
# ×
|
||||
X=>K=>A:QuickStep
|
||||
|
||||
# L1与L2
|
||||
L1=>E=>LB:Defense
|
||||
L2=>Q=LT>:SpecialSkill
|
||||
# R1与R2
|
||||
R1=>U=>RB:LightAttack
|
||||
R2=>O=>RT:HeavyAttack
|
||||
|
||||
# 左摇杆与L3
|
||||
|
||||
# 右摇杆与R3
|
||||
|
||||
# 方向键
|
||||
|
||||
# pad
|
||||
|
||||
# Select与Share
|
||||
Select=>ESC=>Start:ShowMenu
|
17
05-SDHGame/ActionRPG时代的设计/按键设计.md
Normal file
@@ -0,0 +1,17 @@
|
||||
Start:菜单 Esc
|
||||
Back:
|
||||
|
||||
左摇杆按下:
|
||||
左摇杆运动:移动视角 方向键
|
||||
左按键(上下左右):切换法术、物品、左右手武器 1234
|
||||
LT1:
|
||||
LT2:
|
||||
|
||||
右摇杆按下:锁定敌人 空格
|
||||
右摇杆运动:角色移动 WASD
|
||||
Y:切换单持/双持/双手
|
||||
X:使用物品
|
||||
B:取消/
|
||||
A:确定/加速跑:
|
||||
RT1:
|
||||
RT2:
|
68
05-SDHGame/ActionRPG时代的设计/李双模块笔记.md
Normal file
@@ -0,0 +1,68 @@
|
||||
## InputBufferConponent
|
||||
绑定输入。输入命令队列。
|
||||
IsTransitimtCache,如果有Pool里有对应命令就会切换到下一个State。
|
||||
|
||||
### SDHInputCommandActionMap
|
||||
- Has Order:解析Command是否按键顺序。
|
||||
- InputActionCommandType:在LCMDates.h定义。
|
||||
- ButtonAction:在LCMDates.h定义。
|
||||
|
||||
## StateMachine
|
||||
Transition每帧都会检测。
|
||||
|
||||
- EnableButtonActionBufferBlockMap:该状态可以启用的命令
|
||||
- ResetButtonActionBufferBlockMapState:将所有命令都设置为禁止。
|
||||
- CacheCommandTransmitter:将命令加到Pool中。
|
||||
|
||||
## 我的想法
|
||||
因为大部分StateMachine都和GAS会有关联(GASTag与GAS属性判断),所以我希望:
|
||||
1. 在OnStartStateMachine中先获取GAS组件。
|
||||
2. 在编辑器模式下,检测StateGraph中的StateABility是否都已经想GAS组件注册。(有的时候会忘记)
|
||||
3. 监控Ability是否结束,以及控制Ability结束。BP_SDHSkillStateIns
|
||||
4.
|
||||
5.
|
||||
6. 之后使用 FGameplayAbilityEndedDelegate OnAbilityEnded;。
|
||||
|
||||
|
||||
```c++
|
||||
/** Allow events to be registered for specific gameplay tags being added or removed */
|
||||
FOnGameplayEffectTagCountChanged& RegisterGameplayTagEvent(FGameplayTag Tag, EGameplayTagEventType::Type EventType=EGameplayTagEventType::NewOrRemoved);
|
||||
|
||||
/** Unregister previously added events */
|
||||
void UnregisterGameplayTagEvent(FDelegateHandle DelegateHandle, FGameplayTag Tag, EGameplayTagEventType::Type EventType=EGameplayTagEventType::NewOrRemoved);
|
||||
|
||||
/** Register a tag event and immediately call it */
|
||||
FDelegateHandle RegisterAndCallGameplayTagEvent(FGameplayTag Tag, FOnGameplayEffectTagCountChanged::FDelegate Delegate, EGameplayTagEventType::Type EventType=EGameplayTagEventType::NewOrRemoved);
|
||||
|
||||
/** Returns multicast delegate that is invoked whenever a tag is added or removed (but not if just count is increased. Only for 'new' and 'removed' events) */
|
||||
FOnGameplayEffectTagCountChanged& RegisterGenericGameplayTagEvent();
|
||||
|
||||
/** Executes a gameplay event. Returns the number of successful ability activations triggered by the event */
|
||||
virtual int32 HandleGameplayEvent(FGameplayTag EventTag, const FGameplayEventData* Payload);
|
||||
```
|
||||
1. 监听StateAbility的Ability结束。方法有2:1、绑定GAS组件的OnAbilityEnded委托。2、重写EndAbility函数。
|
||||
|
||||
```c++
|
||||
bool UAbilitySystemComponent::TryActivateAbilityByClass(TSubclassOf<UGameplayAbility> InAbilityToActivate, bool bAllowRemoteActivation)
|
||||
{
|
||||
bool bSuccess = false;
|
||||
|
||||
const UGameplayAbility* const InAbilityCDO = InAbilityToActivate.GetDefaultObject();
|
||||
|
||||
for (const FGameplayAbilitySpec& Spec : ActivatableAbilities.Items)
|
||||
{
|
||||
if (Spec.Ability == InAbilityCDO)
|
||||
{
|
||||
bSuccess |= TryActivateAbility(Spec.Handle, bAllowRemoteActivation);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
bool UAbilitySystemComponent::TryActivateAbility(FGameplayAbilitySpecHandle AbilityToActivate, bool bAllowRemoteActivation)
|
||||
```
|
||||
```
|
||||
void UAbilitySystemComponent::NotifyAbilityEnded(FGameplayAbilitySpecHandle Handle, UGameplayAbility* Ability, bool bWasCancelled)
|
||||
```
|
300
05-SDHGame/ActionRPG时代的设计/游戏存档系统、GameInstance、物品与背包逻辑.md
Normal file
@@ -0,0 +1,300 @@
|
||||
## 前言
|
||||
ActionRPG在RPGType.h定义了各个类型,在RPGControllerBase类中定义背包逻辑。存档逻辑写在RPGGameInstance与RPGSaveGame中。
|
||||
|
||||
个人建议:如果你打算制作个人项目,这里的代码基本不用改,直接就可以用。当然最好还是将共用部分封装成插件,这样后续Ue4项目也可以使用。这也是官方GameplayAbility视频教程中所建议的。
|
||||
## 物品
|
||||
### RPGItem.h
|
||||
FPrimaryAssetType ItemType:物品类型。其中这些类型都定义在URPGAssetManager类中<br>
|
||||
其他还有物品名称、描述、图标、价格、最大数量、最高等级、附带的Ability等级变量。
|
||||
|
||||
TSubclassOf<URPGGameplayAbility> GrantedAbility:物品附带的Ability的对象
|
||||
|
||||
FString GetIdentifierString():返回主资源的Id字符串
|
||||
|
||||
FPrimaryAssetId GetPrimaryAssetId():返回主资源的Id
|
||||
|
||||
### RPGType.h
|
||||
#### RPGItemSlot
|
||||
FRPGItemSlot位于RPGType.h中:比如黑魂里的快捷物品栏、装备武器栏。你可以给Slot指定类型来进行区分。因为他通常表现为放置特定类型物品的格子,所以之后我就将其翻译成物品格子了。
|
||||
|
||||
FPrimaryAssetType ItemType:物品类型
|
||||
int32 SlotNumber:该格子所在容器的索引值
|
||||
#### FRPGItemData
|
||||
int32 ItemCount:背包中的物品数量
|
||||
|
||||
int32 ItemLevel:物品等级
|
||||
|
||||
UpdateItemData函数:物品发生变动时的容错处理。
|
||||
#### 委托
|
||||
```
|
||||
//背包物品发生变化时
|
||||
FOnInventoryItemChanged, bool, bAdded, URPGItem*, Item
|
||||
FOnInventoryItemChangedNative, bool, URPGItem*
|
||||
|
||||
//背包物品格子的信息发生改变
|
||||
FOnSlottedItemChanged, FRPGItemSlot, ItemSlot, URPGItem*, Item
|
||||
FOnSlottedItemChangedNative, FRPGItemSlot, URPGItem*
|
||||
|
||||
//打包背包系统加载Asset与数据时
|
||||
FOnInventoryLoaded
|
||||
FOnInventoryLoadedNative
|
||||
|
||||
//加载游戏存档
|
||||
FOnSaveGameLoaded, URPGSaveGame*, SaveGame
|
||||
FOnSaveGameLoadedNative, URPGSaveGame*
|
||||
```
|
||||
### RPGPlayerControllerBase.h
|
||||
个人不太喜欢把背包逻辑都写在控制类中,还是倾向于封装成一个Component。所以本人通过继承UActorComponent来移植Inventory方面的代码。
|
||||
#### 变量
|
||||
```
|
||||
/** Map of all items owned by this player, from definition to data */
|
||||
//玩家所拥有物品的Map
|
||||
TMap<URPGItem*, FRPGItemData> InventoryData;
|
||||
|
||||
/** Map of slot, from type/num to item, initialized from ItemSlotsPerType on RPGGameInstanceBase */
|
||||
//物品格子Map,保存物品的类型与数量数据,使用RPGGameInstanceBase中的ItemSlotsPerType Map初始化。
|
||||
TMap<FRPGItemSlot, URPGItem*> SlottedItems;
|
||||
```
|
||||
#### 函数
|
||||
```
|
||||
//当背包发生变化时,会调用这个函数,并且通知所有委托
|
||||
void InventoryItemChanged(bool bAdded, URPGItem* Item);
|
||||
|
||||
/** Called after an item was equipped and we notified all delegates */
|
||||
//当物品被装备时,会调用这个函数,并且通知所有委托
|
||||
void SlottedItemChanged(FRPGItemSlot ItemSlot, URPGItem* Item);
|
||||
|
||||
//往背包中增加物品
|
||||
bool AddInventoryItem(URPGItem* NewItem, int32 ItemCount = 1, int32 ItemLevel = 1, bool bAutoSlot = true);
|
||||
|
||||
//从背包中移除物品
|
||||
bool RemoveInventoryItem(URPGItem* RemovedItem, int32 RemoveCount = 1);
|
||||
|
||||
//返回背包中指定类型的所有物品,如果没有指定类型将会返回所有物品
|
||||
void GetInventoryItems(TArray<URPGItem*>& Items, FPrimaryAssetType ItemType);
|
||||
|
||||
//返回这个背包实例的物品数
|
||||
int32 GetInventoryItemCount(URPGItem* Item) const;
|
||||
|
||||
/** Returns the item data associated with an item. Returns false if none found */
|
||||
//返回指定物品的数据
|
||||
bool GetInventoryItemData(URPGItem* Item, FRPGItemData& ItemData) const;
|
||||
|
||||
//将物品移动到指定物品格子
|
||||
bool SetSlottedItem(FRPGItemSlot ItemSlot, URPGItem* Item);
|
||||
|
||||
/** Returns item in slot, or null if empty */
|
||||
//返回指定物品格子中的物品指针
|
||||
URPGItem* GetSlottedItem(FRPGItemSlot ItemSlot) const;
|
||||
|
||||
/** Returns all slotted items of a given type. If none is passed as type it will return all */
|
||||
//返回物品格子中指定类型的物品,如果没有指定类型,将会返回所有物品
|
||||
void GetSlottedItems(TArray<URPGItem*>& Items, FPrimaryAssetType ItemType, bool bOutputEmptyIndexes);
|
||||
|
||||
//填充空的物品格子
|
||||
void FillEmptySlots();
|
||||
|
||||
//保存背包数据
|
||||
bool SaveInventory();
|
||||
|
||||
//载入背包数据
|
||||
bool LoadInventory();
|
||||
```
|
||||
#### 委托
|
||||
因为本人制作的Demo为魂like游戏,所以Token类型的Item会作为“魂”来定义。魂并不会影响UI显示,所以本人的项目里会多加一个委托:FOnInventoryItemChanged OnInventoryTokenItemChanged;
|
||||
|
||||
并且在通知函数FillEmptySlotWithItem中进行判断,如果是Token类型就只会对OnInventoryTokenItemChanged进行多播。
|
||||
```
|
||||
//背包物品增加或者减少
|
||||
FOnInventoryItemChanged OnInventoryItemChanged;
|
||||
|
||||
//本地版本,在BP委托之前执行
|
||||
FOnInventoryItemChangedNative OnInventoryItemChangedNative;
|
||||
|
||||
//当物品格子发生改变时
|
||||
FOnSlottedItemChanged OnSlottedItemChanged;
|
||||
|
||||
//本地版本
|
||||
FOnSlottedItemChangedNative OnSlottedItemChangedNative;
|
||||
|
||||
//背包数据载入时调用委托
|
||||
FOnInventoryLoaded OnInventoryLoaded;
|
||||
|
||||
//本地版本
|
||||
FOnInventoryLoadedNative OnInventoryLoadedNative;
|
||||
```
|
||||
#### 接口
|
||||
```
|
||||
// 实现IRPGInventoryInterface
|
||||
virtual const TMap<URPGItem*, FRPGItemData>& GetInventoryDataMap() const override
|
||||
{
|
||||
return InventoryData;
|
||||
}
|
||||
virtual const TMap<FRPGItemSlot, URPGItem*>& GetSlottedItemMap() const override
|
||||
{
|
||||
return SlottedItems;
|
||||
}
|
||||
virtual FOnInventoryItemChangedNative& GetInventoryItemChangedDelegate() override
|
||||
{
|
||||
return OnInventoryItemChangedNative;
|
||||
}
|
||||
virtual FOnSlottedItemChangedNative& GetSlottedItemChangedDelegate() override
|
||||
{
|
||||
return OnSlottedItemChangedNative;
|
||||
}
|
||||
virtual FOnInventoryLoadedNative& GetInventoryLoadedDelegate() override
|
||||
{
|
||||
return OnInventoryLoadedNative;
|
||||
}
|
||||
```
|
||||
#### 通知
|
||||
```
|
||||
/** 给物品格子指定物品,如果返回True则代表成功指定物品 */
|
||||
bool FillEmptySlotWithItem(URPGItem *NewItem);
|
||||
|
||||
/** 物品系统数据更新回调函数 */
|
||||
void NotifyInventoryItemChanged(bool bAdded, URPGItem *Item);
|
||||
void NotifySlottedItemChanged(FRPGItemSlot ItemSlot, URPGItem *Item);
|
||||
void NotifyInventoryLoaded();
|
||||
|
||||
/** Called when a global save game as been loaded */
|
||||
void HandleSaveGameLoaded(URPGSaveGame* NewSaveGame);
|
||||
```
|
||||
## 存档
|
||||
### RPGSaveGame.h
|
||||
它本质上就是个用于存储游戏数据的存储对象。
|
||||
```
|
||||
/** 两个存储物品信息的map */
|
||||
TMap<FPrimaryAssetId, FRPGItemData> InventoryData;
|
||||
|
||||
TMap<FRPGItemSlot, FPrimaryAssetId> SlottedItems;
|
||||
|
||||
/** 用户独立id */
|
||||
FString UserId;
|
||||
protected:
|
||||
/** 存储废弃物品,这些物品将不会被保存 */
|
||||
TArray<FPrimaryAssetId> InventoryItems_DEPRECATED;
|
||||
|
||||
/** 最后的保存版本 */
|
||||
int32 SavedDataVersion;
|
||||
```
|
||||
### RPGGameInstanceBase.h
|
||||
主要的存档逻辑都写在这里,最主要的就是HandleSaveGameLoaded、WriteSaveGame、LoadOrCreateSaveGame、HandleAsyncSave函数。
|
||||
#### 变量
|
||||
```
|
||||
/** 给新玩家的默认物品 */
|
||||
TMap<FPrimaryAssetId, FRPGItemData> DefaultInventory;
|
||||
|
||||
/** 每个物品格子数目 */
|
||||
TMap<FPrimaryAssetType, int32> ItemSlotsPerType;
|
||||
|
||||
/** 存档槽名称 */
|
||||
FString SaveSlot;
|
||||
|
||||
/** 系统指定的用户序号 */
|
||||
int32 SaveUserIndex;
|
||||
|
||||
/** 当前的存档对象 */
|
||||
URPGSaveGame* CurrentSaveGame;
|
||||
|
||||
/** 是否需要保存 */
|
||||
bool bSavingEnabled;
|
||||
|
||||
/** 是否处于保存中 */
|
||||
bool bCurrentlySaving;
|
||||
|
||||
/** 在保存过程中是否出现了新的保存请求*/
|
||||
bool bPendingSaveRequested;
|
||||
```
|
||||
#### 函数
|
||||
```
|
||||
/** 增加新玩家的默认物品 */
|
||||
void AddDefaultInventory(URPGSaveGame* SaveGame, bool bRemoveExtra = false);
|
||||
|
||||
/** 判断物品格子是否有效 */
|
||||
bool IsValidItemSlot(FRPGItemSlot ItemSlot) const;
|
||||
|
||||
/** 返回当前的存档对象 */
|
||||
URPGSaveGame* GetCurrentSaveGame();
|
||||
|
||||
/** 设置当前是否可以保存 */
|
||||
void SetSavingEnabled(bool bEnabled);
|
||||
|
||||
/** 载入或者创建存档对象 */
|
||||
bool LoadOrCreateSaveGame();
|
||||
|
||||
/** 存档的载入流程控制(如果存档类型符合则,加载物品,不符合创建新的存档对象并且加入默认物品) */
|
||||
bool HandleSaveGameLoaded(USaveGame* SaveGameObject);
|
||||
|
||||
/** Gets the save game slot and user index used for inventory saving, ready to pass to GameplayStatics save functions */
|
||||
/** 取得存档槽名称与用户序号 */
|
||||
void GetSaveSlotInfo(FString& SlotName, int32& UserIndex) const;
|
||||
|
||||
/** Writes the current save game object to disk. The save to disk happens in a background thread*/
|
||||
/** 将存档写入磁盘,此为异步操作 */
|
||||
bool WriteSaveGame();
|
||||
|
||||
/** 将存档数据清空 */
|
||||
void ResetSaveGame();
|
||||
|
||||
/** 当异步存储进行时调用(为了处理当存档过程中有了新的存档需要的情况) */
|
||||
virtual void HandleAsyncSave(const FString& SlotName, const int32 UserIndex, bool bSuccess);
|
||||
```
|
||||
#### 委托
|
||||
```
|
||||
/** 当存档载入或者重置时 */
|
||||
UPROPERTY(BlueprintAssignable, Category = Inventory)
|
||||
FOnSaveGameLoaded OnSaveGameLoaded;
|
||||
|
||||
/** 本地版本 */
|
||||
FOnSaveGameLoadedNative OnSaveGameLoadedNative;
|
||||
```
|
||||
|
||||
## 备注
|
||||
这个游戏中ItemSlot的设置与魂系列游戏不太一样。所以这里建议删除所有自动填充ItemSlot的逻辑,重写SetSlottedItem、FillEmptySlots、FillEmptySlotWithItem等函数。
|
||||
|
||||
|
||||
|
||||
ActionRPG首先会在继承RPGGameInstanceBase的BP_GameInstace中初始化默认存档数据,以及加载各个Slot类型的物品Asset。
|
||||
|
||||
|
||||
|
||||
ARPGPlayerControllerBase::FillEmptySlotWithItem(URPGItem* NewItem)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## UMG逻辑
|
||||
该物品系统是把 消耗品、装备、技能物品都做在一起的。
|
||||
主要的Asset位于Blueprints-WidgetBP-Inventory
|
||||
|
||||
对于背包系统我们只需要看:
|
||||
### WB_Equipment
|
||||
#### 设计界面
|
||||
将5个WB_EquipmentSlot拖到界面中,并且将其中3个的ItemType设置为Weapon,MinEquippedItems为1。最后按顺序将SlotNumber设置为0~2。
|
||||
|
||||
另外两个将ItemType分别设置为Skill与Potion。
|
||||
#### Construct
|
||||
取得所有的WB_EquipmentSlot对象,并以此构造EquipmentListSlot TArray变量
|
||||
### WB_EquipmentSlot
|
||||
主要的逻辑都写在这里
|
||||
#### Construct
|
||||
执行刷新RefreshItem事件=》绑定OnSlottedItemChanged事件=》设置控件上Label显示(显示为ItemType)
|
||||
#### RefreshItem
|
||||
从控制类中执行GetSlottedItem,获取Slot信息来初始化Item变量=》再以这个信息设置Brush=》并根据Item是否获取成功来设置PotionNumberLabel是否可见。=》设置PotionNumberLabel文字
|
||||
|
||||
|
||||
|
||||
## 本人设计思路
|
||||
### ItemType
|
||||
CanBeUseItemType 可使用物体
|
||||
SkillItemType 技能
|
||||
TokenItemType 货币
|
||||
EquipmentItemType 装备
|
||||
KeyItemType 钥匙
|
||||
RubbishItemType 垃圾
|
58
05-SDHGame/ActionRPG时代的设计/系统设计/受击系统设计.md
Normal file
@@ -0,0 +1,58 @@
|
||||
## 受击系统
|
||||
### 相关属性
|
||||
- 韧性:通过穿戴装备(功法)从而获取的一种属性。在该属性>0时角色不容易出现硬直;属性<=0时容易出现硬直。
|
||||
- 削韧:武器附带的一种属性。在武器攻击到目标后,会削减目标的韧性。
|
||||
|
||||
黑魂还存在以下属性,以此对不同武器对应不同类型怪物的产生硬直关系进行更加精准的控制,暂不考虑属性:
|
||||
- 强韧度:怪物抵抗硬直产生能力的等级。分为等级0~3。最高等级应该为`冲击力最高等级-1`。该属性的设计目的是为了保证高攻速的轻武器无法打出中重硬直。
|
||||
- 冲击力:武器能够造成硬直的能力等级。分为等级0~4,分别对应不同的空手、轻武器、重武器、巨大武器。(黑魂中一共13的等级,其中最高等级指代强制打出硬直、击倒、击飞)
|
||||
|
||||
但如果考虑到越阶打怪,比如`筑基打金丹`,那使用冲击力系统,`冲击力-1`即可,光使用韧性比较难。
|
||||
|
||||
### 运行规则
|
||||
黑魂的硬直产生使用`冲击力等级-强韧度等级`进行判断(如果韧性打空强韧度-1):
|
||||
- `=`0:产生小硬直
|
||||
- `>`0:产生中硬直
|
||||
- `>`1:产生大硬直
|
||||
|
||||
我们对此进行简化,在受到攻击后:
|
||||
- 角色韧性>100,不会出现硬直。
|
||||
- 0<角色韧性<100,产生小硬直。
|
||||
- -100<角色韧性<0,产生中硬直。
|
||||
- 角色韧性<-100,产生大硬直。
|
||||
|
||||
产生硬直后,角色就会恢复所有韧性。如果产生了大硬直就可以进行`处决`。
|
||||
|
||||
## 受击状态
|
||||
产生硬直会播放对应的动画,并且打断当前动作(攻击、施法、互动动作),除此之外:
|
||||
- 小硬直:人形生物可使用翻滚等移动技能强制解除该硬直;怪物摇晃一下。
|
||||
- 中硬直:人形生物可使用一些强行受身技能强制解除该硬直;怪物摔倒。
|
||||
- 大硬直:人形生物无法使用技能解除硬直;怪物长时间瘫痪。
|
||||
|
||||
特殊受击状态会得到`易伤debuffer`根据类型:
|
||||
- 击飞:可追加空中追击技能,持续浮空。落地后会有落地保护。(PVP需要)
|
||||
- 击倒:持续时间比中硬直长。
|
||||
|
||||
## 其他说明
|
||||
### 武技与蓄力攻击
|
||||
在黑魂中武技与蓄力攻击都给附带临时的冲击力提升。
|
||||
我们对此进行简化为:附带临时的削韧提升。
|
||||
|
||||
### 霸体
|
||||
黑魂中的霸体是直接提高强韧度等级来实现的。
|
||||
对此我们简化为,直接提升临时的韧性。
|
||||
|
||||
## GAS实现
|
||||
- 添加Debuffer.ReduceTough标签与GE,GE中Tough的计算使用GameplayEffectExecutionCalculation(考虑到功法、武器对其的影响)
|
||||
- 添加一个名为RecoverTough的GE,使用OriginTough属性来overrideCurrentTough
|
||||
- 修改Status.Stiffness标签,分为成Status.Stiffness.Action、UnderAttack、Attacked,3种硬直,硬直大小使用等级表示,0代表无硬直、1代表小硬直、2代表中硬直、3代表大硬直。(做这步时最好git Commit,因为修改标签会知道一些Asset引用失效,这些标签主要引用在连击GA、受击GA、硬直GE)
|
||||
|
||||
目前有2种实现当角色Tough削减至一定数目后,给角色添加硬直Debuffer。
|
||||
|
||||
### 属性集PostGameplayEffectExecute()实现
|
||||
在PostGameplayEffectExecute()中对Tough进行监视,在函数中写编写判断公式当符合条件时对角色应用对应等级硬直GE。同时在动画蓝图通过监视GameplayTag函数UAsyncTaskGameplayTagAddedRemoved来设置变量以起到播放动画的目的。
|
||||
|
||||
### 使用GA实现
|
||||
因为受击系统主要逻辑都写在GA中,所以将硬直逻辑写在GA里或许会更好。
|
||||
|
||||
在GA激活时,使用AsyncTaskAttributeChanged(可能再做个AbilityTasks会比较好)来监视Tough属性的变化,如果达到指定情况就应用对应的硬直GE。同时在动画蓝图通过监视GameplayTag函数UAsyncTaskGameplayTagAddedRemoved来设置变量以起到播放动画的目的。
|
After Width: | Height: | Size: 141 KiB |
After Width: | Height: | Size: 147 KiB |
@@ -0,0 +1,983 @@
|
||||
|
||||
|
||||
血源和魂系列其他作品的硬直系统基本相同。区别就是在魂系列里边韧性这个概念更加明显,而血源里冲击力的概念更加明显,因为攻略本里只写了但是很详细的写了冲击力(impact),但实际上两个都在起作用。关于韧性和冲击力的关系可以参见B站【黑暗之魂3】韧性,冲击力,谁才是弟弟? 这个视频。
|
||||
|
||||
血源里的硬直大概可为分为三类
|
||||
|
||||
一类是和韧性有关的,但冲击力也作用其中,也是本帖的主要内容。
|
||||
|
||||
一类是只和冲击力有关的,也就是敌人无韧性但一定的霸体只能用较高的冲击力来打破。
|
||||
|
||||
一类是和伤害有关的,积累伤害出的破坏部位。
|
||||
|
||||
第三种就不涉及了,第一种是主要内容。如果以后有心情可能把二种也包括进去因为第二种相当于第一种的特殊情况。
|
||||
|
||||
主楼里主要说一些基础内容,具体敌人例子放在后边。
|
||||
|
||||
先说说冲击力这块,这个在攻略本里边也可以查到,虽然里边也有写错的,比如锯肉刀变形斩。本文涉及到的主要是以下几种冲击力:小,微,推,中,大,击趴,击飞这几种。和攻略本相对应:小微推在攻略本里是Light,中是normal,大是heavy,击趴击飞是massive。其中微是慈悲之刃的一些攻击,推是石锤圣剑后撤步r1以及其他一些工作会出现的推动作,但这两个不多见并往往和小没区别。
|
||||
|
||||
削韧这块,一个很重要的问题是敌人韧性重置速度很快,体感大概三四秒不受攻击之后就会重置回满,因此如果敌人韧性很高的情况下中间中断了就会重头来。
|
||||
|
||||
削韧具体数值可参考下图里的文件,冲击力也在里边。但电锯L2的削韧肯定是错的。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
但大致上轻武器的轻攻击在十几点,蓄力重攻击二十多,重武器的轻攻击的三十点左右,蓄力重攻击多可到六七十。比较快速打韧性的手段斧子大风车是45+39,葛拉提亚之拳一拳50,如果是跑步滑步接一拳75。下面具体敌人的例子虽然我都试过,但是难免会漏掉一些具体情况,在敌人某些特殊的霸体情况下可能打不出应该打出硬直也并不奇怪。
|
||||
|
||||
15780181.90297
|
||||
|
||||
|
||||
|
||||
送TA礼物
|
||||
|
||||
回复
|
||||
|
||||
1楼2019-12-23 07:06
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u5723\u804c\u8005\u91ce\u517d\/\u52b3\u4f26\u65af
|
||||
|
||||
\u97e7\u6027200\uff0c\u4f46\u7834\u97e7\u7684\u4e00\u51fb\u65f6\u7528\u5c0f\u5fae\u63a8\u4e09\u79cd\u51b2\u51fb\u529b\u65e0\u6548
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u795e\u7236\u517d\u5f62\u6001
|
||||
|
||||
\u97e7\u602735 \u7834\u97e7\u65f6\u5c0f\u3001\u5fae\u3001\u63a8\u65e0\u6548\u679c\uff0c\u4e0d\u51fa\u62db\u65f6\u7528\u5927\u4ee5\u4e0a\u51b2\u51fb\u529b\u4e0d\u7834\u97e7\u4e5f\u6709\u786c\u76f4\u4f46\u51fa\u62db\u65f6\u4e0d\u884c\uff1f
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u767d\u7f8a
|
||||
|
||||
\u97e7\u6027110 \u7834\u97e7\u51b2\u51fb\u529b\u4e0d\u9650
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u6e34\u8840\u517d \u97e7\u602735 \u4e0d\u51fa\u62db\u53ef\u4ee5\u7834\u97e7\u3002\u51fa\u62db\u65f6\u57fa\u672c\u65e0\u6548\uff0c\u53ef\u80fd\u662f\u5bf9\u51b2\u51fb\u529b\u7684\u514d\u75ab\uff0c\u53ef\u80fd\u662f\u4e34\u65f6\u989d\u5916\u4ed8\u4e0e\u4e86100\u621690\u7684\u97e7\u6027\uff0c\u4f46\u65e0\u8bba\u5982\u4f55\u5f88\u96be\u6253\u7834\u3002","post_no":2,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":1,"pb_tpoint":null}}" data-pid="128975407431" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
圣职者野兽/劳伦斯
|
||||
|
||||
韧性200,但破韧的一击时用小微推三种冲击力无效
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
神父兽形态
|
||||
|
||||
韧性35 破韧时小、微、推无效果,不出招时用大以上冲击力不破韧也有硬直但出招时不行?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
白羊
|
||||
|
||||
韧性110 破韧冲击力不限
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
渴血兽 韧性35 不出招可以破韧。出招时基本无效,可能是对冲击力的免疫,可能是临时额外付与了100或90的韧性,但无论如何很难打破。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
2楼2019-12-23 07:06
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u9ed1\u517d \u97e7\u6027150 \u4e2d\u4ee5\u4e0b\u7834\u97e7\u65e0\u6548\u3002\u4e2d\u6216\u4ee5\u4e0a\u7834\u97e7\u6709\u786c\u76f4\uff0c\u521a\u51fa\u653e\u7535\u52a8\u4f5c\u65f6\u53ef\u6253\u65ad\u653e\u7535\u3002
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u4e9a\u5f25\u8fbe\u62c9 \u97e7110 \u7834\u97e7\u540e\u51fa\u4e00\u4e2a\u5927\u8e09\u8dc4\uff08\u51b2\u51fb\u529b\u4e0d\u9650\uff09
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u5929\u754c\u4f7f\u8005\uff08\u5927\uff09 \u97e760 \u7834\u97e7\u51b2\u51fb\u529b\u4e0d\u9650
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u5b87\u5b99\u4e4b\u5973 \u97e7\u6027300 \u5c0f\uff0c\u5fae\uff0c\u63a8\u51b2\u51fb\u529b\u7834\u97e7\u65e0\u6548\uff0c\u5176\u4ed6\u7834\u97e7\u540e\u51fa\u4e00\u4e2a\u534a\u4f4e\u5934\u7684\u786c\u76f4\u3002","post_no":3,"type":"0","comment_num":1,"is_fold":0,"props":null,"post_index":2,"pb_tpoint":null}}" data-pid="128975443210" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
黑兽 韧性150 中以下破韧无效。中或以上破韧有硬直,刚出放电动作时可打断放电。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
亚弥达拉 韧110 破韧后出一个大踉跄(冲击力不限)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
天界使者(大) 韧60 破韧冲击力不限
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
宇宙之女 韧性300 小,微,推冲击力破韧无效,其他破韧后出一个半低头的硬直。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
3楼2019-12-23 07:12
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u517d\u6a21\u5f0f \u97e760 \u7834\u97e7\u51b2\u51fb\u529b\u4e0d\u9650\uff0c\u4e00\u4e9b\u52a8\u4f5c\u6216\u65e0\u6cd5\u6253\u65ad
|
||||
|
||||
\u5251\u6a21\u5f0f \u97e7110 \u7834\u97e7\u51b2\u51fb\u529b\u4e0d\u9650\uff0c\u4e00\u4e9b\u52a8\u4f5c\u6216\u65e0\u6cd5\u6253\u65ad
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u4e0d\u6b7b\u5de8\u4eba \u97e7\u6027120 \u5c0f\uff0c\u5fae\uff0c\u63a8\u51b2\u51fb\u529b\u7834\u97e7\u65e0\u6548\u3002\u51fa\u62db\u4e2d\u4ec0\u4e48\u51b2\u51fb\u529b\u7834\u97e7\u8c8c\u4f3c\u90fd\u65e0\u6548\u3002
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u706b\u72d7 \u97e7150 \u5bf9\u540c\u4e00\u90e8\u4f4d\uff08\u5934\uff0c\u56db\u80a2\uff09\u5feb\u901f\u7834\u97e7\u540e\u4f1a\u539f\u5730\u505c\u6b62\u5e76\u5df2\u543c\u53eb\u7ed3\u675f\u8be5\u786c\u76f4\u3002
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u65e0\u60c5\u7684\u770b\u5b88\u8005\uff0c\u672a\u7834\u97e7\u65f6\uff1a\u51b2\u51fb\u529b\u5927\u51fb\u5012\u51fb\u98de\u5747\u51fa\u5c0f\u786c\u76f4\uff0c\u4ee5\u4e0b\u65e0\u6548
|
||||
|
||||
\u7834\u97e7\u65f6\uff1a\u51fa\u51b2\u51fb\u529b\u76f8\u7b26\u7684\u786c\u76f4\uff0c\u4f46\u51fa\u62db\u65f6\u7528\u5c0f\u65e0\u6cd5\u786c\u76f4\u3002","post_no":4,"type":"0","comment_num":1,"is_fold":0,"props":null,"post_index":3,"pb_tpoint":null}}" data-pid="128975489406" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
兽模式 韧60 破韧冲击力不限,一些动作或无法打断
|
||||
|
||||
剑模式 韧110 破韧冲击力不限,一些动作或无法打断
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
不死巨人 韧性120 小,微,推冲击力破韧无效。出招中什么冲击力破韧貌似都无效。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
火狗 韧150 对同一部位(头,四肢)快速破韧后会原地停止并已吼叫结束该硬直。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
无情的看守者,未破韧时:冲击力大击倒击飞均出小硬直,以下无效
|
||||
|
||||
破韧时:出冲击力相符的硬直,但出招时用小无法硬直。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
4楼2019-12-23 07:19
|
||||
|
||||

|
||||
|
||||
- 埃勒洛
|
||||
|
||||
- 重生古神
|
||||
|
||||
8
|
||||
|
||||
不愧是汉尼拔大佬
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
来自Android客户端5楼2019-12-23 07:27
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u65e0\u5934\u6709\u5934\u653e\u8840 \u97e7110 \u7834\u97e7\u540e\u539f\u5730\u601d\u8003\u4eba\u751f\uff08\u51b2\u51fb\u529b\u4e0d\u9650\uff09
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u91cd\u751f\u53e4\u795e \u97e7250 \u624b\u6216\u4e0b\u534a\u8eab\uff0c\u9664\u63a8\u4ee5\u5916\u7834\u97e7\u51fa\u4e00\u4e2a\u534a\u4f0f\u8eab\u7684\u786c\u76f4","post_no":6,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":5,"pb_tpoint":null}}" data-pid="128975547107" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
无头有头放血 韧110 破韧后原地思考人生(冲击力不限)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
重生古神 韧250 手或下半身,除推以外破韧出一个半伏身的硬直
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
6楼2019-12-23 07:28
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e780 \u5fae\uff0c\u5c0f\uff0c\u63a8\u65e0\u6548\uff0c\u4e2d\u53ca\u4ee5\u4e0a\u9020\u6210\u4e00\u6b21\u786c\u76f4
|
||||
|
||||
\u6700\u5feb\u524a80\u97e7\uff1a\u65a7\u5b50\u5927\u98ce\u8f66\uff0c\u5723\u5251L2*2
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e770 \u51fa\u62db\u4e2d \u4f3c\u4e4e\u6ca1\u6cd5\u786c\u76f4
|
||||
|
||||
\u4e3e\u65a7\u9632\u5fa1\u4e2d \u4f1a\u88ab\u7834\u76fe\uff0c\u4f46\u4e0d\u4f1a\u88ab\u7834\u97e7\u786c\u76f4
|
||||
|
||||
\u65e2\u4e0d\u51fa\u62db\u4e5f\u4e0d\u9632\u5fa1\u65f6 \u524a\u7a7a\u51fa\u76f8\u5e94\u51b2\u51fb\u529b\u7684\u786c\u76f4\uff0c\u4e0d\u524a\u7a7a\u65f6\u5927\u4ee5\u4e0a\u53ef\u51fa\u5c0f\u653b\u51fb\u786c\u76f4
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e735 \u7834\u97e7\u65f6\u9020\u6210\u4e0e\u51b2\u51fb\u529b\u76f8\u7b26\u7684\u786c\u76f4\u6216\u4f4d\u79fb
|
||||
|
||||
\u672a\u7834\u97e7\u65f6\uff0c\u5927\u53ca\u4ee5\u4e0a\u7684\u51b2\u51fb\u529b\u9020\u6210\u4e00\u4e2a\u5c0f\u653b\u51fb\u7ea7\u786c\u76f4
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e725
|
||||
|
||||
\u672a\u7834\u97e7\u65f6\u9ad8\u51b2\u51fb\u529b\u4e5f\u65e0\u6cd5\u786c\u76f4\uff08\u4f8b\uff0c\u952f\u77dbR2\u84c4\u529b\u7b2c\u4e8c\u4e0b\uff09
|
||||
|
||||
\u7834\u97e7\u7684\u4e00\u51fb\u9700\u8981\u4e2d\u4ee5\u4e0a\u51b2\u51fb\u529b","post_no":7,"type":"0","comment_num":5,"is_fold":0,"props":null,"post_index":6,"pb_tpoint":null}}" data-pid="128975596309" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧80 微,小,推无效,中及以上造成一次硬直
|
||||
|
||||
最快削80韧:斧子大风车,圣剑L2*2
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧70 出招中 似乎没法硬直
|
||||
|
||||
举斧防御中 会被破盾,但不会被破韧硬直
|
||||
|
||||
既不出招也不防御时 削空出相应冲击力的硬直,不削空时大以上可出小攻击硬直
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧35 破韧时造成与冲击力相符的硬直或位移
|
||||
|
||||
未破韧时,大及以上的冲击力造成一个小攻击级硬直
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧25
|
||||
|
||||
未破韧时高冲击力也无法硬直(例,锯矛R2蓄力第二下)
|
||||
|
||||
破韧的一击需要中以上冲击力
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
7楼2019-12-23 07:34
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC\u65a7\u5927\u70ae\u54e5 \u672a\u7834\u97e7\u65f6\uff1a\u51b2\u51fb\u529b\u5927\u51fa\u5c0f\u786c\u76f4\uff0c\u51fb\u5012\u51fb\u98de\u51fa\u4e2d\u786c\u76f4\uff0c\u4ee5\u4e0b\u65e0\u6548
|
||||
|
||||
\u7834\u97e7\u65f6\uff1a\u51fa\u4e8e\u51b2\u51fb\u529b\u76f8\u7b26\u7684\u786c\u76f4\uff0c\u4f46\u5fae\u51b2\u51fb\u529b\u65e0\u6cd5\u7834\u97e7\uff08\u5c0f\u53ef\u4ee5\u7834\uff09
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC\u730e\u4eba \u97ad\uff0c\u7206\u70b8\u9524 \u97e735
|
||||
|
||||
\u97ad\u7cbe\u82f1 \u97e765 \u7206\u70b8\u9524\u7cbe\u82f1 \u97e775 \u66f2\u5200\u7cbe\u82f1\u97e755 \uff08\u6389\u866b\u7684\uff09
|
||||
|
||||
\u5c0f\uff0c\u4e2d\u51b2\u51fb\u529b\u60f3\u6253\u65ad\u9700\u7834\u97e7
|
||||
|
||||
\u5927\u51b2\u51fb\u529b\u65e0\u9700\u7834\u97e7\u53ef\u6253\u65ad
|
||||
|
||||
\u51fb\u5012\uff0c\u51fb\u98de\u65e0\u9700\u7834\u97e7\u53ef\u6253\u65ad\u653b\u51fb\uff0c\u4f46\u9700\u7834\u97e7\u624d\u80fd\u51fb\u5012\u51fb\u98de
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC \u66f2\u5200\u666e\u901a\u730e\u4eba \u7406\u8bba\u4e0a\u97e735 \u5b9e\u9645\u8868\u73b0\uff1a\u65e0\u52a8\u4f5c\u53ef\u4ee5\u7528\u5c0f\u51fa\u786c\u76f4\uff0c\u653b\u51fb\u52a8\u4f5c\u65e0\u6cd5\u7528\u5c0f\u6253\u65ad\uff0c\u4f46\u4e2d\u4ee5\u4e0a\u53ef\uff0c\u97e7\u6027\u6ca1\u7528?","post_no":8,"type":"0","comment_num":1,"is_fold":0,"props":null,"post_index":7,"pb_tpoint":null}}" data-pid="128975628006" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC斧大炮哥 未破韧时:冲击力大出小硬直,击倒击飞出中硬直,以下无效
|
||||
|
||||
破韧时:出于冲击力相符的硬直,但微冲击力无法破韧(小可以破)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC猎人 鞭,爆炸锤 韧35
|
||||
|
||||
鞭精英 韧65 爆炸锤精英 韧75 曲刀精英韧55 (掉虫的)
|
||||
|
||||
小,中冲击力想打断需破韧
|
||||
|
||||
大冲击力无需破韧可打断
|
||||
|
||||
击倒,击飞无需破韧可打断攻击,但需破韧才能击倒击飞
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DLC 曲刀普通猎人 理论上韧35 实际表现:无动作可以用小出硬直,攻击动作无法用小打断,但中以上可,韧性没用?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
8楼2019-12-23 07:39
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u5927\u9c7c\u4eba \u97e780 \u65e0\u51b2\u51fb\u529b\u9650\u5236
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e734
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u7406\u8bba\u4e0a\u97e7\u602735 \u5b9e\u9645\u8868\u73b0\uff1a\u5fae\uff0c\u5c0f\uff0c\u63a8\u65e0\u6548\uff0c\u4e2d\u53ca\u4ee5\u4e0a\u9020\u6210\u4e00\u6b21\u786c\u76f4\uff0c\u51fb\u98de=\u5927\uff0c\u4f46\u53ef\u51fb\u5012\uff0c\u97e7\u6027\u65e0\u7528\uff1f
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u97e725 \u5c0f\uff0c\u5fae\uff0c\u63a8\u51b2\u51fb\u529b\u65e0\u6cd5\u7834\u97e7
|
||||
|
||||
\u672a\u7834\u97e7\u65f6\u9ad8\u51b2\u51fb\u4e5f\u65e0\u6cd5\u786c\u76f4\uff0c\u4f46\u9ad8\u51b2\u51fb\u5f88\u5c11\u4f1a\u6253\u4e0d\u7834\u8fd9\u4e2a\u97e7\u6027","post_no":9,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":8,"pb_tpoint":null}}" data-pid="128975675793" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
大鱼人 韧80 无冲击力限制
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧34
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
理论上韧性35 实际表现:微,小,推无效,中及以上造成一次硬直,击飞=大,但可击倒,韧性无用?
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韧25 小,微,推冲击力无法破韧
|
||||
|
||||
未破韧时高冲击也无法硬直,但高冲击很少会打不破这个韧性
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
9楼2019-12-23 07:45
|
||||
|
||||

|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
暂时是这些。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
10楼2019-12-23 07:49
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
","post_no":11,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":10,"pb_tpoint":null}}" data-pid="128975718133" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- 上帝求赐名
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
来自Android客户端11楼2019-12-23 07:50
|
||||
|
||||
","post_no":12,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":11,"pb_tpoint":null}}" data-pid="128975822087" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- 埃勒洛
|
||||
|
||||
- 重生古神
|
||||
|
||||
8
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
来自Android客户端12楼2019-12-23 08:02
|
||||
|
||||
- polly_24
|
||||
|
||||
- 罗姆
|
||||
|
||||
7
|
||||
|
||||
35这个数据设置的太恶意了,刚好就是锯肉刀r1+l1无法出硬直,不过鉴于锯肉刀性能已经够强了,倒也不意外
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
13楼2019-12-23 08:23
|
||||
|
||||
- 岸灬海的媚眼
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
很神秘
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
来自iPhone客户端14楼2019-12-23 11:03
|
||||
|
||||
- 药店的虎皮猫
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
想请教下,驴德头感觉不管几周目多少伤害,好像都是两刀头一个小硬直,就是必定出一次动作打断,而不是爆头。这种多部件的boss,各部件韧性是分开算的吗?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
来自Android客户端15楼2019-12-23 13:18
|
||||
|
||||
- 药店的虎皮猫
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
说起来,迷宫吸脑哥的蓄力擒抱,遇到过一次斧子两段全中仍然不破韧直接被抱的情况。还没试过击倒招数能不能击倒。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
来自Android客户端16楼2019-12-23 13:21
|
||||
|
||||
","post_no":17,"type":"0","comment_num":1,"is_fold":0,"props":null,"post_index":16,"pb_tpoint":null}}" data-pid="128985043713" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- LEMONed_Fish
|
||||
|
||||
- 重生古神
|
||||
|
||||
8
|
||||
|
||||
汉尼拔大人,你把我宝可梦世界拉回亚楠了。我开进进迷宫去重新感受san值
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
来自iPhone客户端17楼2019-12-23 17:28
|
||||
|
||||
- 幻耶
|
||||
|
||||
- 血月之神
|
||||
|
||||
12
|
||||
|
||||
问个不相干的问题:加公开伤害的词条会增加内脏暴击的伤害吗?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
来自Android客户端18楼2019-12-23 18:25
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u739b\u5229\u4e9a
|
||||
|
||||
\u666e\u901a\u72b6\u6001\u65e0\u97e7\u6027\uff0c\u4e00\u4e9b\u52a8\u4f5c\u4e2d\u97e7\u602740\u3002\u5927\u4ee5\u4e0a\u51b2\u51fb\u65e0\u9700\u7834\u97e7\u53ef\u6253\u65ad\uff0c\u4e2d\u5c0f\u9700\u7834\u97e7\u624d\u80fd\u6253\u65ad\uff0c\u5fae\u4e0e\u63a8\u7834\u97e7\u4e5f\u65e0\u6cd5\u6253\u65ad\u3002
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u79d1\u65af\u5b64\u513f
|
||||
|
||||
\u4e0d\u51fa\u62db\u65f6\u4e00\u9636\u6bb555\u97e7\u6027\uff0c\u4e8c\u9636\u6bb565\u97e7\u6027\u3002
|
||||
|
||||
\u51fa\u62db\u4e2d\u96be\u4ee5\u51c6\u786e\u63cf\u8ff0\u3002\u4f46\u731c\u6d4b\u5982\u4e0b\uff1a\u4e00\u4e9b\u52a8\u4f5c\u4e2d\u524a\u97e7\u672c\u8eab\u65e0\u6548\u7684\u53ef\u80fd\u6027\uff0c\u4f8b55\u97e7\u6027\u5728\u4e0d\u51fa\u62db\u65f6\u653b\u51fb\u4e00\u6b2155-28=27\uff0c\u8fd9\u65f6\u654c\u4eba\u51fa\u62db\u4e2d\u653b\u51fb\u4e00\u6b21\u97e7\u6027\u4ecd\u4e3a27\uff0c\u52a8\u4f5c\u4fdd\u62a4\u7ed3\u675f\u540e\u518d\u653b\u51fb\u4e00\u6b21\u524a\u7a7a\u97e7\u6027\u51fa\u786c\u76f4\uff0c\u7c7b\u4f3c\u8fd9\u6837\u60c5\u51b5\u8f83\u4e3a\u591a\u89c1\u3002\u4e00\u4e9b\u62db\u5f0f\u9644\u6709\u97e7\u6027\uff08+30\uff0c+50\uff09\u7684\u53ef\u80fd\u6027\u4e5f\u5b58\u5728\uff0c\u4f46\u5047\u5982\u662f30\u5c31\u4f1a\u53d8\u6210\u8fd9\u6837\u9996\u514855-28=27\uff0c\u51fa\u62db\u4e2d\u53d7\u653b\u51fb\u4e00\u6b2127+30-28=29\uff0c\u90a3\u4e48\u51fa\u62db\u7ed3\u675f\u540e\u5e94\u8be5\u65e0\u6cd5\u752828\u76f4\u63a5\u786c\u76f4\uff0c\u4f46\u5b9e\u9645\u4e00\u822c\u90fd\u662f\u53ef\u4ee5\u76f4\u63a5\u518d\u752828\u786c\u76f4\u3002\u5982\u679c\u786c\u8981\u89e3\u91ca\u7684\u8bdd\u5c31\u662f\u989d\u5916\u9644\u6709\u7684\u97e7\u6027\u5982\u679c\u6ca1\u524a\u5b8c\u4e5f\u4f1a\u6d88\u5931\u3002\u4f46\u4e0d\u51ed\u501f\u5916\u90e8\u5de5\u5177\u5f88\u96be\u5224\u65ad\u5b9e\u9645\u60c5\u51b5\u3002
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\u8fd9\u56de\u662f\u771f\u5b8c\u4e86\uff0c\u6d4b\u8fd9\u4e00\u5806\u6211\u5927\u6982\u5df2\u7ecf\u79ef\u7d2f\u4e86\u4e09\u5468\u4e0d\u60f3\u73a9\u8840\u6e90\u7684\u538c\u5026\u5ea6\u3002","post_no":19,"type":"0","comment_num":3,"is_fold":0,"props":null,"post_index":18,"pb_tpoint":null}}" data-pid="129013933209" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
玛利亚
|
||||
|
||||
普通状态无韧性,一些动作中韧性40。大以上冲击无需破韧可打断,中小需破韧才能打断,微与推破韧也无法打断。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
科斯孤儿
|
||||
|
||||
不出招时一阶段55韧性,二阶段65韧性。
|
||||
|
||||
出招中难以准确描述。但猜测如下:一些动作中削韧本身无效的可能性,例55韧性在不出招时攻击一次55-28=27,这时敌人出招中攻击一次韧性仍为27,动作保护结束后再攻击一次削空韧性出硬直,类似这样情况较为多见。一些招式附有韧性(+30,+50)的可能性也存在,但假如是30就会变成这样首先55-28=27,出招中受攻击一次27+30-28=29,那么出招结束后应该无法用28直接硬直,但实际一般都是可以直接再用28硬直。如果硬要解释的话就是额外附有的韧性如果没削完也会消失。但不凭借外部工具很难判断实际情况。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
这回是真完了,测这一堆我大概已经积累了三周不想玩血源的厌倦度。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
收起回复
|
||||
|
||||
19楼2019-12-25 02:03
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
\u5f53\u7136\u80fd\u6253\u51fa\u8fd9\u4e24\u79cd\u51b2\u51fb\u529b\u7684\u672c\u5c31\u5f88\u5c11","post_no":20,"type":"0","comment_num":0,"is_fold":0,"props":null,"post_index":19,"pb_tpoint":null}}" data-pid="129156865588" style='font-size:13.3333px;font-style:normal;font-weight:400;color:rgb(51, 51, 51);'>
|
||||
|
||||
- hannibal125
|
||||
|
||||
- 乌鸦猎人
|
||||
|
||||
9
|
||||
|
||||
能把枪反后孤儿打智障的大概是微和推两种冲击力,大概。
|
||||
|
||||
当然能打出这两种冲击力的本就很少
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
回复
|
||||
|
||||
20楼2020-01-02 06:55
|
||||
|
||||

|
||||
|
||||
皇冠身份
|
||||
|
||||
- 发贴红色标题
|
||||
|
||||
- 显示红名
|
||||
|
||||
- 签到六倍经验
|
||||
|
||||
更多定制特权
|
||||
|
||||
赠送补签卡1张,获得[经验书购买权]
|
||||
|
||||
我在贴吧
|
||||
|
||||
blueroseslol
|
||||
|
||||
0[获取]
|
||||
|
||||
扫二维码下载贴吧客户端
|
||||
|
||||
下载贴吧APP
|
||||
|
||||
看高清直播、视频!
|
||||
|
||||
贴吧热议榜
|
||||
|
||||
- 1回力鞋可致儿童性早熟1728632
|
||||
|
||||
- 2学生欠校园贷不上失信名单1519896
|
||||
|
||||
- 3阿尔兹海默疫苗新突破1177119
|
||||
|
||||
- 4暗恋时有回应吗?1124344
|
||||
|
||||
- 5直播业平均月薪9423元810500
|
||||
|
||||
- 6391万买一个手机号707664
|
||||
|
||||
- 7cp粉求张翰郑爽复合677580
|
||||
|
||||
- 8李铁出任中国男足主教练349087
|
||||
|
||||
- 9张柏芝斥偷拍263916
|
||||
|
||||
- 10喝全脂牛奶超重可能性低40%195347
|
||||
|
||||
- 贴吧页面意见反馈
|
||||
|
||||
- 违规贴吧举报反馈通道
|
||||
|
||||
- 贴吧违规信息处理公示
|
||||
|
||||
- 45回复贴,共1页
|
||||
|
||||
<返回血源吧
|
||||
|
||||
发表回复
|
||||
|
||||
发贴请遵守贴吧协议及“七条底线”贴吧投诉
|
||||
|
||||
发 表
|
||||
|
||||
保存至快速回贴
|
||||
|
||||
|
||||
|
||||
©2020 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示
|
37
05-SDHGame/ActionRPG时代的设计/黑魂与血源设计参考/步枪矛 散弹枪子弹轨迹【血源吧】_百度贴吧.md
Normal file
@@ -0,0 +1,37 @@
|
||||
步枪矛跟散弹枪,同样都是共计15发子弹,水平方向上分成5束,发散角总共是24度。垂直方向分成三束,间隔是3度。总共是5*3的阵列。全程不受重力。散弹枪每颗子弹就是【除固伤外的血质面板+固伤】计算伤害,骨髓灰后是【除固伤外的血质面板*1.4+固伤】。步枪矛每颗子弹的伤害是 【除固伤外的血质面板*0.8+固伤】的值计算伤害,计算伤害后*0.1,这样做的目的就是为了修正固伤的BUG,这样固伤就只能打出1.5倍而不是15倍伤害了。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
从上方的视角,左边是散弹,右边是普通手枪。射程一半以内可以枪反。最大射程理论上是9.2米,但因为射击角度之类的问题一般会感觉更短一些,手枪约12.25米,约9.25米以内可以枪反。这里的米是游戏单位,并不一定和现实感觉一样。比如可能游戏的人物都是2.5米,这样1米就实际很短了。目测游戏中的1米或者说1长度单位是慢步走约1步的距离。
|
||||
|
||||
路德维希步枪散弹的发散程度和普通散弹是一样的,但是射程理论上是13.75米(红色部分7+灰色部分6.75)
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
手枪威力随距离递减,散弹不变。手枪子弹在前边不受重力,在灰色部分开始受重力,轨迹偏转就不画了
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
侧面
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
图中和人偶妹这个距离大约是游戏中的9米(9长度单位),因为有一定高低差,实际上水平距离应该略少,但是连线的距离是9米左右。是步枪矛散弹枪的最远射程和手枪85%威力范围的边缘。
|
||||
|
||||

|
29
05-SDHGame/Inventory设计.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
title: Inventory设计
|
||||
date: 2022-08-12 14:18:31
|
||||
excerpt:
|
||||
tags: SDHGame
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
## 设计方案
|
||||
直接使用Lyra的 **Entry - Instance - Definition - Fragment**结构以及FFastArraySerializer/FFastArraySerializerItem网络同步结构。并针对一些设计做出改动。
|
||||
|
||||
### 宝石/词条
|
||||
- 宝石的基类现在统一改名成Attachment;词条命名为Word。
|
||||
- 两者数据存储在ItemInstance中。实现专门的Fragment用来设置ItemInstance的里存储数据。
|
||||
|
||||
### 可使用物品
|
||||
考虑到需要便捷的自定义Use()逻辑,思路有二(目前倾向于第二个):
|
||||
1. ~~在ItemDefinition里编写对应的几个BlueprintNativeEvent(),并根据需要进行Overrider。之后ItemInstance的对应接口函数调用ItemDefinition中的函数即可实现。~~
|
||||
2. 在ItemInstance里放置几个行为的Delegate。创建几个对应行为的Fragment,在创建时将内部的函数函数绑到Delegate上。
|
||||
|
||||
## 物品列表
|
||||
- CanBeUse
|
||||
- Weapon
|
||||
- Equip
|
||||
- Material
|
||||
- Token
|
||||
- 灵石
|
||||
- Attachable
|
||||
- 生命宝石
|
4
05-SDHGame/UI设计/RPG Metanoia Project v4 UI笔记.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# Widget_InGameMenu
|
||||
Widget_TabbedMenu: 顶部Tab栏。
|
||||
|
||||
内部控件:
|
BIN
05-SDHGame/UI设计/参考设计/WOW式.jpg
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/各种武器技能.jpg
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/各种武器技能树.jpg
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/商店.jpg
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/守护灵.jpg
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/武器战技设置.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/物品栏.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/物品栏装备.jpg
Normal file
After Width: | Height: | Size: 146 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/装备栏.jpg
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
05-SDHGame/UI设计/参考设计/仁王/角色属性.jpg
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/NPC对话.jpg
Normal file
After Width: | Height: | Size: 125 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/主界面.jpg
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/商店.jpg
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/忍义手技能.jpg
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/技能栏.jpg
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
05-SDHGame/UI设计/参考设计/只狼/背包.jpg
Normal file
After Width: | Height: | Size: 129 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/任务栏.jpg
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/天赋栏.jpg
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/技能栏.jpg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/背包栏.jpg
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/被动技能栏.jpg
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/角色状态.jpg
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
05-SDHGame/UI设计/参考设计/异度神剑3/饰品栏.jpg
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/主菜单.jpg
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/合成清单.jpg
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/宝石镶嵌.jpg
Normal file
After Width: | Height: | Size: 156 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/客制强化.jpg
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/手柄快捷栏.jpg
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/装备制造.jpg
Normal file
After Width: | Height: | Size: 139 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/装备栏.jpg
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
05-SDHGame/UI设计/参考设计/怪物猎人世界/道具商店.jpg
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
05-SDHGame/UI设计/参考设计/战神/装备栏 (2).jpg
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
05-SDHGame/UI设计/参考设计/战神/装备栏 (2).png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
05-SDHGame/UI设计/参考设计/战神/装备栏.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
05-SDHGame/UI设计/参考设计/战神/装备栏.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 42 KiB |
BIN
05-SDHGame/UI设计/参考设计/绯红结系/天赋栏.jpg
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
05-SDHGame/UI设计/参考设计/绯红结系/背包.jpg
Normal file
After Width: | Height: | Size: 451 KiB |
BIN
05-SDHGame/UI设计/参考设计/绯红结系/装备技能.jpg
Normal file
After Width: | Height: | Size: 459 KiB |
BIN
05-SDHGame/UI设计/参考设计/绯红结系/装备栏.jpg
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
05-SDHGame/UI设计/参考设计/绯红结系/队伍状态.jpg
Normal file
After Width: | Height: | Size: 478 KiB |
BIN
05-SDHGame/UI设计/参考设计/艾尔登法环/主菜单.jpg
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
05-SDHGame/UI设计/参考设计/艾尔登法环/装备栏.jpg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/主界面.jpg
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/人物表情动作.jpg
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/商店.jpg
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/武器栏.jpg
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/物品交互.jpg
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/物品栏 (2).jpg
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/物品栏.jpg
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/装备栏.jpg
Normal file
After Width: | Height: | Size: 115 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/角色状态栏.jpg
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
05-SDHGame/UI设计/参考设计/血源诅咒/防具栏.jpg
Normal file
After Width: | Height: | Size: 126 KiB |
93
05-SDHGame/卡通渲染相关.md
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
# 合作计划与制作项目清单
|
||||
个人目前是先建议
|
||||
第一步使用一些Vroid模型进行进一步的卡通渲染测试,好处有:
|
||||
1. 可以与Unity的VRM 卡通渲染效果进行对比。
|
||||
2. 这些模型有商业授权,没有后苦之忧。
|
||||
3. 大部分模型都是有表情的,会方便很多。
|
||||
4. 商城中还有其他的配套的衣服与饰品,可以给角色进行更换。
|
||||
|
||||
第二步是找一些舞台与卡通场景(这类资源地编应该也会有积累),类似Colin以前制作视频的那种。
|
||||
第三步制作视频上传到B站;待我案例关卡以及文档OK了,再上传油管。
|
||||
第四步编写VRM插件以及打包ShowCase测试项目,并且制作相关介绍用网页。
|
||||
|
||||
## VRM模型
|
||||
Vroid官方免费模型
|
||||
- https://hub.vroid.com/en/characters/1248981995540129234/models/8640547963669442173
|
||||
- 
|
||||
- https://hub.vroid.com/en/characters/2843975675147313744/models/5644550979324015604
|
||||
- 
|
||||
|
||||
其他Booth商场购买模型:
|
||||
https://booth.pm/zh-cn/browse/3D%20Characters
|
||||
|
||||
- https://booth.pm/zh-cn/items/3443188
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/3681787
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/3470989
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/2780069
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/2736146
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/3224415
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/4035411
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/2198694
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/4431242
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/3667065
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/4358123
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/995244
|
||||
- 
|
||||
- https://booth.pm/zh-cn/items/2830083
|
||||
- 
|
||||
|
||||
## 卡通渲染提供的各类解决方案
|
||||
首先Colin的Unity卡通渲染试用版仅仅是一个打包过Demo,仅为展示效果。因为Unity的管线是脚本,不能像UE那样编译成dll。
|
||||
因此UE可以根据需求使用多种试用方式:
|
||||
| 需求 | 主要需求功能 | 引擎版本与功能 | 额外服务 |
|
||||
| --------------------------- | ------------------------------------------------------------- | ------------------------------- | ---------------------------------------- |
|
||||
| Vtuber面部捕捉(个人试用) | 面部捕捉(单双摄像头)、推流(虚拟摄像机推流到OBS)、挂件系统 | 打包游戏版本 | github issus |
|
||||
| Vtuber全身捕捉(个人试用) | 全身捕捉与面部捕捉、推流(虚拟摄像机推流到OBS)、舞台场景系统 | 打包游戏版本 | github issus |
|
||||
| Vtuber面部/全身捕捉(公司) | 包括个人版内容、全身捕捉与面部捕捉(多摄像头) | 打包引擎版本(不能打包与Debug) | github issus、定制服务开发 |
|
||||
| MMD制作需求 | | 打包引擎版本(不能打包与Debug) | github issus |
|
||||
| 番剧制作 | 暂不考虑 | | |
|
||||
| 游戏制作要求 | | 打包版引擎 | github issus、定制服务开发、完整技术支持 |
|
||||
| 游戏制作要求(源码) | | 源码版引擎 | github issus、定制服务开发、完整技术支持 |
|
||||
|
||||
基于UE的面部软件竞品:
|
||||
- VActor(没有提供源码)
|
||||
- [https://github.com/endink/VActor](https://github.com/endink/VActor) 本软件基于我的 UE 动补插件 MediaPipe4U 制作
|
||||
- [https://github.com/endink/Mediapipe4u-plugin](https://github.com/endink/Mediapipe4u-plugin)
|
||||
|
||||
## ~~Shader代码加密~~
|
||||
使用之后shader直接报错了。
|
||||
|
||||
~~VSCode怎么把代码转换成一行:选中想要合并的行,按Ctrl + Shift + P 调出命令窗口,输入join lines,确认执行就可以合并多行了。~~
|
||||
|
||||
>PS.打包后的引擎可以通过RenderDoc截帧,并且看到对应Pass名称与结构。
|
||||
|
||||
|
||||
## Git流程管理
|
||||
- Brance
|
||||
- ToonDevelop:用于合并Release与各个版本分支。
|
||||
- 各个版本分支:比如 UE5.0 UE5.1 UE5.2等,方便后续给低版本移植之后开发的渲染功能。
|
||||
- ToonRelease:稳定版本的引擎,用于触发自动化打包流程。
|
||||
- 额外出钱定制引擎分支:部分公司可能会额外出现定制功能,但这些功能不能随着版本一起发布。
|
||||
- 标签:用于标记可以Release的Commit,当合并新版本的Release分支以及调试之后在指定Commit上添加
|
||||
- 标记引擎版本:UnrealEngine-Toon 5.0.1、UnrealEngine-Toon 5.0.2
|
||||
- 标记卡通渲染功能版本:UnrealEngine-Toon 1.0、UnrealEngine-Toon 1.1、UnrealEngine-Toon 1.2
|
||||
|
||||

|
||||
|
||||
|
||||
### 自动化
|
||||
自动化系统会触发Tag以及ToonRelease分支的添加时会触发钩子,进行对应的操作:
|
||||
- Tag:通过钩子向自动化系统发送打包指令
|
||||
- ToonRelease:通过钩子向自动化系统发送打包指令
|
4
05-SDHGame/开发任务.md
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
## 开发任务
|
||||
1. Pickup 实现
|
||||
2. 捡起,整理,丢弃,使用,背包物品描述,装备栏(特殊的背包)
|
29
05-SDHGame/续订价格.md
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
# 续订方法
|
||||
主要是目的是为了保证我们有额外收入的同时,让客户用得舒心。
|
||||
|
||||
1. 主要的方案分为**包月制**与**指定版本更新制**。
|
||||
2. 允许预付费,**买12个月,送2个月**。
|
||||
3. 老用户费用递减(每年递减20%,最高减少至50%)?类似Rider包年制。
|
||||
|
||||
## 二进制引擎
|
||||
### 更新制度
|
||||
获取当前最新版本的卡渲引擎,但不提供其他服务。费用计算方式为:
|
||||
>一次性更新(版本差距不超过6个月,不享受费用递减制度):1w
|
||||
- 12个月:1.8W
|
||||
- 24个月:3.2W(已经加入递减计算)
|
||||
- 36个月:4.3w(已经加入递减计算)
|
||||
|
||||
### 包月制度
|
||||
更新引擎的同时,赠送答疑服务。
|
||||
- 3个月:1W
|
||||
- 6个月:1.5W
|
||||
- 12个月:2.5W
|
||||
- 赠送快速bug修复服务。
|
||||
- 24个月:4.5W(已经加入递减计算)
|
||||
- 在12个月的基础上,赠送功能定制服务(2*5个工时)。
|
||||
- 36个月:6w(已经加入递减计算)
|
||||
- 在24个月的基础上,赠送功能定制服务(2*10个工时)。
|
||||
|
||||
## 源代码引擎
|
||||
价格为**二进制引擎**的5倍价格
|