
游戏开发
文章平均质量分 60
Kevin_qing
这个作者很懒,什么都没留下…
展开
-
构造使用类C语言的脚本引擎(1)脚本语法定义
构造使用类C语言的脚本引擎(1)作者 :kevin_qing转贴请注明需求:实现npc逻辑,与游戏(服务器)交互。例如与商人NPC对话打开买卖物品窗口等设计:参考传奇2服务器端脚本后(实现的很烂),定义脚本规则如下:1.采用类C语言,因为熟悉C的人很多,而且C语法较严谨,且使用方便2.数据类型只支持int和const string(用于外部函数的参数或返回值).变量只能为int且不需要显示声明.3原创 2005-06-24 10:42:00 · 3093 阅读 · 1 评论 -
从深度缓冲里重建位置信息
参考资料http://blog.csdn.net/shadow_gz/article/details/6394827http://www.klayge.org/wiki/index.php?title=%E5%BB%B6%E8%BF%9F%E6%B8%B2%E6%9F%93 从project space转换到view space下 需要的东西,1 . linear z=原创 2012-08-17 20:24:54 · 1415 阅读 · 1 评论 -
遇到的一个诡异bug
碰撞检测使用的射线与线段求交点。使用中发现偶尔会出现穿透的情况,找了很久终于找到原因。 其原因在于求出的交点坐标,由于浮点运算的不精确性,会有小数点后5位的微小偏移。造成交点坐标与水平或垂直的检测线段判断出错(认为交点不在线段上),从而穿透阻挡物。 修改点在直线上的判断条件解决问题原创 2012-06-11 15:15:04 · 748 阅读 · 0 评论 -
算法[草稿]
新算法如下。1.投影圆心至直线2.计算投影点是否在l1,l2之间,在的话用点到直线距离==r计算碰撞点,时间3.如果投影点不在l1/l2之间,计算其与l1,l2距离。取d=距离较小的一个,判断d和r大小。4.如果d算法思路。圆围绕线段移动一圈,圆心轨迹是一个胶囊体。因此实际问题等同于点和胶囊相交判断。(2个圆+一个方块)此算法可对任意形状多边形作碰撞检测原创 2012-03-11 23:45:02 · 697 阅读 · 0 评论 -
实时多人在线游戏研究(同步和延迟)
本文讨论实时多人在线游戏的服务器和客户端技术。实时多人在线游戏主要包括2类,FPS(quake系列,UT系列,CF等),ACT(DNF,龙之谷这类) 其共同特点是需要用户操作尽快的得到体现。并且所有客户端的结果要一致。同一世界玩家数量较少(这是有原因的,下面讨论),有较真实的物理效果模拟。 通用的C/S做法:A. 客户端采样输入数据->Server处理数据->分发结果。原创 2012-03-10 15:54:27 · 3195 阅读 · 0 评论 -
栈式虚拟机中间代码编译为x86指令
栈式虚拟机比较好实现,同时指令也较为简单,类似risc 假设虚拟机指令push i ;//立即数入栈add //栈里面最近2元素相加,pop 2后,结果压栈call //调用栈顶id指向的函数 //脚本rotate(0,0,20+time())原创 2011-08-24 15:30:54 · 1439 阅读 · 1 评论 -
d3d9中绘制2d元素时提高效率
比如绘制一个rect,通常方法vertexbuffer->lock();fillRectVertex();vertexbuffer->unlock();setTexture();drawprimitive(); 绘制多个2d元素时效率很低。其原因是lo原创 2011-08-25 13:25:53 · 2374 阅读 · 0 评论 -
d3d transform matrix 和 vs 的一点优化
1.顶点坐标变换按照 v.pos*world*view*proj2.光照可以在model,world或者view space计算,需把顶点坐标和light pos变换到同一坐标系下,再计算光照3.env map和光照类似,变换的是摄像机位置。4.软件计算的话,最好变换原创 2011-09-09 20:55:27 · 778 阅读 · 0 评论 -
魔兽争霸地貌拼接方式
先看图片http://hi.csdn.net/attachment/201109/7/979141_1315404194Eh6m.jpg 每个块的图片由4周围4个脚的地貌计算得出。算法如下。1.地貌编号0-5,低编码的可以被高编码的覆盖。2.每种地形图片中原创 2011-09-07 22:17:48 · 1257 阅读 · 0 评论 -
eXCHANGEkEY
S->生成随机密匙 SK CKC->生成非对称密匙CKa&&CKbC :[CKa] -> SS :[encrypto SK use CKa]->CC :[dectypto SK use CKb]C :[encrypto msg use CK]->SS :[encrypto msg use SK]->C原创 2005-12-19 00:18:00 · 1434 阅读 · 0 评论 -
构造使用类C语言的脚本引擎(5)语法检查,生成语法树,代码生成。
构造使用类C语言的脚本引擎(5)作者 :kevin_qing转贴请注明语法检查,常量合并和生成语法树是在reduce规约函数中实现语法树节点定义struct GTreeNode{uint32_t type; uint32_t value;};struct GTreeNode1:public GTreeNode{GTreeNode* child1;};struct GTreeNode2:public原创 2005-06-24 13:14:00 · 3532 阅读 · 0 评论 -
构造使用类C语言的脚本引擎(4)语法分析
构造使用类C语言的脚本引擎(4)作者 :kevin_qing转贴请注明同上一章一样,语法分析部分也不准备使用yacc直接生成代码,而是只使用yacc的生成的分析表。BNF:%token ID IF ELSE SWITCH GOTO RETURN NUMBER STRING MAIN%token ADD_OP MUL_OP ASSIGN_OP CMP_OP LOGIC_OP1 LOGIC_OP2 %原创 2005-06-24 12:36:00 · 2418 阅读 · 0 评论 -
构造使用类C语言的脚本引擎(3)词法分析
构造使用类C语言的脚本引擎(3)作者 :kevin_qing转贴请注明现在回到编译器上的构造上。编译分为4个步骤1.预处理在这里我只是替换掉源文件的字符/r->/n/0->0x20 (空格)并且在源文件最后加上/02.词法分析.词法分析主要是将输入流分割为一个个的单词,在这里我并未使用flex而是自己实现。(看到正则表达式就晕,更别说叫我写了,而且注视的正则也不好写,还不如自己做比原创 2005-06-24 11:47:00 · 2445 阅读 · 0 评论 -
构造使用类C语言的脚本引擎(2)实现虚拟机和虚拟机调试
构造使用类C语言的脚本引擎(2)作者 :kevin_qing转贴请注明考虑到脚本编译器部分可以单独作为一个进程实现,并且编译器需要虚拟机对其结果进行调试,目前先从最底层的虚拟机部分开始开发。1.虚拟机结构.考虑到目前不支持内部函数定义,采用寄存器方式,以后扩充栈也较为方便变量寄存器REG[256] 其中REG[0]为外部call时存放返回值指令寄存器IP;比较寄存器CFlag;代码段,数据段均为虚原创 2005-06-24 11:30:00 · 3203 阅读 · 3 评论