当前位置: 首页 > news >正文

XYGame-网络同步3-防作弊

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

GIT https://git.oschina.net/dreamyouxi/XYGame

对应工程是ClientServer 服务器

客户服务端 ClientServer

运行在服务端的软件。 用于模拟客户端的运算 来校验数据,原则上 只是UnityClient的一个场景 和部分修改代码 没有UI 只有逻辑,有单独的线程 负责和 LogicServer通信等

 

由于所有逻辑都在客户端,执行,像战争迷雾,客户端逻辑错乱,开辅助软件刷号 刷金币等,操作型的作弊 对于手游,我没什么解决方法,对于各个客户端逻辑的正确性,可以通过ClientServer 来效验,具体流程

战斗完成后,战斗服务器 会把游戏帧数据保存 到redis  或者文件什么的,LogicServer 会向ClientServer发起 数据效验请求,带上装备信息,战斗id 等基本信息,ClientServer 可以做成一个队列,收到请求后立刻和客户端一样的算法 来快速模拟这句游戏,然后匹配战斗结果 是否一致,

有一层小优化就是可以预先判定各个客户端的数据是否一致,一致才发起数据效验,目前实现的ClientServer 只相比客户端多了100多行代码,开发逻辑时 不需要特地在意,打包的时候 选择ClientServer 场景即可,GIT连接的UnityClient工程中 已实现

由于服务器没有显卡,运行Unity 可用 xxx.exe -batchmode 命令来运行,

当然,只是开发版本,运营的话 还要改动大量客户端代码,比如吧View 音效 特效等东西去掉,只留下逻辑

等代码,当然客户端框架设计得好的话可以很简单就移除掉View Audio 等模块。

 

这种效验方式只能在战斗结束后才能效验,如果玩家作弊,虽然对其他玩家不会有太大的影响,但是有时候还会在游戏过程中需要立刻阻止 或者响应很快的知道某客户端作弊,强行掉线 不让其进行游戏的这种需求的话,

方案:服务端的ClientServer 同步模拟游戏,然后一定Tick 对整个游戏系统 做信息摘要,比如求一次hash 来做对比,这种在不需要知道客户端作弊内容的情况下,还比较好,当然也可以用客户端之间来做对比(所有客户端都作弊 那就无解了,也存在作弊内容不一样的情况), 这种粗暴的强行不让游戏的做法比较粗暴,可以让整盘游戏失效,也可以做到 谁作弊 谁强行掉线

 

端游还可以开个守护进程监测系统进程活动,类似于TX的TP系统,不过也防不了高手

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/887813

相关文章:

  • 红黑树 - C++代码实现
  • 自己定义iOS上双击Home键图切换
  • 数据预测的步骤
  • Elasticsearch学习笔记-04.2删除文档
  • 磁珠与电感的区别,看了就灰常明白了
  • Spring Quartz 集群动态创建任务
  • 考试题解集合
  • sublime Text3 插件
  • Http1.0和Http1.1的主要区别
  • DOM操作表格
  • BZOJ1486 最小圈 [分数规划+负权环]
  • 医疗成像领域引进人工智能: AI 帮助医生进行成像分析
  • linux命令总结basename
  • 遍历字典 NSDictionary
  • 2012金华邀请赛解题报告
  • [NodeJS] 关于Buffer
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • angular2 简述
  • bootstrap创建登录注册页面
  • C# 免费离线人脸识别 2.0 Demo
  • canvas 五子棋游戏
  • es6
  • Joomla 2.x, 3.x useful code cheatsheet
  • jquery cookie
  • log4j2输出到kafka
  • Sublime text 3 3103 注册码
  • vue自定义指令实现v-tap插件
  • Vultr 教程目录
  • 初探 Vue 生命周期和钩子函数
  • 给Prometheus造假数据的方法
  • 模型微调
  • 如何解决微信端直接跳WAP端
  • 时间复杂度与空间复杂度分析
  • 微信公众号开发小记——5.python微信红包
  • 小程序测试方案初探
  • 一个SAP顾问在美国的这些年
  • 2017年360最后一道编程题
  • puppet连载22:define用法
  • scrapy中间件源码分析及常用中间件大全
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #pragma pack(1)
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (a /b)*c的值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (力扣)循环队列的实现与详解(C语言)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)PlayerPrefs在Windows下存到哪里去了?