游戏编程
HoneyCat
只要开心~快乐就好~
不穿衣服晒太阳 晚上晒月亮
展开
-
超简单as3脚本解析器
ATA is atlantis's script 大概13年上半年做页游时候,ActionScript3不方便弄脚本,突发奇想自己写个脚本来跑,按照简单的C语言语法,看了下编译原理,手写递归下降,实现了一个很简单的解释器,懒了运行时没做栈执行,后来由于各种原因,也没用上,前几天忽然翻出来了,就当是看编译原理的一个简单作业.超简单as3脚本解析器下载...原创 2020-06-17 22:24:32 · 429 阅读 · 0 评论 -
protoc-gen-erlang简单调整
前2天改动了哈,结果今天试了哈还是有问题,加上之前的一共如下:1、自定义消息里面如果包含了其他自定义数据结构,就需要把依赖的消息定义放在前面。2、hrl重复包含的问题,要用宏定义解决。3、消息decode的时候用到其他消息的时候,用的impl要改成导出的函数。4、空消息的编码有点问题,回调函数没法生成,它是根据消息内字段来生成的。5、加上昨天的支持proto的import。原创 2012-05-07 23:33:49 · 1343 阅读 · 0 评论 -
erlang使用protobuff
项目在使用protobuff,感觉不错。打算用erlang写个测试工具,就找了哈erlang的protobuff插件。google官网上有不过感觉不方便,找到个proto-gen-erlang,还有一起的libprotobuf,原本是ubuntu上的,不过windows上用也没区别。大概记录下使用过程:1.编译protobuf的源码生成静态库,我使用的protobuf-2.4.1.原创 2012-05-06 21:42:26 · 2747 阅读 · 0 评论 -
联机游戏开发有感
这段时间弄网络游戏项目,拿java写后台,as3写前台。这几天联机调试好麻烦哦,又浪费时间。 今天小昌同学说:“弄个GM命令,自己写消息发给客户端,就可以不连服务器。”这种类型的东西估计很多公司都有用到,以前也想到过。我们这个项目的话最简单的就是直接在前端输入要发的消息,转到网络接收函数那。 实际上结合哈敏捷开发的话,就先定义前后端的通信协议,数据含义,构造测试数据,然后让前后台网络连原创 2011-12-29 21:16:07 · 1513 阅读 · 0 评论 -
Hudson/Jenkins使用的一点小问题
这两天弄持续集成,本打算用hudson的,不过后来用的jenkins,其实两个差不多.在生成C++项目的时候遇到点问题,VC2005配置了DX的头文件和库目录,但是用jenkins生成的时候找不到.在环境变量里面加INCLUDE和LIB的DX配置信息,结果还是认不到.又在jenk原创 2011-07-12 22:35:18 · 2918 阅读 · 10 评论 -
一次使用vld检测内存泄漏的修正过程
东西弄的差不多了,要看内存泄漏没的,本来一直用的vld不过有问题,看了文档才晓得是使用没对,不过它本身也有点不足,对有些全局变量好像检测不到.打算另外找工具后来翻啊翻,结果发现有1.9d版的一直没用.就用新的版本了.然后,项目里面还真有泄漏~后来找了黑久还是修复了,啊感觉真好~ 泄漏情况如下: 开始时报告P类中,new的C类实例泄漏.10多个地方-.-然后,跟踪了哈发现原创 2011-06-24 22:23:00 · 2139 阅读 · 1 评论 -
Fringe Search 路径搜索
<br />寻路方法很多都把A*当成标准,它确实很不错.Fringe Search边缘搜索比A*要好些,在内存使用和速度上都有改善.<br />这是参照了<游戏编程精粹7>中"超越A*: IDA*和边缘搜索",论文"Fringe Search: Beating A* at Pathfinding on Game Maps"和论文"Fringe Search vs. A* for NPC movement".<br />这是一开始实现的一个版本,还有些可以优化的地方.该算法具体细节的和A*和IDA*的比较的详原创 2011-05-17 23:36:00 · 1491 阅读 · 1 评论 -
贪吃蛇的AI——初步尝试
本来去年在写了贪吃蛇之后,就有想要写看AI来耍看的,后来又觉得写起麻烦没想好,没写.今天又想起了,写来耍看.以前想的要麻烦些,当然可以直接搜索,那个是"可以",但是不太"可行".今天上午想的就是求最优解的过程,不过要求最优解要麻烦些.先以当前状态求到最短路径(需要做一些判断避免咬到自己,和被自己困死),并在每次移动后,地图改变状态后,再以新状态去计算下一步.那个写起代码就多了,想简单点的几条规则就能达到那种效果.所以就只做当前最优选择,不考虑全局最优解,这样的智能效果应该还可以吧.那个局部最优解是否可以达到原创 2011-05-09 23:08:00 · 4099 阅读 · 3 评论 -
程序设计突然有感
<br />程序首先是正确性,其次是可读性、扩展性,最后才是效率问题。<br />软件的结构性和编码的简单性可能不能同时保障,某些原因会需要某些结构,这可能造成编码时候的复杂性。<br />设计时候使用自上而下的方式,更贴切,也是很按需求来。<br />开发时候感觉迭代的方式比较好。原创 2010-11-04 23:33:00 · 906 阅读 · 1 评论 -
设计和扩展
设计或许不是为了,以不变应万变。很多书都说不去修改既有代码,都是认为修改的理由不正当。要想想一个万全之策来对应以后变化的情况,非常困难,也许根本没有,除非能明确限定以后的需求不会变动。既然修改、完善、扩展是不可避免的,那设计的让改动一个地方时不牵扯其他地方,减低相互的依赖性、耦合性。也是让代码本身就能更好表达作者的意图,比如去除magic number等。其实这不是说设计不重要,反而是设计很重要,需要明确描述代码应该的关联和不应该的关联,这样在扩展和修改时就能控制在一个有效范围内。当然修改代码需要切实正当的原创 2010-12-01 23:39:00 · 955 阅读 · 2 评论 -
Unity3D 学习资料收集
一些unity3D 内容 Tutorialshttp://video.unity3d.com/channel/1649856/tutorials?p=1Unity3D坦克大战全中文视频教程 http://www.verycd.com/topics/2821937/ 手册Unity圣典 http://game.ceeger.com/原创 2012-05-28 11:45:28 · 1226 阅读 · 0 评论 -
flash 3D 学习资料收集
包含stage3D和flare3D的一些内容.多平台的air发布.flash开发相关人员. Stage3DHow Stage3D works http://www.adobe.com/cn/devnet/flashplayer/articles/how-stage3d-works.html顶点和片段着色器 http://www.adobe.com/cn/devnet/原创 2012-05-25 13:39:00 · 973 阅读 · 0 评论 -
Unity3D双面渲染
那个其实黑简单,只要把背面剔除关了就可以了,官网有标准shader的实现,然后改下就可以了。这里只改alpha测试的shader,如果要改alpha混合的shader类似。内建shader路径是Transparent/Cutout/VertexLit和Transparent/Cutout/Diffuse,两个里面在pass里面把Cull Off加起就可以了,然后shader的路径名要改下,原创 2012-08-23 09:24:33 · 21510 阅读 · 1 评论 -
网页游戏开发整理——模型篇
"I think, therefore I am" -Descartes, 1596-1650 在群里面经常加进来的人就会问,用的什么模型格式?awd格式导出有xxx问题怎么办?这也是我在用away3d的时候遇到的一个问题。那个时候从flare3d转过来,看到awd是away3d原创 2016-10-27 19:38:39 · 1341 阅读 · 0 评论 -
OpenSSL RSA AES Base64的一点注意事项
这两天弄加密和解密的内容,需要openssl(cocos2dx带有curl用到了openssl)的rsa和aes与java匹配,用base64测试,同时绑定到lua,遇到一些问题记录一下。 openssl和java对RSA的私钥和公钥的编码格式支持上面有些不同,在用的时候需要转换。openssl在读取公钥的时候有2个函数,分别对应了不同的文件格式,可以转换。java默认的RSA填充方式为原创 2015-04-03 00:42:44 · 3118 阅读 · 0 评论 -
网页游戏开发整理——开场篇
2012年圣诞节开始,页游开发,开始准备是一个2D游戏。那时候flash的stage3d已经出来了,当然要选支持硬件加速的引擎了。 于是乎就用了starling,在2013年1,2月之后,有个演示demo了。然后,就要换成2D场景3D人物了。 之前接触的公司用了flare3d,刚开始接触flare3d感觉还不错,就开始着手进行,改造。先就搭建一个2D地图,放一个原创 2014-11-24 21:55:39 · 1071 阅读 · 0 评论 -
网页游戏开发整理——场景篇
先说下背景,我们做的是2d场景加上3d人物,使用的away3d。黑多不愿意全3d的游戏或许会选择这样的混合搭配。方法还是比较多,这里简单记录下我之前想到的。 从7月开始,有很长一段时间没用as3了,有些记不清楚了,这里不会提及具体的away3d相关api和类,根据内容和概念自行选择相应实现。 先说说地图。 2d地图是按照斜45度角画的,要显示正常,需要用正交投原创 2014-11-27 01:14:37 · 2302 阅读 · 0 评论 -
开发中的自动化——按键精灵&AutoIt
按键精灵开始接触AutoIt是大概2010年左右原创 2014-06-05 21:59:30 · 10213 阅读 · 0 评论 -
AS3 ByteArray解压C++ zlib一点注意事项
AS3的ByteArray中有压缩函数compress和解压缩的函数uncompress,刚好对应C++的zlib普通方式compress和uncompress,当然compress2也是可以的。有点需要注意的事在C++ zlib压缩后的数据写文件后,文件体积比实际数据大了几字节,然后AS3中解压的时候就出错了。发现是在C++中写文件的时候fopen函数打开文件的时候用的"w"而不是"wb原创 2013-06-24 23:00:31 · 2846 阅读 · 0 评论 -
3ds max 导出插件——md5Exporter中篇
插件都写好有段时间了,一直想整理哈思路记录下的。先说哈anim插件,这个写的就比较快了,以前写过其他的动画导出的。md5anim中有个地方比较好的是,只需要与初始姿势不同的骨骼矩阵,这在按不同动画分文件导出的时候能减少很大一部分文件体积。计算需要导出的骨骼矩阵的时候,我原本是用的IGame的IGameControl和IGameKeyTab来计算误差值判断的,但是结果不好。不是很准确后来还是原创 2013-06-01 01:22:40 · 2774 阅读 · 0 评论 -
3ds max 导出插件——md5Exporter完结篇
今天还有思路来记录下,就干脆完结篇也一起出了,本来是想中篇是动画相关的,完结篇是其他附加功能完成后的,但时间又少,而且很多小功能也没多大必要来占地方。还是记录重要的东西吧。用md5有段时间了,再说点需要注意的地方和一些想法还没去做。一个是把mesh按照引用的骨骼数量限制来切分。在类似Away3D这样的AS3的3D引擎中,shader的寄存器数量限制很大,只有128个4维向量大小。除开材原创 2013-06-01 01:27:13 · 4515 阅读 · 7 评论 -
3ds max 导出插件——md5Exporter开场篇
今天把mesh导出成功了,趁热打铁记录哈。参照了“Jonathan "BeRSeRKeR" Garcia”的脚本,对比了导出数据,几乎完全一样。md5比较好的是mesh和anim的文件分开的,而且anim文件里面有每帧的包围盒。不过mesh文件里面材质方面的内容还是差黑多,还有mesh文件里面part也没名字之类的对换装啥的来说还是不够。毕竟它最初用途不是这方面。其实,模型格式还是很简单的原创 2013-04-13 02:53:21 · 4759 阅读 · 4 评论 -
Unity3D公告板
网上看到些Unity3D的公告板的方法,国内的有问题,国外的那个http://www.unifycommunity.com/wiki/index.php?title=CameraFacingBillboard还是对的,不过初始朝向方向要是+-Z轴。改了点可以设置面向法线,然后对面的默认朝向就没啥子要求了。 using UnityEngine;using System.Collect原创 2012-06-18 16:45:50 · 5781 阅读 · 0 评论 -
LittleGame——贪吃蛇
本来以前刚学C++时候说练手就写——贪吃蛇,结果后来一直都没有写,昨天拿irrlicht(鬼火)引擎来写了个3D显示的,不过运动方式还是2D,自己做的模型方块蛇,哈哈。原创 2010-08-28 20:36:00 · 3114 阅读 · 1 评论 -
3D地形编程——之地形射线查询(修正)
地形射线查询,也可以叫地形拾取(Terrain picking),在射线与地形碰撞检测中用到,计算射线与地形的交点,使用中点画线算法得到邻近顶点,取得三角形与射线计算相交,求交点。原创 2010-07-12 19:21:00 · 2143 阅读 · 2 评论 -
游戏内存管理——初探(上)
游戏中的内存管理,也可以叫做内存池,好像有些也叫对象池,其实方法不少。我就讲哈我自己做的点点经验和想法。 对应不同的类,使用模板类是肯定的。有些类可能不需要自动调用构造和析构,内存分配器就分出来了,就只负责分配对象的内存。方便起见,还是要有new和delete功能的对应方法,那就另外用一个模板类包装内存分配器,是外部使用的类,New函数取得对象内存后再调用构造函数,也要有ma原创 2010-05-10 18:58:00 · 1696 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(6)
到这里《Focus on 3D Terrain Programming》第5章内容就结束了,阅读完这个确实理解了不少。提供了一些不错的思路。但其中演示代码渲染是采用的单个三角形,这样效率很低了。我根据他的方法想改用顶点和索引缓冲,当然用DX9.域时(看图5.21)。在图中,块的近似区域的值用黑园点标记出来了。 图5.21 低级别块的许多顶点,近似高细节的块的值。翻译 2009-03-08 23:38:00 · 2013 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(5)
块的邻接结构的信息我们之前填充的,在块边缘的扇形被渲染时使用,展示如下: //if this fan is in the left row, we might need to//adjust its rendering to prevent cracksif( x==fHanlfSize ) fanNeighbor.m_bLeft= patchNeighbor.m_b翻译 2009-03-08 23:33:00 · 2233 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(4)
m_pPatches[iPatch].m_iLOD= 0; else if( m_pPatches[iPatch].m_fDistance m_pPatches[iPatch].m_iLOD= 1; else if( m_pPatches[iPatch].m_fDistancem_pPatches[iPatch].m_iLOD= 2; else if翻译 2009-03-08 23:29:00 · 9597 阅读 · 0 评论 -
毕业设计---之 初识 高低地形 Terrain (效果)
上次没注意图片的格式没能传上来,现在来传上来看下。^_^第一次弄地形的,全是最高细节的,还没使用任何加速算法,纹理也是静态根据高度而自己生成的。光照是静态的根据面片的斜度预先计算的。这次是把摄像机高度添加进去了,根据地形高低摄像机会上下移动。还加了个地形自己旋转时,摄像机跟随当前点地形高低而升降。 有纹理的效果,比较粗糙,没做高级处理,右边的线是我坐标轴的。原创 2009-03-08 23:07:00 · 3963 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(1)
HoneyCat游戏编程学习笔记---之3D地形编程原著《Focus on 3D Terrain Programming》翻译:邱涛 风轻炫舞 HoneyCatEmail:qiutaoleo@163.comBlog:http://blog.csdn.net/honeycat/QQ:241855668说明:英语水平有限,在自己学习时候同时记录下来的,希望能与大家技术交流互相学翻译 2009-03-08 22:48:00 · 4639 阅读 · 0 评论 -
毕业设计---之 初识 高低地形 Terrain
这个世界上没有偶然,有的只是必然.-----以前看的动漫里面的话语 不知不觉就大3了,就要开始最后的毕业设计了,课题选来选去没什么适合的,最终选了个,估计这个和我们设想的游戏比较接近吧. 首先,想做下高低地形,还好教材书上有例子,也就是.从学校回家的火车上看了下,前天心血来潮,写代码了,昨天晚上完成的差不多了,今天修改了下OK了. 完成的和书上内容一致,原创 2009-02-20 02:23:00 · 1208 阅读 · 0 评论 -
11月1日到11月14日的成果
11月初育碧开始校园招聘了,去参加了。费力八劲的写测试题。 一个方面是考虑的太多了,还有方面是以前的没积累整理好,结果很费时间。以及想要运用现有资源的时候,感觉反而缓慢了,因为需要去理解了再改造,还不如按自己的思路来构造来的快。 也就是用自己熟悉的方式来做,比用先进、现成,但不熟悉的东西来的快。 总的来说,一个感触就是积累要做好原创 2008-11-17 22:43:00 · 931 阅读 · 0 评论 -
继续A*演示程序
昨天下午到今天上午把演示程序完善了,按照今年育碧那个招聘测试的内容AI方面的,加了点在长时间没有找到路径时,跳出循环暂停一下执行系统消息,避免程序无响应,再继续搜索. 演示时有点奇怪的,发现在计算H的时候如果用的是曼哈顿方法而不是计算直线距离时,再斜线的代价上,应该比直线的高1倍,如果是用的直线方法计算H,斜线代价是直线的根号2倍. 如果用曼哈顿原创 2008-10-23 22:29:00 · 1184 阅读 · 0 评论 -
A*中的二叉堆
这里贴下二叉堆代码,包装了下vector,存储位置从0开始.可以参照在A*寻路中使用二叉堆>//CBinaryHeap.h #pragma once #include struct Point { int r,c;}; //地图行列 struct Node { int f,g,h; int r,c;原创 2008-10-22 11:21:00 · 1584 阅读 · 0 评论 -
A*与二叉堆结合
把昨天的A*用C++类封装了下,然后用open表用二叉堆,效率上比SORT快,参照的是在A*寻路中使用二叉堆>,效率快了不少,我用70*70的地图测试,昨天的sort时间609ms,今天的94ms. 我还添加了4个方向或者8方向,一般4方向现在没用了,效率低很多,还加了个在障碍物是否拐角绕开,效率影响不大.然后为了A*类能在后面中重复利用,在判断地图格子是否可通时原创 2008-10-22 10:55:00 · 2362 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(2)
图5.4 在Geomipmapping算法中,随着图块远离观看者,选择更低的细节级别。 图5.5 Geomipmapping白皮书中呈现的作为图块渲染的三角形排列方式。 这种排列可能看起来像是一个比较好的主意,并且它在很多地方使用。(警告:我会在这里稍微转变下话题。)如果你计划用顶点缓冲渲染块,三角形带将有明确的传送路线,这是我给你的建议。然而,因为实现顶点缓冲渲染翻译 2009-03-08 23:15:00 · 3739 阅读 · 0 评论 -
3D地形编程——之GeoMipMap基础(3)
图5.10为了防止与右边图块断裂,需要移除最右边列的扇面的右边顶点的图块。 实现Geomipmapping仅是稍微弱地CLOD你知道Geomipmapping基础背后的理论,但是现在我们需要实现它。这应该不会使你脑袋很头痛。难的部分已经完结了,象往常一样,我们将每一次谈论一步。拿一些咖啡,锁上你的门,放一些好的音乐,开始吧! 拼凑它因为Geomipmapping是翻译 2009-03-08 23:23:00 · 2893 阅读 · 0 评论 -
游戏AI引擎设计——设想
好久没写了,一直对AI比较感兴趣,最近看了些书对AI引擎的设计有点感觉和想法,不过现在只是有了一些想法,并没有实现和测试,先发出来免得以后搞忘了。 这里针对的AI是解决决策性问题,不包含具体执行问题。例如:A角色和角色B战斗,那么A的行为判断将由AI负责,AI决定是继续奋战到底,还是逃跑,引诱,等。行为执行过程使用更简单和成熟的计算方式,逃跑路线,躲避、追踪目标的具体原创 2010-04-28 14:40:00 · 5592 阅读 · 2 评论 -
图形层——纹理功能
好久没写了,昨天天气不错,今天周末,写2句。 啊,上次的场景编辑器里面的物件放置弄完了。要开始改造现在的引擎内容,按我们理所当然的想法进行了图形层的划分。我就开始做纹理功能部分,真是好多呀,需要使用的纹理类型不说,而且像素格式也是好多种,转换函数都好多。 参考其他资料和按我理所当然的想法,由于是封装DX的纹理接口,我就另外有一个图像类存2维像素图,一个纹理接口类和D原创 2009-10-17 10:33:00 · 1165 阅读 · 1 评论