
游戏开发
SuperKuku
在从事游戏开发的6年时间里面,涉及的内容包括运营平台、GM工具、MMORPG、FPS游戏。游戏都已经上线并且稳定运营中,单服务器的承载量在1万-5万之间。
展开
-
记录一下C++和C#中的字符串处理与编码格式的问题
下面是字符、字节、编码格式的基础知识:http://www.regexlab.com/zh/encoding.htm程序中涉及的会有几次的编码格式的转换:1. 代码文本,字符串是按我们文本设定的编码方式保存的2. 代码运行期间,字符串在内存中是以一种编码方式保存的3. 代码如果产生字符串输出,输出到问题的字符串不同的IO类会产生不同编码方式的保存,当然这个可以设置实现更改因为同一个字符串存在了3次原创 2015-09-02 10:55:44 · 2237 阅读 · 2 评论 -
Physx范围伤害检测
区域判断使用Overlap来实现。 Overlap有两种模式1.列出所有范围内的Shape2.判断范围内使用有Shape#include #include "NxPhysics.h"#include "ErrorStream.h"#include "Utilities.h"#include "SamplesVRDSettings.h"#include "FileLo原创 2013-01-08 20:08:47 · 1424 阅读 · 0 评论 -
Physx减少碰撞检测的优化
首先说明这里的碰撞检测(Collision Detection)包括的内容:1. 接触 Collision2. 触发 Trigger3. 射线检测 Raycast4. 范围检测 Overlap检测过程:首先Physx本身并不是每次都遍历所有2v2组合,判断是否需要判断。而是自动把Shape根据区域进行了划分。每个shape只会与自己附近的Shape进行碰撞检测。原创 2013-01-08 18:12:03 · 3601 阅读 · 0 评论 -
有关游戏属性与存储方式
游戏属性可以分成2类:静态属性、动态属性1.静态属性:该属性对于属性所属的对象是不会随着游戏进行而变化的2.动态属性:该属性在游戏的进行过程中会进行变化。动态属性又可以分成2个子属性。基础属性、衍生属性a.基础属性:就是该属性的具体数值不能通过其他属性计算而得b.衍生属性:该属性的具体数值通过其他属性就可以计算而得。衍生属性的存在基本上是为了游戏过程中的逻辑计算的便利。或者体现复杂原创 2013-01-23 11:16:01 · 1128 阅读 · 0 评论 -
NGUI与EZGUI比较
图片上传了就不清晰了,请参考资源吧………转载 2012-12-27 09:08:29 · 1155 阅读 · 0 评论 -
游戏分析参数解析
DAU:Day Active User. 日活跃用户记录每天有多少登陆游戏的用户WAU:Week Active User.周活跃用户记录一周有多少登陆游戏的用户MAU:Month Active User:月活跃用户记录一月有多少登陆游戏的用户PCU:Peek Concurrent User. 最高同时在原创 2012-11-05 13:55:43 · 806 阅读 · 0 评论 -
版本发布脚本
版本初步发布的脚本,用bat写的。主要涉及变量,for,set,findstrbat恶心的一点就是需要你注意空格。set var=xx 千万注意 var=xx中间不能有空格哦,不然赋值会失败for使用注意的一个就是变量延时脚本如下:@echo off:版本相关变量定义set VersionPath=..\SVersion.hset ReleaseBinPath=原创 2012-11-02 17:16:29 · 1074 阅读 · 0 评论 -
Physx使用的问题
1.提示NxUserAllocator::_malloc_dbg重声明,重定义了这种问题的发生是由于我们的工程使用了_CRTDBG_MAP_ALLOC用来进行内存溢出检测。该定义宏会导致在crtdbg.h中定义如下宏#define malloc(s)_malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)该宏会把malloc(size_原创 2012-10-24 16:11:46 · 954 阅读 · 0 评论 -
有关打洞方案
目前UDP打洞成功率达到了85%以上;但是TCP打洞得成功率仅仅65%左右,而且不稳定。不过该数据是我网上胡乱搜到的文章给出的数据,真实性不确认。不过现在很多游戏都已经使用UDP打洞技术并成功运行了。1.UDP打洞两种NAT:1.基本NAT: 只改变IP,不改变PORT2.NATP:IP和PORT都修改。方法:客户端A,B通过有公网IP的服务器S实现A,B通信。原创 2012-10-19 18:26:17 · 1784 阅读 · 0 评论 -
Luaplus的编译
这里是使用最新的luaplus代码 2011年12月的。发现已经差不多10个月没有更新了。下载地址:https://github.com/jjensen/luaplus51-all或者我使用地代码:之后下载生成sln需要的jamplus。可以下载: http://jamplus.org/attachments/download/169/jamplus-110621-bin.原创 2012-10-20 14:27:19 · 2548 阅读 · 0 评论 -
有关实时项目的网络通信方式的思考
等待解密原创 2012-10-11 12:37:25 · 700 阅读 · 0 评论 -
2012年热门mo game网络模块情况调查
游戏名称大厅连接方式游戏连接方式P2p支持 坦克世界UDPUDP否 街头篮球TCPUDP是 龙之谷TCPTCP+UDP否 洛奇英雄传TCPTCP+UDP是 地下城与勇士TCPTCP+UDP是 斗战神TCPTCP否原创 2012-10-09 14:13:09 · 1624 阅读 · 0 评论 -
Physx Unity3D同步模拟
对于同步,碰撞等效果需要引入物理引擎进行模拟的。就涉及到服务器和客户端同时模拟同步的问题。经过一定时间的测试,已经能够在客户端使用Unity3D 3.4.2服务器使用Phyxs 2.8.1的情况下,实现直线运动和碰撞上的同步。但是由于客户端和服务器帧率上存在的差别,所以对于碰撞,无法很好的同步,只能在碰撞后,服务器进行微调。现在罗列细节如下:1.主意物理帧率。Unity3D使用Ti原创 2012-09-17 10:33:09 · 5611 阅读 · 0 评论 -
Unity3D NGUI中文支持
中文显示支持NGUI添加制作字库,具体参考 http://1vr.cn/article.asp?id=607中文代码输入支持使用文本编辑器修改使用了中文的代码文件为utf8-bom格式。一定要加bom头。我使用的是notepad++ 格式->UTF8格式编码。不然输出是乱码。原创 2012-09-25 15:31:14 · 3668 阅读 · 0 评论 -
Unity3D NGUI ScrollView的学习
一.涉及的控件UIDraggablePanel: Scroll面板类。必须作为UIDragPanelContents的上级对象(不一定父对象)Scale: 对于x,y,z方向的拖动效果scale。如果不要y,z拖动,则设置该两属性为0Drag Effect: 内容点击拖动特效。Monentum:滚动操作结束后的缓冲滑动效果 Sprint:拖动到头拉过头弹回的弹簧效果。Horiz原创 2012-09-14 18:10:12 · 7838 阅读 · 0 评论 -
Physx Trigger
Physx Trigger1. Trigger启用启用Trigger必须要设置一个Trigger属性的Shape.设置了Trigger属性,就没有碰撞属性了2. DynamicActor注意由于Trigger Shape无法计算mass.所以如果只有单个Shape构成的动态Actor需要指定mass和inertia否则生成Actor会报错.NxActor::chec原创 2013-01-09 16:20:59 · 1246 阅读 · 0 评论 -
移动开发工具、引擎、资源列表
2012的八个开发工具,无需代码知识http://www.youkuaiyun.com/article/2012-12-17/2812912-top-mobile-dev-tools2012的16个跨平台引擎http://www.youkuaiyun.com/article/2012-12-17/2812927-multi-dev-engine/1Love2d: 一个window、Linu原创 2012-12-19 15:24:00 · 697 阅读 · 0 评论 -
Unity3d脚本中文支持
打开\Unity\Editor\Data\Resources\ScriptTemplates,看到了几个文件。这几个文件就是Unity生成对应的脚本时copy的文件。这些文件都使用了ASCI的编码方式,导致了对中文的不支持。把这几个文件都改成Unicode Bom编码方式存储,以后生成的新的脚本就都可以中文注释了。修改编码方式可以使用notepad++ 格式->转为UTF8编码格式,然转载 2013-01-25 20:59:01 · 1555 阅读 · 0 评论 -
有关UDP打洞Session保持时间
最近游戏上线,发现了很奇怪的事情。最后确认是UDP映射保持时间的问题,UDP映射保持时间有一部分设备远比想象的短。经测试差不多15-20s左右,映射就被重置了。可以看到34s, 该客户端的映射就已经重置了。不过通过玩家反馈以及客户端日志对比,不少玩家20s,21s的时间间隔,映射就已经被重置了。目前实际最短时间设置不清楚。不过据说华为的一部分设备默认时间是20s,应该是业界最短时间了。原创 2014-11-27 21:43:06 · 4826 阅读 · 0 评论 -
有关服务器协议设计的总结
有关服务器协议设计的总结下面内容都是经验教训,与大家共勉。1. TCP、UDP对比一下吧a) TCP优点 i. 按字节流保续 ii. 只要连接在,保证到达 iii.原创 2014-03-04 21:36:17 · 1528 阅读 · 0 评论 -
IOCP接收性能测试。瓶颈或者问题?
环境物理机 * 7:1台作为服务器,6台作为客户端 CPU:E5405 2.0GHz4*2 Mem:16G NetworkCard:1000M*2系统: Windows2008 Server R2测试方式1. DOETest工程release版编译测试服务器。2. DOECl原创 2014-02-26 19:09:00 · 1676 阅读 · 0 评论 -
NP使用经验——中国区慎用
1. Np中国没有什么技术能力,都是支持团队,他们没有积极解决问题的意愿,能力也有限,反馈速度也较慢。例如我们这边发现有个客户端问题玩家进不了游戏,问np是不是np的问题,他们会查一下说有这个问题,后面又发现其他问题,问一下,说确实也有这个问题也无法解决,如此往复。 2. windows升级后,NP一定会禁止登陆发114报错,这个是np遗留问题,硬伤,无法解决转载 2013-12-17 14:09:40 · 1831 阅读 · 0 评论 -
vs2010有关Release版本dump内变量值显示错误问题的解决
首先vs2010版本存在鼠标在变量上没有显示Tips, watch里面输入变量名显示无法找到该变量的问题。这是一个Bug,需要打SP1补丁。再次验证了MS的东西,没有出SP1是无法正常用的理论。除此之外,还是存在部分变量无法显示,this指针显示内容错误,显示的局部变量信息错误等问题。这个问题时Og优化导致的。使用O2优化的时候其实是进行了8个优化/Og/Oi/Ot/Oy/Ob原创 2013-09-11 20:30:54 · 1646 阅读 · 0 评论 -
数据库相关
数据库性能优化1.主键2.索引3.减少行数 ———— 二进制流4.列拆分5.行拆分数据库操作流程思考游戏的数据存储按照对象分成两部分。玩家数据和服务器数据。游戏的数据存储按照存储写操作方式分成两种。立即存储和缓存定时存储。对于交易相关数据库流程存在两种方案1. 基本功能独立修改方案对于通用交易货币制作基本流程,所以其他流程原创 2013-08-22 14:31:39 · 768 阅读 · 0 评论 -
游戏的登陆和离线流程思考
1.登陆流程a.LGW connect tokenverify versionverifyb.LGW->Cluster Login1b.Cluster->GW Occupyc.GW->Cluster Occupy Ackd.Cluster->LGW GWOccupyNtfe.LGW->Client GWOccupyNtf MD5Ntff.LGW Disconnect原创 2013-08-01 16:59:51 · 1070 阅读 · 0 评论 -
有关服务器属性系统的思考
脑袋有点凌乱,需要整理有关游戏属性与存储方式游戏属性可以分成2类:静态属性、动态属性1.静态属性:该属性对于属性所属的对象是不会随着游戏进行而变化的2.动态属性:该属性在游戏的进行过程中会进行变化。动态属性又可以分成2个子属性。基础属性、衍生属性a.基础属性:就是该属性的具体数值不能通过其他属性计算而得b.衍生属性:该属性的具体数值通过其他属性就可以计算而得原创 2013-07-24 21:43:28 · 888 阅读 · 0 评论 -
IOCP系统Bug
对IOCP对象进行GuidDisconnectEx。很小的概率会导致没有IOCP返回。具体原因还不清楚,已经排除没有进行适当IOCP的问题。我们把其成为僵尸问题。目前的解决方案是记录连接对象的GuidDisconnectEx调用次数,如果超过4次,就直接进行Closesocket操作。原创 2013-07-30 11:08:53 · 862 阅读 · 0 评论 -
SVN操作规范
1.目录branches 分支开发使用。目前还没有tags 目前没用trunk 主干开发使用,目前开发使用的目录Design 目前策划案所在路径Document 日报、排期所在目录Release 客户端版本所在目录ServerReleaseForClient 服务器版本发布路径CodeDev 目前主干代码所在路径Client 客户端代码所在目录Common原创 2013-02-22 09:41:45 · 836 阅读 · 0 评论 -
再议成就系统框架设计
根据http://blog.youkuaiyun.com/heartrude/article/details/8523570的设计,其实还有几点可以优化1.Group组的Buff是靠严格的配置的偏移量计算出来的,这个太不可控了。Buff可能出在无法检查的策划小错误上2.如果已经有N种类型的成就,而有一个新的需求,其事件是已有的几种成就组事件的组合,则需要产生一种新的成就组,使用新的成就Bu原创 2013-01-21 13:18:49 · 1786 阅读 · 0 评论 -
Buff系统框架设计
Buff的配置文件BufType: 1: 精神类Buf 2: 物理类Buf 3.元素类Buf 4.其他类Buf 5.被动类BufBufSubType: 1000-1999 精神子类 2000-2999.物理子类 3000-3999.元素子类 4000-4999.其他子类 5000-5999.被动子类。所以子类可以唯一标识一个Buff的类别 OppGroupId: 表明该Grou原创 2013-01-22 16:29:53 · 5099 阅读 · 0 评论 -
成就系统框架设计
成就系统配置成就参数操作类型:1位 8位 16位 32位AchivementGroup:同一种成就组成一组,比如杀死3个敌人,杀死10个敌人Param1CheckType: 0:忽略 1:= 2:> 3:= 5:ModifyType:0:忽略 1:8位加 2:16位加 3:32位加 4:位设置 5:8位设置 6:16位设置 7:32位设置UseEventParam: 0:使用M原创 2013-01-21 09:44:43 · 5240 阅读 · 0 评论 -
Physx线程调研
在服务器运行过程中,发现Physx线程竟然增加到了8个。非常奇怪。然后我对Physx的线程进行了一次调研,以了解这些线程的功能和这些线程是否可控。1.Physx文档中涉及的线程有3种a.Simulator线程。如果设置了NX_SF_SIMULATE_SEPARATE_THREAD会使得每个sence在simulator和fetchresult之间开启一个线程进行物理模拟。我们称之为原创 2013-01-18 10:32:32 · 1101 阅读 · 0 评论 -
Unity3D NGUI 物品系统
InvGameItem 游戏物品mBaseItem: InvBaseItemQuality: 物品品质InvBaseItem 物品描述类Slot: 物品的部位stats: InvStat物品属性链表attachment: 物品对应的prefabiconAtlas: 物品使用的图集iconName: 物品使用图集中的具体图片名I原创 2012-09-14 12:12:57 · 3796 阅读 · 0 评论 -
Unity3D WebPlayer 修改载入界面
打开Build出来的WebPlayer.html在 中间添加一下内容var params = { backgroundcolor: "A0A0A0", bordercolor: "000000", textcolor: "FFFFFF", logoimage: "MyLogo.png", progressb原创 2012-09-15 09:20:25 · 2899 阅读 · 0 评论 -
游戏服务器脚本功能总结
目前游戏使用脚本的内容如下:1.副本:独立存在,只允许目前几个玩家访问的空间。这个空间可能存在多个地图。包含如下的固定流程:副本初始化Initialize;初始化后可能存在玩家进入PlayerEnter Tick;之后是副本正常运行的Tick; 玩家退出,副本销毁。OnInitialize 用来加载动态的NPC,宝箱。因为该内容是一个逻辑流程,所以不用配置而用脚本。GetEntryPo原创 2012-08-09 17:31:53 · 2262 阅读 · 0 评论 -
应答式TCP服务器的幽灵连接
产生方式:服务器提供应答式服务,没有应用层心跳。客户端连接后,客户段产生异常(异常关机,异常断网)。 服务器的客户端连接状态仍然是Enstablish状态。这个主要是因为TCP代码的Keep alive周期很长导致。所以这种应答式TCP服务器,最好提供心跳。不然会很快发现服务器都是幽灵连接,导致资源耗尽。原创 2012-04-24 13:43:10 · 1328 阅读 · 0 评论 -
cocos2d-x的action
Action可以说是cocos2d一个精华设计。下面从整体上说明一下我的学习心得。在cocos2d-x中,node的很多变化都可以作为action(指令)来执行。action可以帮助我们控制执行时间,执行过程调整以及执行完毕通知。从而通过异步完整的封闭了执行过程,通过通知又可以提供同步手段。很好使用。所有的Action类图如下:从类图上可以看出,Action主要是3大块,CCF原创 2012-04-09 07:57:54 · 1582 阅读 · 0 评论 -
Cocos2d-x坐标系
cocos2d支持以下几种坐标系:1.屏幕坐标系 原点在左上角,X轴向右,Y轴向下。CCTouch对象中的坐标2.GL坐标系 原点在左下角,X轴向右,Y轴向上。如果地图固定不移动,就是和本地坐标一样的。3.世界坐标系 指相对于整个屏幕的坐标系,原点在左下角,X轴向右,Y轴向上。4.本地坐标系 相对于父对象的坐标,原点在左下角,X轴向右,Y轴向上。比如原创 2012-04-02 22:55:16 · 2430 阅读 · 0 评论 -
IOS开发基本概念
分辨率:iphone、iPod:320*480ipad:1024*768兼容性:IOS下是snprintf、Window下是_snprintf这个需要注意一下原创 2012-04-03 20:31:13 · 1021 阅读 · 0 评论 -
TMX地图格式
TMX Map FormatPage HistoryThe TMX (Tile Map XML) map format used by Tiled is a flexible way to describe a tile based map. It can describe maps with any tile size, any amount of l翻译 2012-04-04 13:16:37 · 5234 阅读 · 1 评论