如何精确计算MMO游戏dnf技能攻击力区域

后使用快捷导航没有帐号?
查看: 27325|回复: 14
DNF技能攻击力与所有攻击力的计算方式测试
主题帖子积分
Lv.4, 积分 1569, 距离下一级还需 431 积分
Lv.4, 积分 1569, 距离下一级还需 431 积分
  本文转自贴吧—dnf2023ll
  测试对象
1.png (48 KB, 下载次数: 0)
11:30 上传
1.jpg (62.03 KB, 下载次数: 0)
11:30 上传
  项链手镯都是白板,右槽和武器在测试中会全程带上,所以不会对结果产生影响。不带项链手镯
1 (1).png (68.35 KB, 下载次数: 0)
11:30 上传
  伤害如下,所有测试均为满暴击,直接血暴的截图)
1 (2).png (215.53 KB, 下载次数: 0)
11:30 上传
  进修炼场只有2700力,手镯提升将近百分之1.5,后面的手镯计算的6.5受到了力量影响带项链伤害(5所有攻击力 )
1 (3).png (243.07 KB, 下载次数: 0)
11:30 上传
  实际提升:(65398)÷.237%
  算上右槽的理论提升:0.05÷(1+0.18)=4.237%
  结论:所有攻击力同种伤害提升为加算,存在递减。带手镯伤害
