以一个程序员的视角看阴阳师这款游戏,包括抽卡概率、游戏机制、前段时间的bu 生等问题的答疑带给大家,看看都有哪些全新的认识。(程序员@老陈就是我分享)
1大家最关心的SSR抽卡问题
首先,程序开发里面,写一个抽卡的随机程序非常简单,java里面一个random()函数就可以搞定。但这种随机是真正的随机。事实看来,SSR的随机并不是这么简单。
我觉得,写SSR抽卡函数的组,一定添加了其他的影响因素,其中比较经典,流行的就是
a根据你的日常上线时间决定概率。当大家登陆自己服务器账号的时候,都会显示上次登陆是几天前,这个时间用一个数据库来记录很容易。上线时间越不频繁,出ssr的几率越大。
b整点抽卡,半夜抽卡。楼主认为,这个说法完全不成立。从计算机科学的角度来看,时间是一个服务器所掌握的,而抽卡出ssr的函数是由单独独立的程序所掌握的。一个抽卡函数,如果想要通过服务器时间调整爆率,这个访问时间是很大的,运行速度也会很慢。最关键的是,抽卡函数一定是被封装起来的,程序接口处加入时间这一元素,使得这个函数要实时返回服务器时间,实时把服务器时间转化成抽奖概率,也就是说,24小时这个函数要始终不间断的工作,不可能。
c月见黑被高速公鹿中断。抽卡次数被记录下来很容易,所以月见黑被SSR恶意中断也是绝对有可能的,这个程序不难写,不排除网易有故意的嫌疑。
d非洲脸,欧洲脸。我认为,建号当初,附加这方面属性也并不是件难事。每个账号都由数据库存储,你的账号id(注意,是你账号对应的那串数字,不是用户名,也不是邮箱名)在数据库里叫做主键,这个东西就相当于你的身份z号码,无论你如何改名,如何整容,如何改生日,你的身份z号码不会改变。建号的时候,只要在你的数据里面加上一个“出卡概率”,在这个概率的基础上,通过上文提到的a,c来做加减乘除(或者更复杂的计算)。但总体来讲,你的基础概率不会有太大变化,所以,氪不改命,有时候你得信。
第一点暂时就想到这么多,楼主也是自己瞎说的,大家仅供参考。
伪代码大概这样吧,楼主写java的,随便写了个。
public double chouKa(date, time, probability){
Date date = new Date();记录登陆时间
Time time = new Time();记录抽卡次数
date = read(Database(date));从数据库里读登陆时间
time = read(Database(time));
SSR_gailv = probability – 01 chuli(date) + 02 chuli2(time);
return SSR_gailv
}
2说一下御魂爆率
一个御魂一共有5种属性,每种属性又有几种数值。(虽然你的攻击有300多,但从初始加到300多,只会出现几种特定的数值)。这5种用链,数组,或者map存储。
每个御魂的强化属性并非一出生就确定~
这里拿链表举例子,我并不知道网易底层到底用的什么结构,个人感觉会用链表,因为可以节约地址空间。当一个新御魂产生的时候,会产生1到5个不同的结点,每个结点里面存储了属性,数值。当你的御魂等级达到特定等级,会产生新的结点。
这里面想给御魂的属性添加概率也是简单的一比,并没有什么玄学一说,纯是看概率的事情。至于针对某个人的脸(非洲脸,欧洲脸),个人认为不太可能,因为御魂的数量庞大,种类很多,如果每次都要访问数据库里存储你“脸”的数据,访问量太大了,不可能。所以,同志们,肝吧,肝可以改命。
下面简单写个伪代码:
class Node(){
public string shuxing;
public int dengji;
public Node(shuxing,yuhun){
thisshuxing = shuxing;
thisyuhun = yuhun;
}
}
public Yuhun(){
public LinkedList yuhun(){
List yuhun = new LinkedList();
for(int i = 0; i < random(); i++){
yuhunadd(Node(shuxing,yuhun)); 给一个御魂添加属性,以及属性的等级。
}
升级和升级后随机加属性的代码不写了,懒
}
}
3说一下前一阵的bug事件
先举个简单的例子。每次你刷完某章的副本之后,也许会出现小纸人,有的小纸人可能送你体力。在你点击体力之前,仔细的你会发现,那个体力早已经加到了你的总体力上面了。所以,小纸人出现,和你加体力,是在同一时间发生的。这个叫做,多线程。
bug事件应该属于多线程的问题。多线程在计算机科学的 *** 作系统里面算是稍微复杂一点的东西,需要有经验的人才能写好。当你进入“贪,痴”,然后马上左上角,这个 *** 作并没有关闭之前的“贪,痴”线程,而“贪,痴”在运行之后,要等待一个信号才能让线程终止,这个信号就是你刷其他普通御魂结束后的信号。总之,这其中的代码错的很乱很离谱,个人感觉不是简简单单的一行代码出错误。
所以,bug事件出现没过久以后,网易推出了体验服这一说。你以为体验服是为了让你们早点体验新东西吗错,出体验服之前并没有玩家渴望出现体验服。出体验服是为了让你们免费替网易查bug啊!!你在体验服里玩出bug来,正式服里就可以提前改正。
有种职位叫QA,专门查bug的,估计网易没钱,雇不起。这下开个体验服,美滋滋~
4 说一下自动攻击的垃圾设定
当你在神乐乱J8拉人的时候,当你在鸟乱J8剁人的时候,是否为这个及其不人性化的设定而发怒
个人认为,这个设定,改起来不麻烦,因为已经有了一些写好的代码,比如 白狼的大招(打血最多的),源博雅的3发箭(打血最少的),这些函数换到其他人物身上,一点也不难。
为什么这么简单的还不改
a有可能原来的开发者离职了,留下的摊子没人接锅。
b懒
5 视角锁定
现在每次进游戏,视角都是固定在某个位置,不会记录你的个人设定。很简单,为了省空间,提速度,取而代之的就是玩家体验感下降。个人觉得,前段时间,每次刷完图出来都要卡一下,可能和这个有关系,后来直接删了,也不存你的视角位置了,速度飞起。
同理,4里面提到的自动攻击设定,也不会记录你自己的个人设定的,比如说你的鸟自动攻击血最多的,他的鸟自动攻击血最少的,为了省空间,提速度
6 永久勾玉卡
从抽卡的角度来看,不建议买。
(以下属于猜想,基本一个月回本,大家都买的情况下,其实并不会有特别的待遇。)
购买了,i=1,不买,i=0。
if(i==1){出卡概率–}
if(i==0){出卡概率++}
i=1,说明这个玩家铁定是咱们的忠实用户。到时候抽卡坑就坑你们这种的。
个人观点:给网易造成一种假象,就是,爷随便玩玩这游戏,可能明天就不玩了,上线也别频繁。但这点不太容易。
对了,这个1,2,3,4,5,6,应该从0开始数,从1开始数是我此贴的一大败笔。
另外,我从来不会举某个例子,比如:你看,我有个号,一周没上线,网易以为我不玩了,就给我SSR了,所以我的登录不能太频繁的观点是正确的。
这种举例子是最不科学严谨的,尤其在我们讨论概率问题的时候,尤其不要举例子。证明题倒是可以举反例。contradiction
7再说抽卡
连抽,单抽问题:根据我学的知识,我完全无法做到通过程序改变连抽和单抽概率不同。连续10张概率低,一次一张概率高,这种说法是站不住的。
画符号:随便画吧,出ssr不可能和符的图案有关系。哪有那么多数据库空间记录你画的符哪有那么强大的图像识别能力现在连个AR现世召唤的图像识别都做的和屎一样,更不可能识别你画的蓝符了。
说了这么多,我只是想用科学解释一些东西,至于怎么能抽到SSR,我要是知道了,我就不在这里水贴了。这也正是这个游戏的魅力,估计网易的程序员里面也只有写抽卡核心部分的程序员才会知道里面的算法。个人感觉,不超过10个人。而且就算知道了也没用。
你搞懂ssr、vps没有?vps在那里?你家网络在那里?再说个二傻都懂的道理,假如你的想法能实现,那么别人公网宽带都办理1m的得了,都使用你设计的ssr代理服务器技术,那电信、移动、阿里、华为卖带宽的早就倒闭了。SSH(Secure Shell)和SSR(ShadowsocksR)都是加密通信协议,但是它们有一些区别。1 协议不同
SSH是一种通用的加密协议,主要用于远程登录和文件传输的加密通信。而SSR是基于Shadowsocks协议改进的版本,主要用于代理上网。
2 加密方式不同
SSH支持多种加密算法,包括DES、3DES、AES等,而SSR则采用更加高效的RC4加密算法。
3 代理方式不同
SSH主要是通过端口转发或者SOCKS代理实现代理上网,而SSR则是通过Socks5代理实现。
4 可用性不同
SSH在某些地区或者网络环境下可能会被封锁或者被限制使用,而SSR则由于其轻量级、加密效率高等优点,可以在更多的网络环境中使用。
总的来说,SSH适合用于远程登录和文件传输等场景,而SSR则更适合用于代理上网。但是需要注意的是,无论是SSH还是SSR,都需要注意安全性和合法性,不要用于违法活动。缺点:1、SEO问题
2、首屏速度问题
3、消耗性能的问题
优点:
1、更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面
2、首屏渲染速度快
SSR 简单来说就是将页面在服务端渲染完成后在客户端直接展示。
indextemplatehtml
serverjs
vue项目是通过虚拟 DOM来挂载到html的,所以对spa项目,爬虫才会只看到初始结构。虚拟 DOM,最终要通过一定的方法将其转换为真实 DOM。虚拟 DOM 也就是 JS 对象,整个服务端的渲染流程就是通过虚拟 DOM 的编译成完整的html来完成的。
需要通过Webpack打包生成两份bundle文件:
Client Bundle,给浏览器用。和纯Vue前端项目Bundle类似
Server Bundle,供服务端SSR使用,一个json文件
不管项目先前是什么样子,是否是使用vue-cli生成的。都会有这个构建改造过程。在构建改造这里会用到 vue-server-renderer 库,这里要注意的是 vue-server-renderer 版本要与Vue版本一样。
打包之后目录结构
vueconfigjs
indextemplatehtml
打包成客户端和服务器端
启动node服务
github地址: >
我最开始接触是在Vue的官网上,开始是作为一个小节出现,现在已经是个专门的大章节来专门讲Vue服务端渲染的内容。
服务端渲染 简单来说就是在服务器上把数据和模板拼接好以后发送给客户端显示。
回顾下前端的 历史 ,最开始的站点是简单的静态网站。后端大哥把html文件推送给用户,用户浏览器解析这些字符串进行显示。那个时候就是 服务端渲染 。可是后来由于网站内容越来越复杂、特效越来越炫酷,这种‘兼职’状态已经不能满足需求,细分之下的前端出现了。
随后为了方便的开发,开始提倡 前后端分离,大家各做各的,彼此之间通过基于>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)