C++
ykr168age
这个作者很懒,什么都没留下…
展开
-
unity游戏生成与修改so文件教程
本文主要介绍如何对unity3d引擎制作的游戏进行修改。包含了apk文件安装后在手机中的位置分析、修改游戏时遇见内联函数之坑时的解决办法,以及so文件的原理介绍与解析修改。并将实例教学如何修改unity3d游戏(想学崩坏3修改的同学请注意啦)。教程是给入门新手看的,请大神绕道勿喷。文章的核心内容在最后利用Il2CppDumper的部分,前面清楚的话可直接绕到最后看。(因为手机截图下来的图片分辨率太...转载 2019-09-07 14:22:31 · 11429 阅读 · 2 评论 -
RakNet学习(12) -- Send Packets
发送数据包 第一步:确定数据正如在Creating Pakcets中描述的,找出你需要使用的数据类型,使用bitstream或结构体。第二部:确定授权(authority这个词我也不太清楚如何翻译,只是理解意思) 你通常会发送动作的触发数据,而不是一系列动作的结果。通常来讲,数据源分为如下三类: 来自做出动作的函数转载 2014-11-02 14:32:10 · 642 阅读 · 0 评论 -
RakNet学习(18) -- Timestamping your packets
时间戳 如何在不同的计算机上相同的时间帧内相应同一个事件 时间戳与本地系统时间并无关系。很不幸,每个系统都有不同的本地系统时间。如果仅仅通过网络发送获得的本地系统时间,你得到的时间是其他机器上得时间,这条消息除了告诉你发生了什么之外,没有其他有价值的信息了,因为你仅仅知道你自己的系统时间,其他人的系统时间都是不知道的,因此你不知道这个事件在你本机要什么时候触发。转载 2014-11-02 14:43:49 · 582 阅读 · 0 评论 -
RakNet学习(11) -- Creating Packets
创建数据包 如何将游戏数据编码到数据包中 运行RakNet的系统,事实上所有在因特网上的系统,都是通过人们所熟知的数据包进行通信。或更加准确点在UDP下,它用的是数据报。每一个数据报由RakNet创建,并且包含了一条或多条消息。消息可以由你创建,例如位置或健康(health这个词确实不知道如何翻译好),或者有时由RakNet内部创建的数据,例如pings。按照惯转载 2014-11-02 14:30:23 · 628 阅读 · 0 评论 -
RakNet学习(19) -- NetworkIDObject
网络ID对象 NetworkIDObject 和NetworkIDManager类允许使用普通的ID查询指针 NetworkIDOjbect类是一个可选类,可以将自己的类从这个类派生,那么你的类就自动赋值标识数字(NetworkID)。这种方法对于多玩家游戏特别有用,否则你必须有自己的方法动态的访问远端系统上分配的对象。 在RakN转载 2014-11-02 14:48:54 · 667 阅读 · 0 评论 -
RakNet学习(17) -- Network Messages
网络消息 从网络引擎发来的消息 你接收到的一些数据包并不是使用你定义的类型,从你的代码中发送过来,而是从网络引擎中发来的消息。然而,你需要知道他们代表了什么含义,如何处理。每一个数据包的第一个字节,来自于API,会映射到如下列举的一些枚举类型。可能的接受方列举在了括号中,使用PakcetLogger::BaseIDTOString()将这些枚举类型转换为字符串。转载 2014-11-02 14:40:30 · 801 阅读 · 0 评论 -
RakNet学习(23) -- Rackspace Interface
Rakspace 云服务器API的C++接口 用编程的方式管理应用服务器 Rakspace提供了基于API的HTTPS,具体的API信息可以在连接中找到(http://docs.rackspacecloud.com/servers/api/v1.0/cs-devguide-20110112.pdf)。使用TCPInterface时,RakNet支持HTTPS,编转载 2014-11-02 16:52:54 · 567 阅读 · 0 评论 -
RakNet学习(21) -- Secure Connections
安全连接 确保网络传输安全 一旦在线游戏达到了一定的流行程度,人们就开始尝试作弊。那么你就需要在游戏层和网络层考虑这个这个作弊或欺骗问题。RakNet通过提供安全连接来处理这些问题,当然你也可以不使用这个机制。 RakNet提供了使用256位传输层安全的数据安全解决方案。每一个域服务器连接都拥有一个256位的椭圆曲线密钥协议实现前向安全保护。转载 2014-11-02 16:48:42 · 542 阅读 · 0 评论 -
RakNet学习(16) -- Reliability Types
可靠性类型: 控制何时如何使用数据包优先级和可靠性类型// 发送数据的时候,使用这些枚举类型设置数据类型enum PacketPriority{ // 最高优先级。这些0消息立即发送,通常不会进行缓存或与其他数据包聚集 // 为一个数据报。 在HIGH_PRIORITY优先级的数据或者更低优先级的转载 2014-11-02 14:37:00 · 641 阅读 · 0 评论 -
RakNet学习(25) -- Preprocessor Directives
预处理指令 在RakNetDefinesOverrides.h文件中定义了下面这些值。在RakNetDefines.h中这些都是作为默认设置。在NativeFeatureIncludes.h文件中,不要编译那些你用不到的功能。 // 定义 __GET_TIME_64BIT 变量使得RakNet::TimeMS使用64位保存数据,而不是32位值。/转载 2014-11-02 16:56:56 · 478 阅读 · 0 评论 -
RakNet学习(22) -- Cloud hosting
如何使用RakNet设置云端主机服务? 通过Rackspace实现云端主机服务一些服务,例如Autopacher,Cloud Server,以及NAT穿透服务器,要求一个运行了RakNet的服务器。当可以使用额外的主机例如Hypernia或dx.net运行这些服务时,这些服务器一个月大概要$150。扩展服务也要求浪费时间安装代码库,不可能使用编程地实现。转载 2014-11-02 16:51:22 · 650 阅读 · 0 评论 -
RakNet学习 (9) -- Startup
启动RakNet StartupResult RakPeer::Startup( unsigned short maxConnections, SocketDescriptor *socketDescriptors, unsigned socketDescriptorCount, int threadPriority ); 首先要做的就是调用RakPeerInter转载 2014-11-02 00:12:20 · 618 阅读 · 0 评论 -
RakNet学习(10) -- Connecting
连接到其他的系统 寻找连接目标 有5个方式来发现要连接到的系统: 1. 直接输入IP地址(这个广为人知)。 2. LAN广播 3. 使用ClientServer/CloudClient插件 4. 使用游戏大厅服务器或房间插件 5. 使用目录服务器DirectorySe转载 2014-11-02 14:26:37 · 830 阅读 · 0 评论 -
RakNet学习(3) -- 介绍
安装 请参考Compiler Setup页,有什么问题在这块有解答。如果有额外的问题参考FAQ,http://www.jenkinssoftware.com,或者邮件联系我们。高级用户可以直接跳转到Code tutorial。初学者或想要多了解点RakNet的请继续阅读。 API描述 RakNet致力于网络和网络相关服务的游戏引擎。不仅包含了转载 2014-11-01 22:24:41 · 624 阅读 · 0 评论 -
RakNet学习 (8) -- 第三方支持
先解释一下这个题目:这个第三方依赖,主要是RakNet里面用到了很多其他相关的库或游戏引擎。例如实时语音用的是speex语音编解码库。 正文:下面列举的是一些没有第三方库或引擎支持无法编译的一些工程,以及从何处可以得到这些依赖库或引擎。这些工程都是可选的:可以使用RakNet而不适用他们。Unpack to是工程,库在VS工程编译步骤中设置的默认路径,可以手工修改。转载 2014-11-02 00:10:29 · 600 阅读 · 0 评论 -
RakNet学习(20) -- Statistics
统计 如何读取RakNet的统计数据,以及如何解析统计数据 统计数据对于在线的游戏非常重要,因为它可以让你看到你游戏的传输瓶颈在什么地方。关于统计功能,RakNet提供了结构体RakNetStatics,由RakPeerInterface中的GetStatics()函数返回。这个结构体在Source/RakNetStatics.h中定义。函数StaticsToS转载 2014-11-02 14:50:05 · 460 阅读 · 0 评论 -
RakNet学习(24) -- NAT traversal architecture
NAT穿透的结构 结合如何使用UPNP,NAT类型检测,NAT穿透,以及Router2,使得P2P连接迅速而有效完成。 RakNet 使用了4个独立的系统,每一个系统都解决了无法连接到其他系统问题的一部分问题。这些系统是: 1. NAT类型检测 – 发现是否我们有路由器,以及路由限制类型是怎样。 2. UPNP – 告诉路转载 2014-11-02 16:54:49 · 2145 阅读 · 0 评论 -
RakNet学习(13) -- Recieving Packets
接收数据包当一个数据包到来时,例如Receive返回一个非零,处理这个数据包需要三步:1. 确定数据包类型。使用如下的代码可以返回这个类型值。 unsigned char GetPacketIdentifier(Packet *p) { if ((unsigned char)p->data[0] == ID_TIMESTAMP)转载 2014-11-02 14:33:06 · 514 阅读 · 0 评论 -
利用位操作来进行状态操作
定义的状态都必须是0和2的幂方数,比如0,1,2,4,8,因为它们的二进制表示是0000,0001,0010,0100,1000,进行位操作时可以控制各个状态。下面举一个例子简单说明一下:首先定义一些整型常量:[java] view plain copyprivate static final int STATE_NONE = 0; private static final int ST...转载 2018-06-22 08:56:22 · 373 阅读 · 0 评论 -
Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
PC的其实根本不用说,毕竟C#和C++交互的文章已经够多了,当然我自认为经过几次折腾后,几乎所有游戏需要到的操作我都掌握了(各种传参方法,各种坑,不懂的可以留言问,虽然基本上没人看,哈哈)废话不多说,我们主要来讲两大平台——iOS和Android——与unity的native代码交互这里啰嗦一下就是去网上搜都是各种蛋疼的东西,比如如果转载 2017-04-12 23:38:08 · 1132 阅读 · 0 评论 -
gcc参数中的-I, -L和-l
原文地址:http://blog.csdn.net/stpeace/article/details/49408665 在本文中, 我们来聊聊gcc中三个常见的参数, 也即-I, -L和-l 一. 先说 -I (注意是大写的i) 我们先来看简单的程序: main.c:[cpp] view p转载 2017-03-18 00:43:51 · 397 阅读 · 0 评论 -
值得推荐的C/C++框架和库
【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测转载 2015-10-22 23:31:11 · 519 阅读 · 0 评论 -
RakNet(59)学习 -- PHP Directory Server(目录服务器)
PHP 目录服务器概述 使用共享的Web主机给出游戏列表 Lightweight数据库插件功能强大,但是它要求一个一台专用的服务器运行RakNet实例。在有些情况下,这个要求无法满足,并且运行专用服务器额负担也是不可取的。对于这些情况,RakNet提供了一个DirectoryServer.php,它可以再Sample\PHPDirecotory目录下找到。转载 2014-12-06 22:19:24 · 581 阅读 · 0 评论 -
RakNet(54)学习 -- Crash Reporter(崩溃报告器)
崩溃报告器概览 Minidumps使得崩溃报告功能容易实现 CrashReporter可以在RakNet/Samples/CrashReporter中找到,仅仅可以用于Windows平台,它的作用是调试无监控的服务器或游戏客户端。当崩溃发生时,CrashReporter会捕捉异常,写一个minidump,然后将信息写到磁盘或发送email。Email的操作可以是转载 2014-12-06 22:03:54 · 871 阅读 · 0 评论 -
RakNet(58)学习 -- TCP Interface(TCP接口)
TCP接口概述连接到Telnet、HTTP服务器、mail服务器或其他TCPInterface类可以在TCPInterface.h文件中找到,它是一个功能类用于使用TCP协议在一些必要情况下进行连接。连接过程和RakPeerInterface.h类似,但是TCPInterface类中Receive()函数返回接收到的数据,第一个字节不是一些特定的标示符。为了获得连接状态更新转载 2014-12-06 22:07:36 · 1137 阅读 · 0 评论 -
RakNet(53)学习 -- TwoWayAuthentication插件
TwoWayAuthentication插件概览 由一对系统安全地验证已知的密码 通常使用RakNet你可以使用Secure connections安全传输数据。然而,有时一对系统或许没有活动的安全连接。例如,在移动电话上,安全代码需要使用太多内存,变得很慢,或者不能编译。在这种情况下,你依然可以提前向两个系统使用密码验证一个远端系统。RakNet使用Two转载 2014-12-06 22:02:47 · 540 阅读 · 0 评论 -
RakNet(56)学习 -- EmailSender(邮件发送器)
EmailSender概览 通过C++发送邮件的简单类 EmailSender类,可以在EmailSender.h中找到该类,这个类是一个仅仅有一个函数Send(…)的简单类,这个函数用于使用一个mail服务器发送email。它被内在地用于CrashReporter类来为未被监控的服务器发送邮件。参考EmailSender.h文件,了解每一个参数的完整描述。转载 2014-12-06 22:05:55 · 1061 阅读 · 0 评论 -
RakNet(52)学习 -- TeamBalancer
TeamBalancer概览 请求和平衡团队客户端/服务器或端到端游戏 TeamBalancer插件用于在游戏会话中给每一个玩家赋予一个团队编号。玩家默认没有团队,通过调用RequestSpecificTeam()或RequestAnyTeam()方法来加入团队。 操作包括: SetTeamSizeLimits()翻译 2014-12-06 22:01:54 · 575 阅读 · 0 评论 -
RakNet(55)学习 -- Command Console Server(命令行控制台服务器)
命令行控制台服务器概述 使用控制台远程控制游戏服务器 有时当你不在特殊计算机之前时,命令行控制台控制服务器是非常有用的。由于服务器确定时会有用,这个主机与该服务器控制地不同的情况下就会有用了。或者或许你有许多服务器需要控制,你想要通过一个脚本控制这些服务器。ConsoleServer,CommandParserInterface,和TransportInterf转载 2014-12-06 22:04:54 · 730 阅读 · 0 评论 -
RakNet(57)学习 -- StringCompressor(字符串压缩器)
字符串压缩器(StringCompressor)概述 安全编码和解码字符串 StringCompressor类位于StringCompressor.h文件中,它可以以一种安全的方式编码和解码字符串,避免过度运算。 发送方: const char *str = "My string";stringCompr转载 2014-12-06 22:06:49 · 583 阅读 · 0 评论 -
RakNet(51)学习 -- SQLite3Plugin
SQLite3Plugin 概览 使用SQLite通过网络存储游戏或会话数据 游戏通常需要一个服务器存储会话信息,例如所有正在运行的游戏,或者在游戏中的所有玩家,或者两者都有。这个服务器称为主服务器,由商业服务提供,通常有很高的租用费用。然而,这些服务器的核心是仅仅提供了一个类似于如下的画的一个数据库表格。 先前的几转载 2014-12-06 21:59:41 · 567 阅读 · 0 评论 -
RakNet(15) -- BitStream
BitStream概述 BitStream类是在RakNet命名空间下的一个辅助类,用一个封装的动态数组来打包和解包bits。它具有如下的四个优势: 1. 动态创建数据报。 2. 数据压缩。 3. 写入Bits。 4. 数据字节序转换。 使用结构体打包数据,需要提前预定转载 2014-11-02 14:35:39 · 711 阅读 · 0 评论 -
RakNet学习(14) -- SystemAddress
系统地址(SystemAddress) SystemAddress是什么?SystemAddress是包含了网络上系统的二进制的IP地址和端口的结构体。结构体在RakNetTypes.h中定义。在一些情况下需要使用SystemAddress,例如: 1. 服务器从一个特殊的客户端获取一个消息,想要中继(转发)给所有的其他客户端。你需要在Send函数中指定转载 2014-11-02 14:34:38 · 504 阅读 · 0 评论 -
RakNet学习 (7) -- 编译设置
使用源码,静态库,或动态库? RakNet包含了源码,使用随包携带的工程文件也可以生成DLL和静态的lib,还有可以直接编译的例子。RakNet下载包中并没有预编译的DLLs或静态库——这主要是由于编译器之间的不兼容性。我们推荐直接使用源码,当然了,你也可以使用DLL或静态库工程生成你自己的DLL或静态库文件。 用于编译DLL/静态lib的工程,以及例子工程转载 2014-11-02 00:08:01 · 780 阅读 · 0 评论 -
RakNet学习 (6) -- 帮助手册
帮助手册 工程设置 在教程中,所有的图片和界面参考的是VS2005,微软版权。同等参数配置你的编译器。1. 创建Win32控制台工程,将它命名为ChatServer 2. 选择控制台应用程序,以及空工程。选择Windows应用程序也是可以的。 3.加入RakNet源文件到工程中。可以右键点击工程名字,选择Add,然后是Exit转载 2014-11-02 00:06:13 · 846 阅读 · 0 评论 -
RakNet学习(1)--RakNet
RakNet 一款免费的低代价的C++和C#游戏引擎库,允许程序员在程序中加入响应时间严格的网络应用。它大多用于游戏,但是独立于游戏应用程序,也即它并不与某一个游戏相关联,完全可以独立应用于网络程序。RakNet的设计实现了快速,易用,独立于应用,跨平台以及特色集.(关于feature set,没有太理解是什么意思) 1. 快速开始本节介绍如下的几个主题。1.1多人转载 2014-11-01 22:18:52 · 1126 阅读 · 0 评论 -
RakNet学习(36) -- Fully Connected 2
FullyConnectedMesh2插件 在自动选择一个长期运行系统时,生成一个完整的连接网络 在端到端的游戏中需要其中一个Peer充当主机,为系统创建唯一的游戏事件。例如,这个主机发送游戏结束通知或控制AI。FullyConnectedMesh2插件可以用于在连接之后自动决定主机。 概览: 1. 调用SetConnectO转载 2014-11-11 22:04:18 · 443 阅读 · 0 评论 -
RakNet学习(35) -- FileListTransfer
FileListTransfer概览 接收发送文件更加容易 FileListTransfer插件用于发送可以读取进FileList类的文件列表。它与DirectoryDeltaTransfer插件类似,它并不发送预先存在的文件的目录信息,也不是完成将文件写到disk的任务。它仅仅处理要发送文件的网络传输部分。 使用:转载 2014-11-11 22:02:46 · 603 阅读 · 0 评论 -
RakNet学习(34) -- Directory Delta Transfer
目录传输器概述 在目录之间自动发送不同文件的目录信息 如果有允许用户修改的内容(user-moddable),DirectoryDeltaTransfer.h就显得非常有用了。例如,如果每一个服务器有一个/skins 目录,那么你就可以运行这个插件将目录下载到客户端上。每一个没有特殊skin的客户端都会接收到这个目录信息。在下载过程中,可以通过user-supp转载 2014-11-11 22:01:01 · 459 阅读 · 0 评论 -
RakNet学习(32) -- Cloud Computing
云计算概览 通过服务器云实现客户端可访问的内存/事件 有时想要大量的没有相互连接的客户端,它们不需要相互知道对方的存在而共享内存或得到事件的通知。例如: 1. 高性能服务器浏览器 2. 游戏内百万用户的统计 3. 云计算 在云服务中的“云”意味着系统支持分布式服务器。任何的服务器可以转载 2014-11-10 22:35:25 · 505 阅读 · 0 评论