cp的小屋

not yet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2017年3月23日

摘要: 从婴儿学走路说起。经历过婴儿学走路的父母都知道婴儿学走路的时候就是让他不停地走,有时摔倒,有时走得稳些。我们不会指导他该怎么走,甚至不会和他说话,反正他也听不懂。就这样走着走着宝宝突然会走路了。这像极了人工神经网络的学习过程,大量的训练数据,大量试错,自动提取模式。当宝宝长大到4、5岁开始学自行车的 阅读全文
posted @ 2017-03-23 15:40 cproom 阅读(334) 评论(0) 推荐(0) 编辑

2016年3月4日

摘要: 相信记忆魔方公式对大部分人来说不是一件轻松的事情。魔方公式一般表示为一串字母和符号的组合,以我所学的GAN356魔方说明书上的基础公式为例,需要记住7个公式,分别是: 公式4:(U R U’ R’ U’) (F’ U F) 公式5:(R' F’ R U) (R U’ R’ F) 公式6:F(R U 阅读全文
posted @ 2016-03-04 16:25 cproom 阅读(10545) 评论(1) 推荐(0) 编辑

2008年11月21日

摘要: 用Nvidia的PerfHud剖析Direct3D程序有两个关键步骤,一是找到CreateDevice()的调用位置,二是修改传入CreateDevice()的前两个参数使之满足PerfHud的要求,在一般的系统上第一个参数传1,第二个参数传2,也可以将应用程序原来传入的前两个参数分别加一。定位CreateDevice()有两种方式,一是动态跟踪,二是静态分析。动态跟踪就是用调试器起动应用程序,在D3d9.dll中的CreateDevice()函数处下断点。动态跟踪具有速度快、定位准确的特点,是首选。但很多时候网络游戏的客户端都是通过另一个程序起动的(比如自动更新程序),无法由调试器直接起动,也就无法动态跟踪,这时可以考虑静态分析的方法,后面本文会有详细介绍。 阅读全文
posted @ 2008-11-21 22:23 cproom 阅读(5858) 评论(18) 推荐(0) 编辑

2008年10月30日

摘要: 但是随着我们对游戏表现力要求的提高,我们不再满足于仅仅按设定好的参数回放特效效果,而是希望特效表现与游戏逻辑挂钩,使某些特效元素的某些参数随着游戏逻辑动态变化。比如我们有一个发动机尾烟的特效,其中有一个白烟粒子系统,一个黑烟粒子系统和一个公告板。我们希望让这个特效的表现对应于一个逻辑变量“强度”,它是一个浮点数,用fPower来表示。我们希望随着强度不同白烟粒子系统的发射速度会变化,黑烟粒子系统的大小和生命期会变化,公告板的大小和透明度会变化。面对这样的需求最直接能想到的解决方案就是提供一种可以遍历特效内部所有元素的方法,遍历过程中根据元素的不同类型反回不同的接口,然后调用这些接口修改不同元素的不同参数。遗憾的是这个方法很差劲,怎么想都不够好,举出两个最致命的缺点,一是要开放大量设置元素内部状态的接口函数,二是根据fPower设置特效元素参数的代码必须非常了解这个特效的内部结构,它要知道那个粒子系统是白烟,哪个是黑烟,哪个是公告板,哪些元素是不相干的。 阅读全文
posted @ 2008-10-30 15:26 cproom 阅读(2145) 评论(7) 推荐(0) 编辑

2008年9月4日

摘要: 3D游戏中的骨骼动画一般都是由美术在3DMAX这样的软件中做好的,在游戏中直接播放,游戏逻辑除了播放速度外很难施加更多的控制。但是我们在一些游戏中看到人物的身体部位可以根据玩家的选择改变大小、粗细、长短,在一些游戏中NPC可以将头转向走过身边的玩家角色,目光始终注视着玩家,头也随着玩家角色的移动而转动。在《古墓丽影》中,劳拉拿着枪的手会自动指向目标,并跟随目标的移动而转动。这些功能的实现并不需要复杂的逆向动力学,只要通过游戏逻辑对角色局部骨骼的状态施加一些影响,进行一些修改就行了。 阅读全文
posted @ 2008-09-04 21:32 cproom 阅读(3475) 评论(6) 推荐(0) 编辑

2008年4月21日

摘要: 在游戏聊天文本框中支持类似QQ的表情动画以及各种转义符号已经成为网络游戏的必然选择,表情动画大家都很熟悉,转义符号是指在文本中嵌入一些特殊字符以表示文本属性或者一些特定的输出控制。其实表情动画也是通过转义符号表示的,只不过你不必直接输入这些转义字符,而是通过在表情列表框中选择表情,系统自动帮你输入这些符号。举例来说,用#R、#G、#B表示后面的文字分别以红、绿、蓝颜色显示,#b表示后面的文字闪烁,#n表示把后面的文字属性恢复到默认值,#加三个数字表示特定的表情符号,如#001表示一号表情,比如是一个笑脸。 阅读全文
posted @ 2008-04-21 22:46 cproom 阅读(3569) 评论(7) 推荐(0) 编辑

2007年12月8日

摘要: 说到界面系统,在windows平台上用c++编程的人多少都会知道MFC,我也曾仿照MFC的设计实现过一款单机游戏的界面系统。然而现在多数人认为MFC是一个设计不佳,复杂且难于使用的系统。使用MFC编程需要很长的学习过程,界面逻辑被分散到各个窗口类中,为了实现一个复杂界面,你不得不为界面中几乎每一个窗口创建派生类,并将界面逻辑嵌入到这些窗口类中。整个界面形成一个父窗口、子窗口、控件等对象组成的树状结构,许多消息在这个树状结构中通过广播的方式找到它的处理函数。要操纵子窗口或者控件完成一些事情不得不先找到包含它们的父窗口,再通过父窗口函数或者成员变量来访问子窗口或控件。这些特点迫使界面逻辑要了解界面的组织结构,甚至依赖于这个组织结构,难以实现逻辑和界面结构、布局的分离。 游戏界面有其自身的特点,比如游戏的界面往往比较简单,不需要太复杂的结构和布局,能够满足特定游戏的需求就行,不会象MFC那样被用来实现各种各样的应用程序,面对大量的不同需求,甚至要实现不可预期的需求,这就要求MFC这样的系统具有极大的灵活性,和可定制性。另外游戏界面系统往往用c++语言实现,而 阅读全文
posted @ 2007-12-08 23:41 cproom 阅读(3385) 评论(4) 推荐(0) 编辑

2007年11月26日

摘要: 随着多核CPU的普及,多线程设计对3D引擎已经变得越来越重要,很难想象一两年后推出的3D引擎还在使用单线程方式。但是多线程的引入使引擎变得更加复杂,不良的设计带来的性能提升非常有限,甚至在单核环境下还会出现明显的性能下降。所以找到一种清晰、简洁、高效的设计方式就变得至关重要。目前多线程3D引擎设计的资料还很少,多数只讨论一些原则性的概念,缺少具体实例的分析。 本文提出一种具体的3D引擎多线程实现方案,这种方案只是初步实现,还缺乏大量的测试和长期运行的考验,但其中的思路也许可以给大家提供一些参考。目前流行的线程功能划分一般会把资源加载和图像渲染分别独立到一个线程中,这也是非常直观的划分方式,本文也不例外,也是采用这种线程功能的划分。 阅读全文
posted @ 2007-11-26 11:41 cproom 阅读(5459) 评论(9) 推荐(0) 编辑

2007年9月14日

摘要: 场景图一直被认为是适合游戏的通用场景管理算法,仿佛没实现过场景图就不算写过引擎。但是经过思 考和分析,我觉得场景图并不适合作为一种通用的场景组织方式,在下面我会说明理由,并提出一种替代的 适合目前mmorpg网游的场景管理方式。如果大家有什么不同看法可以和我讨论。 阅读全文
posted @ 2007-09-14 20:39 cproom 阅读(4597) 评论(4) 推荐(0) 编辑

2007年7月16日

摘要: 在上一篇中提到了通过对大规模草地的快速排序实现理想草地绘制效果的方法,今天在浏览www.gamedev.net论坛的时候意外发现了一种方法,可以避免对草地、树林这样通过alpha test方式绘制的对象进行排序又能达到接近排序效果的小技巧。这种方法需要两个pass绘制,消耗一些额外的像素填充率,但效果非常不错。在你无法对大量植被进行快速排序或者象交叉面片这种无法排序的情况不妨考虑一下这种方法。现在你可以在排序、不排序的普通alpha test绘制和这种两pass alpha test绘制之间做出明智选择了。 阅读全文
posted @ 2007-07-16 16:57 cproom 阅读(2383) 评论(5) 推荐(0) 编辑