COC的战斗过程是咋实现的,还有战斗数据保存方式是咋样的
回放功能只需要记录变量。这里的变量就是用户操作,COC里用户操作有多少?屈指可数的放兵操作而已。打个比方,答数学题时只需要写下关键步骤即可,回头再看就能明白当时的思路,不需要把你的完整思考过程写下来。
■网友
1、客户端运算。2、服务器记录的是你放兵的坐标兵的顺序类型什么(也就是你的操作),游戏战斗算法保证了坐标(兵的顺序类型什么,也就是你的操作)一定,打的过程就定了,第一遍打把这些上传服务器,而播放时 ,把这些数据发回客户端,相当于客户端又运行了一遍你之前的‘操作’。
■网友
“一场战斗的数据很大”只是你的错觉,实际上你只是觉得画面动作很多所以产生了这种感觉。在服务端只计算了几个数字而已,这些数字下发客户端才产生了这么多的动作和特效的。
■网友
一种选择是完全在客户端进行战斗,在战斗结束时将结果发送回服务器。然而,这似乎会允许作弊。
另一个选择是在客户机和服务器之间进行实时联网。
【COC的战斗过程是咋实现的,还有战斗数据保存方式是咋样的】 目前能考虑到就这两种方法
■网友
我之前试过,战斗过程中掉线,然后再上线,战斗已经结束,回放以后发现整个战斗并不是在我掉线之后就结束,而是正常结束战斗。也就是说,实际上在我与服务器断开连接的瞬间,服务器就把整个战斗过程都推算完了。回放的时候,服务器只是把防守方部落的状态,还有放兵和法术的位置、时间发送给客户端,然后客户端重新计算后播放。战斗过程中有一些看似随机的情况,实际上是有固定算法实现的伪随机,每次重放计算结果都是一样的。
■网友
百度 战斗过程数据保存,这个问题排在了第一位。作为混迹N久却没有答过一题的渣渣,决定怒答。大学期间断续玩了一年多的COC 只是觉得它好玩,现在在手游公司当程序 才发现它的牛逼之处。战斗过程的实现应该是 根据所放兵种的位置、时间 按照各兵种的算法在 客户端 得出战斗过程。而需要上传服务端的应该也只有 放兵的时间位置(战斗时相隔一定时间上传一次),这样服务端就可以模拟出战斗过程了。 题主问的回放战斗过程,服务端只需将记录的 放兵时间,位置下发就可以了,所以加载快。以上回答仅是本人猜测。
推荐阅读
- 西藏航空一机长执飞过程中身体不适降落后送医去世
- 朋友圈直播酒驾全过程?警方:当事人涉嫌酒驾接受调查
- 正点财经|
- 大三学生准备日本留学过程中要不要准备考研
- 汽车|年轻人买得起的轿跑SUV,霸气造型战斗力十足,开出去很拉风
- glsl中向量的除法具体是啥运算过程
- 自学编程过程中离散数学的学习是否必要
- 对 2.5D 的 ARPG 来说用 cocos2d-x 还是 Unity3D是否会面临同屏人数的问题
- |淮安举办《中国战斗—— 抗日战争时期木刻版画展》
- 设计师应该咋快速理解程序,我很想学好程序,但没咋理解程序是咋实现的,大部分教程都是教写的过程