1 (4).png (165.7 KB, 下载次数: 0)
11:30 上传
  实际提升:(65398)÷.537%
  结论:技能攻击力同种伤害提升为乘算,不存在递减,可理解为不冲突白字。
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 227, 距离下一级还需 373 积分
Lv.2, 积分 227, 距离下一级还需 373 积分
本版排名:
本版声望:
主题帖子积分
Lv.3, 积分 644, 距离下一级还需 356 积分
Lv.3, 积分 644, 距离下一级还需 356 积分
脑残,技能攻击力理解为白字?你特么都算了技能攻击力之间为乘算,而白字之间为加算。白字有递减效应,技能攻击力之间没有(荒古艾格尼丝为加算),话都说不清楚
本版排名:
本版声望:
主题帖子积分
Lv.1, 积分 16, 距离下一级还需 34 积分
Lv.1, 积分 16, 距离下一级还需 34 积分
太多装备加所有攻击力了,如果加算,递减,这样的装备将大幅贬值。。。
本版排名:
本版声望:
主题帖子积分
跨一老团长-雨谣
相同描述之间加算,不同描述之间是乘算的,很简单的道理搞那么复杂,还搞错了,真是逗
跨一144线周五六日两小时五波固定团收各种多号的,不带纯尸体,可以给有用的号划水,擎天c不缺,只缺能包震撼的以及奶,晚上7点开,基本上9点多一点打完五波团,主要看集合速度,一般够10人就直接开了,速度没问题,要来的可以加群:
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 369, 距离下一级还需 231 积分
Lv.2, 积分 369, 距离下一级还需 231 积分
脑残,技能攻击力理解为白字?你特么都算了技能攻击力之间为乘算,而白字之间为加算。白字有递减效应,技能 ...
“可理解为不冲突白字”=可以看做是不冲突白字=虽然不是白字,但是我们可以算它是不冲突白字
推荐你上语文课时认真点,别玩手机了
本版排名:
本版声望:
主题帖子积分
Lv.4, 积分 1185, 距离下一级还需 815 积分
Lv.4, 积分 1185, 距离下一级还需 815 积分
本版排名:
本版声望:
主题帖子积分
人性是阻止人类进化的最后一道障碍
看了大佬们的1发言,我还是默默路过把吧
当启明星的指引在东方升起之时,成功的路上就会充满氤氲之息,清泉流响之间又恍惚看到了罗塞塔石碑上书写的英雄王的荣耀,来!让我们举起黄金杯里的佳酿,共赴我们的荒古遗尘之旅,见证我们的万世荣光!
本版排名:
本版声望:
主题帖子积分
Lv.1, 积分 9, 距离下一级还需 41 积分
Lv.1, 积分 9, 距离下一级还需 41 积分
永恒#之星 发表于
脑残,技能攻击力理解为白字?你特么都算了技能攻击力之间为乘算,而白字之间为加算。白字有递减效应,技能 ...
mdzz不看懂不要乱说 ,还说人家nc你才nc& &sb不懂瞎比比 不冲突的白字&&相对于白字对白字&&技能伤害对黄字
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 93, 距离下一级还需 507 积分
Lv.2, 积分 93, 距离下一级还需 507 积分
脑残,技能攻击力理解为白字?你特么都算了技能攻击力之间为乘算,而白字之间为加算。白字有递减效应,技能 ...
大过年的 总有SB 出来秀智商&&你是看不懂字&&?& &“”不冲突的白字“& &&&懂么
本版排名:
本版声望:
主题帖子积分
Lv.1, 积分 45, 距离下一级还需 5 积分
Lv.1, 积分 45, 距离下一级还需 5 积分
我也反正看不懂说一句
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 539, 距离下一级还需 61 积分
Lv.2, 积分 539, 距离下一级还需 61 积分
“可理解为不冲突白字”=可以看做是不冲突白字=虽然不是白字,但是我们可以算它是不冲突白字
推荐你上语 ...
你家白字是冲突的?还语文书先?我严重怀疑你带脑子出门没有!
本版排名:
本版声望:
主题帖子积分
Lv.3, 积分 644, 距离下一级还需 356 积分
Lv.3, 积分 644, 距离下一级还需 356 积分
大过年的 总有SB 出来秀智商&&你是看不懂字&&?& &“”不冲突的白字“& &&&懂么 ...
去你*吧,白字冲突吗?什么叫不冲突的白字?滚你吗的吧
本版排名:
本版声望:
主题帖子积分
Lv.3, 积分 644, 距离下一级还需 356 积分
Lv.3, 积分 644, 距离下一级还需 356 积分
mdzz不看懂不要乱说 ,还说人家nc你才nc& &sb不懂瞎比比 不冲突的白字&&相对于白字对白字&&技能伤害对黄 ...
去*的吧,你什么狗脑子能看出一回事来。加算跟乘算能一样吗
本版排名:
本版声望:
主题帖子积分
Lv.3, 积分 644, 距离下一级还需 356 积分
Lv.3, 积分 644, 距离下一级还需 356 积分
“可理解为不冲突白字”=可以看做是不冲突白字=虽然不是白字,但是我们可以算它是不冲突白字
推荐你上语 ...
扯尼玛的蛋,白字之间什么时候冲突了?你在这瞎脑补你亲妈已经炸了你知道吗
本版排名:
本版声望:
游戏MM版面勋章
游戏周边版面勋章
17173论坛手机优化版正式上线,欢迎使用手机浏览器访问论坛并给我们提建议~&游戏服务端开发:如何精确计算MMO游戏技能攻击区域?
游戏服务端开发:如何精确计算MMO游戏技能攻击区域?
日09时31分来源:
游戏技能攻击区域的计算,关乎服务端的效率。需要确保正确,简洁地计算攻击区域,才能快速寻找攻击对象。今天只讨论地图上距离的问题。一般情况下攻击区域分为以下几种:1、点对点,对个人进行攻击2、射线攻击,其实就是矩形区域3、扇形攻击4、圆形攻击当然,还有其他情况,例如多区域和其他奇奇怪怪的形状。不过考虑的实际观赏价值,和精度的问题,多区域,只考虑圆形和扇形,其他形状也不考虑了。释放技能需要几个事物,攻击者,主要被攻击者(也可能是攻击地点),其他围观的群众
class CPoint//点的定义
typedef std::vector&CPoint& SeqCP
double skillDistance = 123;//技能释放距离
CPoint attackerP//攻击者位置
CPoint defenserP//被攻击者位置或技能释放点
SeqCPoint otherR//其他需要检测的角色
下面再细细讲解:1、点对点的攻击这个是最简单的,只要达到技能释放的距离,就可以释放。只要攻击者和被攻击者的位置小于配置的skillDistance即可。
bool isFarThanDistance(CPoint a, CPoint b, double distance)
double x = a.x - b.x;
double y = a.y - b.y;
if(x*x + y * y & distance *distance)//超过距离
if (!isFarThanDistance( attackerPoint, defenserPoint, skillDistance) )
//在技能范围内,攻击处理
2、射线攻击,矩形区域怪物向目标喷出一条长长的火线,在火线上的玩家受到攻击,如下图。A向B喷火。同时也要检测周围的玩家是否中招
判断一个点是否在矩形内是很简单的,如下:
//判断点是否在矩阵内
bool inRect( double minx, double miny, double maxx, double maxy, CPoint p)
if(p.x &= minx && p.x &= maxx && p.y &= miny && p.y &= maxy)
但这个是在矩形的边跟坐标轴平行的情况下的。如果攻击者的攻击方向跟坐标轴不平行,如上图,就无法计算了怎么办呢,如果能转换成相对坐标就简单很多了。相对坐标的知识要从绝对坐标转换成相对坐标,需要确定相对坐标的原点和x轴方向。原点是A点,也就是attackerPoint,X轴方向从A点指向B点。现在是求图中C点的相对坐标。ABC三点确定位置。根据余弦定理可以求出角CAB的余弦,从而可以求出相对坐标。然后在判断是否在矩阵内。
3、扇形区域攻击者对前方角度α,长度为L的区域进行攻击。如下图,攻击目标为B,要计算旁边的C是否也受到攻击:
//计算两点之间的距离
double computeDistance(CPoint& from, CPoint& to)
return sqrt(pow(to.x - from.x, 2) + pow(to.y - from.y, 2));
* 直角坐标--绝对坐标转相对坐标
* originPoint 相对坐标系的原点
* directionPoint 指向x轴方向的点
* changePoint 需要转换的坐标
CPoint changeAbsolute2Relative(CPoint originPoint, CPoint directionPoint, CPoint changePoint)
//originPoint为图中A点,directionPoint为图中B点,changePoint为图中C点
CPoint reP
if (originPoint == directionPoint)//方向点跟原点重合,就用平行于原坐标的x轴来算就行了
{//AB点重合,方向指向哪里都没所谓,肯定按原来的做方便
rePoint.x = changePoint.x - originPoint.x;
rePoint.y = changePoint.y - originPoint.y;
//计算三条边
//计算三条边
double a = computeDistance(directionPoint, changePoint);
double b = computeDistance(changePoint, originPoint);
double c = computeDistance(directionPoint, originPoint);
double cosA = (b*b + c*c - a*a) / 2*b*c;//余弦
rePoint.x = a * cosA ;//相对坐标x
rePoint.y = sqrt(a*a - rePoint.x*rePoint.x);//相对坐标y
return reP
for(SeqCPoint::iterator iter = otherRoles.begin();
iter != otherRoles.end();
//检测每一个角色是否在矩形内。
CPoint rePoint = changeAbsolute2Relative(attackerPoint, defenserPoint, *iter);//相对坐标
//skillWidth为图中宽度,skillLong为图中长度
//宽度是被AB平分的,从A点开始延伸长度
bool beAttack = inRect(0, - skillWidth/2, skillLong, skillWidth/2, rePoint);//相对坐标下攻击范围不用算了,跟目标的相对坐标算一下
if (beAttack)
//受到攻击,攻击处理
扇形,当然是用极坐标最方便,判断一下距离,在半径范围内,然后判断一下角度是否适合。策划配置:扇形半径R和扇形总角度β所以构建以A为原点的极坐标。根据中心线的角度α,求出扇形的角度范围为[α-β/2,α+β]。再求出C点的极坐标进行比较:
今天发现还有一种方法,就是利用向量的点积,可以百度一下。
void changeXYToPolarCoordinate(Common::CPoint p, double& r, double& angle)
r = sqrt(p.x*p.x + p.y*p.y);//半径
angle = atan2(p.y , p.x) * 180/PI;//计算出来的是弧度,转成角度,atan2的范围是-π到π之间
angle = (angle + 360)%360;
CPoint changeAbsolute2Relative(CPoint originPoint, CPoint changePoint)
CPoint reP
rePoint.x = changePoint.x - originPoint.x;
rePoint.y = changePoint.y - originPoint.y;
return reP
double baseR, baseA
CPoint rePoint = changeAbsolute2Relative(attackerPoint, defenserPoint);//图中B点的相对坐标
changeXYToPolarCoordinate(rePoint, baseR, baseAngle);//转变成极坐标,baseAngle是角度
for(SeqCPoint::iterator iter = otherRoles.begin();
iter != otherRoles.end();
CPoint rePointC = changeAbsolute2Relative(attackerPoint, iter2);//图中C点相对坐标
double cr = 0;//极坐标半径
double cangle = 0;//极坐标角度
changeXYToPolarCoordinate(rePointC, cr, cangle);
if (cr & R)//超过技能半径就无法攻击到了
if ( abs(cangle - baseAngle) & β/2 )//相差的角度小于配置的角度,所以受到攻击。要注意,这里的角度都是在0°到360°之间
//受到攻击
对于扇形计算面积的优化,可以参考这里。
再说一下多个扇形的情况:
CPoint rePoint = changeAbsolute2Relative(attackerPoint, defenserPoint);//图中B点的相对坐标
double longB = sqrt(rePoint.x * rePoint.x + rePoint.y * rePoint.y);//长度
rePoint.x /= longB;
rePoint.y /= longB;//求单位向量
for(SeqCPoint::iterator iter = otherRoles.begin();
iter != otherRoles.end();
CPoint rePointC = changeAbsolute2Relative(attackerPoint, iter2);//图中C点相对坐标
double longC = sqrt(rePointC.x * rePointC.x + rePointC.y * rePointC.y);//长度
rePointC.x /= longC;
rePointC.y /= longC;//求单位向量
double jiaodu = acos(rePoint.x * rePointC.x + rePoint.y * rePointC.y) * 180 /PI;//角CAB的大小
if(jiaodu & β/2)
//相差的角度小于配置的角度,所以受到攻击。要注意,这里的角度都是在0°到360°之间
//受到攻击
分开算就行了,用个for循环,每个扇形分别计算。4、圆形区域,圆形其实是最简单的了。
判断是否在攻击者半径范围内就行了。
对于多个圆形区域的计算
for(SeqCPoint::iterator iter = otherRoles.begin();
iter != otherRoles.end();
CPoint rePointC = changeAbsolute2Relative(attackerPoint, iter2);//图中C点相对坐标
double cr = sqrt(rePointC.x*rePoint.x + rePointC.y*rePointC.y); //点到圆心的距离
if (cr &= R)//超过技能半径就无法攻击到了
//受到攻击
本质上还是一样,用一个for循环,计算出圆心的位置,然后计算点到圆心的距离就完成了。后使用快捷导航没有帐号?
查看: 3520|回复: 4
数据党实测 技能攻击力与所有攻击力的计算方式
主题帖子积分
Lv.4, 积分 1569, 距离下一级还需 431 积分
Lv.4, 积分 1569, 距离下一级还需 431 积分
  本文转自dnf红眼吧—dnf2023ll
1.jpg (34.9 KB, 下载次数: 2)
19:48 上传
  测试对象
1 (1).jpg (7.31 KB, 下载次数: 2)
19:48 上传
1 (2).jpg (34.81 KB, 下载次数: 2)
19:48 上传
1 (3).jpg (32.63 KB, 下载次数: 2)
19:48 上传
1 (4).jpg (51.14 KB, 下载次数: 2)
19:48 上传
  项链手镯都是白板,右槽和武器在测试中会全程带上,所以不会对结果产生影响。不带项链手镯
1 (5).jpg (19.08 KB, 下载次数: 2)
19:48 上传
  伤害如下,所有测试均为满暴击,直接血暴的截图)
1 (6).jpg (38.99 KB, 下载次数: 2)
19:48 上传
  进修炼场只有2700力,手镯提升将近百分之1.5,后面的手镯计算的6.5受到了力量影响带项链伤害(5所有攻击力 )
1 (7).jpg (48.17 KB, 下载次数: 2)
19:48 上传
  实际提升:(65398)÷.237%
  算上右槽的理论提升:0.05÷(1+0.18)=4.237%
  结论:所有攻击力同种伤害提升为加算,存在递减。带手镯伤害
1 (8).jpg (34.73 KB, 下载次数: 2)
19:48 上传
  实际提升:(65398)÷.537%
  结论:技能攻击力同种伤害提升为乘算,不存在递减,可理解为不冲突白字。
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 401, 距离下一级还需 199 积分
Lv.2, 积分 401, 距离下一级还需 199 积分
感觉好像很厉害的样子
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 199, 距离下一级还需 401 积分
Lv.2, 积分 199, 距离下一级还需 401 积分
本版排名:
本版声望:
头像被屏蔽
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
本版排名:
本版声望:
主题帖子积分
Lv.2, 积分 104, 距离下一级还需 496 积分
Lv.2, 积分 104, 距离下一级还需 496 积分
测下 所有攻击对异常伤害 有提升不?
本版排名:
本版声望:
17173论坛手机优化版正式上线,欢迎使用手机浏览器访问论坛并给我们提建议~

我要回帖

更多关于 dnf技能攻击力加5 的文章

 

随机推荐