游戏异或加解密
游戏研发中常对网络中传输敏感信息数据做加密解密处理。异或密码(simple XOR cipher)是密码学中一种简单的加密算法,是指对信息进行异或操作来达到加密和解密目的。无论是原理还是操作性上,都不具备任何难度,所以在做一些简单的加密时,被广为采用。 异或运算(XOR)是一种计算机程序设计语言中很重要基于二进制的位运算,对提高程序可读性和运行效率具有重要实际价值。异或运算具有交换律、结合律、自
检测数据库迁移准确性
游戏运营中经常遇到数据库迁移的情况。比如:合服前的库迁移。为了节省成本整合库迁移。甚至换云服务商引起的库迁移。其实运维本身有责任和义务保证迁移过程中库数据的准确性和完整性。因为对服务器而言。数据实在是太重要。批量迁移过程中总担忧出问题。数据会不会丢失。如何减少这种意外发生。如何做到双重保障?这样心里更加有把握。 双重保障思路是:迁移前批量执行库中每个表的条数输出到文本中。等运维迁移后。再批量执行
游戏合服新方案
游戏随着运营时间变成导致DAU变少。尤其是手游采用衮服的开服策略。导致服务器合服变得更加频繁且要求高效。合服的目的有二。其一是降低服务器成本,其二利于玩家之间的相互竞争。曾经合服采用的方法都是通过研发程序去实现。按功能把所有表数据加载到内存。通过逻辑关联实现。最后把新数据写入数据库。印象中最大的痛点是合服代码维护和合服过程低效。 如何解决痛点?因为自己本身对数据库存储过程感兴趣且比较擅长。结合游
网络通信4:HTTP实现二进制传输
HTTP实现二进制传输。曾经为这事还纠结过。刚工作时游戏都是端游。基本学习和接触过得都是TCP发送二进制方式。当时刚开始转型研发页游。原来删除的都是C++开发。突然要研究flash搞网页游戏。ActionScript(简称AS)这语言不熟悉。弄网络封装时肯定潜意识设计思路是HTTP实现二进制传输。然后结合网络消息采用工具自动化生成方式。自己不善于HTTP。故意招个比较擅长的人协助搞下底层。我把上面
网络通信3:HTTP实现文本传输
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,HTTP协议是建立在TCP协议之上的一种应用。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种短连接。HTTP遵循请求(Request)/应答(Response)模型。所以一定需要实现请求(Gk8HttpRequest)。同时需要实现返回(Gk8HttpResponse
网络通信2:TCP通信实现
TCP是底层通讯协议,定义的是数据传输和连接方式的规范。TCP协议,传输控制协议(Transmission Control Protocol,缩写为:TCP)是一种面向连接的、可靠的、基于字节流的通信协议。讲到TCP协议就绕不开套接字Socket。这也是搞软件开发经常接触的技术点。 套接字Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包
网络通信1:字节流的封装
在网络通讯中,数据在网络传输的格式常以字节流的形式进行,因此需要我们对字节流进行写入和读出的操作。在几乎其他所有语言中,网络数据的收发在利用类似send(或write)和recv(或read)的方法时并没有明显的流处理。需要借助流才可以完成。数据流(data stream)是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。很多语言常将数据流分为输入流(InputStream)和输出流(
表结构对比版本
游戏研发中常遇到跨版本执行数据库脚本的事情。一般都是采用按版本号依次准备脚本的方式。更新时依次执行所跨版本的脚本语句。如何其中出现遗落也不好确定。所以一直琢磨是否可以把数据库的表结构输出成文本。然后使用Beyond Compare 对比工具。这样改变的表结构一目了然。也可以用于确定没遗落更新。安全性大大提高。 Shell脚本:CheckDbTableData.sh #!/bi
如何查看表中的二进制流
最近在整理10来年游戏研发中沉淀下来的知识。很多知识都是因为爱好所以深入学习和实现。也许曾经精力旺盛毫无优先级可言。纯粹为了实现自己的一刹那的想法。现在回忆起来依然记得当初的收获的快感。那会还是端游时代。编程主流语言是C++。数据库使用MSSQL。 很多玩家数据都是存放二进制流的方式。每次读写都需要C++加载到内存通过调试模式逐个看内存数据。尤其想看玩家数据是
或与运算和安全整数(数的影子)
八门神器是安卓、iOS、塞班平台上通用的游戏修改工具,可以修改内存中的数值和参数。在游戏运行时,内存和处理器都会对于游戏进行非常复杂的数据交换和变更。因为游戏有很多的数据,例如金钱、HP值、等级、攻击力、防御力、战斗力等数据,尤其是PVE战斗在客户端进行。服务器校验缺失等。而这些数据,就在内存和处理器的各个地址当中,玩家只需要在八门神器中搜索相关的数据值,八门神器就会将搜索出记录此数据的
预分配法生成唯一ID
在项目中经常有生成唯一ID的业务需求。作为唯一标识方便后续查找和追踪。网上也有很多实现方案。比如:数据库自增主键,数据库批量生成ID,UUID,时间戳方法,zookeeper生成ID,redis生成唯一ID,snowflake算法等等。这些解决方案各有优缺点。我在游戏项目常用的解决方案是:预分配法生成唯一ID。其原理简单,利于扩展,具有较强的适用性。 预分配法生成唯一ID原理: