自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++ 资源管理

c++的资源管理的简单解决方案:根据依赖关系管理资源。在分层架构中,底层的资源被上层使用,当上层使用完成时,底层就可以释放资源了。c++中的shared智能指针也是根据依赖关系来管理资源的一个例子。所以,结构的重要性再次得到证明。采用清晰的分层结构后,资源自然得到合理的管理。

2012-08-20 14:02:30 259

原创 读mugen有感

最近看openmugen,有很多心得:1. 它将所有的structure放到一个structs.h的文件里,相对于c++的纯粹用类来表达,感觉整个工程的结构一下清晰很多,没有了乱七八糟的函数,类型声明,宏,模板,清爽好多。2. 没有过多使用c++的高级特性。连new操作都没有重载。一个明显的好处是,不用分心到这些花俏的功能上。3. mugen官方声明为什么没有gui编辑器是为了让开发人

2012-02-24 10:22:42 791

原创 小议设计模式

1. 设计模式的团队里面的人,会创建一个单件多次2. 设计模式团队里面的人,会理解和熟练使用各种复杂的模式我想表达的意思是,如果你的团队里面也是这中情况,你应该考虑的不是怎么让语言跟安全(加更多的type check)而是给那些经验少的同事多培训一下。有句话说的好,有好工具的傻瓜

2011-07-27 10:30:44 314

原创 mir2 client: review

- 所有的图片类资源由一个类管理,包括精灵,动画。gameplay用id来索引资源(无指针,维护简单)- 游戏中的所有网络消息由一个类发送:sendLogin,sendLogout,sendSkill,sendChat。。。(facade,紧凑)- 游戏中的magic类实际上是所有magic的工厂(facade,结构紧凑)- 大量的public变量(自己养成习惯只去读不去写就好)- 大量使用固定长度的基本数组做容器(高效简单)- 极少使用继承、多态、接口(结构简单)- 网络包手动分发

2010-12-28 11:18:00 407

原创 make your life easy

<br />8:28 PM 12/20/2010<br /><br />避免过多与c++类型系统纠缠。。。<br />程序员都很忙,有很多代码要写。。。<br />同理,尽量少于类,继承,封装,多态,模板,宏,打交道。。。

2010-12-20 20:36:00 349

原创 编码优先级列表

<br />== 编码优先级列表 ==<br />1 可维护性 / 明晰性<br />2 可测试性<br />3 全局效率<br />4 正确性<br />5 可重用性<br />6 一致性<br />7 局部效率<br /><br />(未列:大小、个人表达方式、个人方便性)<br />(以上是对大部分情况,特殊情况例外)<br /><br />- 1 > 3 ?<br />正确的代码如果不具维护性,不如重写,这样的例子太多了<br />- 2 > 3 ?<

2010-07-26 11:02:00 640

原创 编码审查表

<br />来自《write clean code》<br />编码审查表:<br /><br />一般问题<br />── 你是否为程序建立了DEBUG版本?<br />── 你是否将发现的错误及时改正了?<br />─一 你是否坚持彻底测试代码.即使耽误了进度也在所不惜?<br />── 你是否依靠测试组为你测试代码?<br />─一 你是否知道编码的优先顺序?<br />─一 你的编译程序是否有可选的各种警告? <br /><br />关于将更改归并到主程序<br

2010-07-20 10:26:00 335

原创 双分发示例

<br />/** 双分发示例。 我们有各种各样的输入事件:鼠标、键盘、手柄...我们需要在客户端可以自动地调用对应的事件处理函数,而不需要对输入事件进行if/else分别处理,不管是客户端还是系统内,因为那样不具扩展性,那么我们怎么将这些具体的事件传给具体的处理器呢?双分发即可以满足这样的需求。 但是它的缺点很明显:事件处理器必须具有接受所有事件的接口,这样就使得扩展事件不封闭,因为你必须修改事件处理器的接口;事件具有多个输入点,这可能会带来维护的问题;暴露过多的接口的做法值得

2010-07-15 20:57:00 343

原创 2009-6-16,7/21/2008

<br />8:43 AM 7/21/2008<br />关于学习<br />    要学习某个优点,首先看看如果你具备这个优点你该怎么做,然后在思想上模拟着做一<br />    遍,以后也经常保持生活和思想上都去这样做,那么你就很容易的学会了它。因为不论<br />    在思想上模拟着做,还是在实际生活中去中,都是为了养成习惯。一旦习惯养成,它自<br />    然而然就成了你的优点了。<br /><br />    要学会幽默,不论在任何场合。因为我认为幽默是改善乏味的人际

2010-07-15 20:55:00 325

原创 7/10/2008,2008-4-25

<br />14:58 2008-4-25<br />代码级别的重用带来的便利并没有想象中的那么好.在大部分游戏工程里面,引擎作为一个大<br />的块被重用.<br /><br />16:30 2008-4-29<br />在编码之前,必须要完成:目录结构,命名规范,分工等.<br />有个可视化的版本,就算功能相当简单也可以帮助团队解决那种浮空的感觉.<br /><br />11:28 2008-5-22<br />尽早集成,就算只有空壳。头脑清醒,随时检查需求。<br />

2010-07-15 20:54:00 292

原创 2009-6-23,

<br />2009-6-23 13:59:13<br />需求的重要性<br />    设计应该由需求来驱动。如果一个设计不能很大程度满足我们的需求,而需要大量改动才能使用,那么<br />    这一定不是一个好的设计。<br />    <br />    因此,如果出现石头里蹦出来的设计,那么可能有两种情况:<br />    <br />    1,设计者对要设计的东西非常熟悉,游刃有余<br />        在这种情况下,如果设计者所熟悉的东西正好是我们需要

2010-07-15 20:53:00 252

原创 2009-11-25,2009-6-14

<br />15:40 2009-6-14<br /><br />大型游戏的关键需求:<br /><br />+ 灵活方便的UI界面<br /> ~ 方便的UI开发包<br /> ~ 方便的UI编辑器<br />+ 灵活强大的游戏编辑器<br /> ~ 编辑地图<br /> ~ 编辑游戏演员<br />+ 快速的进入测试<br /> ~ 运行时编辑游戏中的可编辑元素,包括UI,游戏演员,地图等<br /><br />粗略想法:<br /><br />1<br />

2010-07-15 20:51:00 302

原创 2009-6-13,5/27/2010

4:50 PM 5/27/2010内存泄露检测:在第a次申请内存是中断1 (w)mainCRTStartup打断点2 watch窗口,{,,msvcr90d.dll}_crtBreakAlloc的值改为a3 运行程序退出程序时报告泄露#define _CRTDBG_MAP_ALLOC#include static int g_enableCrtMemCheck = _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHE

2010-07-15 20:50:00 359

原创 5/17/2010,6/12/2010

<br />11:38 AM 6/12/2010<br />业务层需求<br />- 逻辑清晰:<br />    代码直接反映需求<br />    可以很复杂,但是要易维护<br />- 能快速开发<br />    业务逻辑变动太快    <br />- 避免出现业务层无关的实现细节<br />    严格内聚<br /><br />实现层<br />    工具层<br />        - 使用简单<br />            不能给用户带来

2010-07-15 20:23:00 292

原创 9:20 AM 7/15/2010

<br />9:20 AM 7/15/2010<br />千军易得,一将难求<br /><br />与其分而治之,不如化繁为简(做事的方法)<br /><br />对症下药<br /><br />模式<br /><br />噪音<br /><br />层次<br /><br />统一<br /><br />伟大的工具往往有巧妙的结构<br />(业务逻辑讲求清晰,工具注重使用简单实用和强大)<br /><br />提高代码质量:<br />1 想办法限制C++用户

2010-07-15 20:23:00 352

原创 4/6/2010,5/7/2010

<br />4:05 PM 5/7/2010<br />- 体会“代码噪音”这个词语。<br />- 遇到问题,首先考虑能不能做个工具来自动解决,这是最高级的方案<br />- 与其分而治之,不如化繁为简: 削除重复,寻求统一。普通的重复必然要削除。更隐蔽的重复,比如模式。程序里面可<br />    能有许多的模式,但是却有相似的功能。统计程序的所有模式,并尽量减少模式的数量<br />- 分模块有时候就像搭电话线,一根线连接彼此,搭好了后就不管你想说啥想传啥都可以。。<br />

2010-07-15 20:22:00 327

原创 2009-6-26,3/26/2010

<br />3/26/2010<br />对于Onyx这样高度灵活但不稳定的系统,你需要更小心的决定哪些东西需要灵活哪些不需要,否则会给让工程带来方<br />向性混乱。比如带来大量细小但不太需要灵活性的组件。这将带来难维护的问题。。<br /><br /><br />3/25/2010<br />- 在update中有一些工作,只需要做一次以后结果都不会变,那么可以放在初始化里面做<br />- 给游戏加个网络后台控制,还不如加个输入秘技来调试来的简单.但是,网络后台也有好处,他可以把

2010-07-15 20:21:00 323

原创 8/6/2008,6/11/2009

<br />2:20 PM 8/6/2008<br />在数据驱动的模型下,大部分数据类型的安全检查可以转移到程序外部的工具中。<br /><br />3:44 PM 8/22/2008<br />对于大型项目,是否管理好了复杂度,是项目是否能够顺利进行的标志。<br /><br />11:18 AM 10/31/2008<br />关于重用:<br />    在Mosaic中,组件的粒度过小,当项目变大时,必然会出现难以管理的困难。在没有遇<br />    到需要重用的时候

2010-07-15 20:20:00 235

原创 6/12/2009,2009-6-16

<br />11:58 AM 6/12/2009<br />关于RaymanHD Tracker想到的:<br />    雷曼工程非常大,重新编译一次要花费很长时间。如果测试中出了问题,就要从新打包<br />    发给QC部门,需要更多的时间。这就要求程序的子模块有很高的灵活性。比如,当雷曼<br />    在测试过程中出现丢帧,那么我们可以关闭一些繁重的模块来进行观察,因此要求模块<br />    有很好的可配置性。<br /><br />    Tracker在结果JF

2010-07-15 20:20:00 256

原创 06-10-30,06-10-31

<br />(06-10-30)<br /><br /> 学习了irrlicht 引擎的 UI 部分的设计。就这个引擎来说,个人觉得 UI部分设计上虽然有些问题,但是效果还是不错的。于是写了 Panel 类。开始他只是个控件容器,后来添加了拖拽功能,目的很明显,我要通过他来实现窗口。<br /><br /> 所以,以前在事件上的处理部分需要改动。当几个 Panel重叠的时候,会出现输入事件处理上的一些问题,比如同时多个控件感应到输入等。于是当某个控件接收并处理了输入后应该返回一个信息。那么我

2010-07-15 20:19:00 217

原创 06-9-21,06-9-22

<br />(06-9-21)<br /> 决定把控件渲染的任务交给用户实现,尽量增加扩展性。<br /> 决定使用上个话题的方案一,先做做看。<br /> 必须先把按纽设计好。<br />    <br /> 给每个类注册一个唯一的ID,有了ID,我们可以获取一个类的实例的ID,然后与我们想要的类的ID进行比较,这样就可以从父类向下转换,而不用使用C++的dynatic_cast<>.<br /> <br /> 一些行为先在父类进行设计,比如一个组件关心输入事件,并且子类有不同

2010-07-15 20:18:00 242

原创 06-10-30,06-12-12

<br />(06-10-30)<br /><br /> 学习了irrlicht 引擎的 UI 部分的设计。就这个引擎来说,个人觉得 UI部分设计上虽然有些问题,但是效果还是不错的。于是写了 Panel 类。开始他只是个控件容器,后来添加了拖拽功能,目的很明显,我要通过他来实现窗口。<br /><br /> 所以,以前在事件上的处理部分需要改动。当几个 Panel重叠的时候,会出现输入事件处理上的一些问题,比如同时多个控件感应到输入等。于是当某个控件接收并处理了输入后应该返回一个信息。那么我就这样该

2010-07-15 20:18:00 234

原创 2007-8-21,06-9-11

<br />//19:39 2007-8-21 錦天<br />  <br />  问题分解示意图:<br />  方案1:<br />  1<br />                  问题<br />                    |<br />            +———————+<br />            |              |<br />          子问题1      子问题2<br />               

2010-07-15 20:17:00 252

原创 2007-2-26,2007-8-16

<br />//2007-2-26<br /><br />1 类结构的一些体会<br />  <br />  我感觉,所有的类都应该从一个类继承,为什么这么说呢,从已有的类继承的化,可以方便维护。父类的功能子类默认都有,子类还可以自己添加功能。这样么,可以重用大量的代码,也可以使维护十分方便。不过这样可能会增加类之间的偶合度。<br /><br />//2007-3-15<br /><br />1 关于MVC模式<br /><br />  这个模式将对象分为逻辑Control,视图V

2010-07-15 20:16:00 265

原创 2007-2-13,2007-2-24

<br />//2007-2-13<br /><br />  进度特别慢的FIGHTER07,今天先看了下DEMOSTAR2(网友的飞机),然后看了下水晶之约的代码,然后看了下SKYHUNTER,很有感触啊    。<br /><br />  我们现在做游戏,应该把重点放在实现效果上,使用的算法笨拙点无所谓。水晶之约用的算法很简陋,但是解决了很多问题,再看我的SKYHUNTER,稍微有点意思的就是那个脚本机,其他的代简直没意义,地图问题到最后也没有解决,脚本机用在飞机里面的设计一开始就有问题,可是还

2010-07-15 20:15:00 286

原创 06-12-14,07-1-29

// 06-12-14关于对象的控制权限的问题。  一个对象可以控制其他的对象,但是,有时候,这种控制权需要进行良好的设计。  如果一个对象可以任意的驱动其他对象,那么,你的代码将很难维护。  如果一个容器内的对象可以将主流程从这个容器转移到其他地方,那么,你的容器将会有莫名其妙的逻辑,因为他没有对流程的控制权。  这个时候,容器内的对象就不能随意转移流程,转移流程的操作交给容纳他的容器来处理,这样容器将会有更好逻辑。  〈07-2-13 比如一个状态控制着一个状态工厂,使用这个状态

2010-07-15 20:13:00 202

原创 07-2-1,07-2-7

<br />//07-2-1<br />  <br />1 关于C++中静态对象的提前初试化。<br /> <br />  C++中可以在main函数之前调用一些方法,比如给静态变量初始化,单体的初始化等,这有方便也有坏处。<br />  坏处就是没有调用的顺序,有可能出现这样得情况:一个类正在向类管理器(单体)注册类信息(类信息是必须在main之前被确定),但是这个时候的类管理器都还没有初始话!<br />  <br />  解决得办法就是将类管理器单体的构造过程放在取单体的方

2010-07-15 20:13:00 301

原创 编程思绪,06-6-16 到 06-11-23

//06-6-16  接口分为查询状态类,更改状态类,分清楚点有利于规范代码。  不要将不该暴露的数据写进头文件。  凡是涉及到A对象的状态更新的,交给A来处理。  尽量保持对象接口的简单,接口要精练。  任务分配要具体,A只对象处理于A相关的事情,而且凡是与A对象相关的事情最好都交给A  对象来处理,不要让细节蔓延,以至于最后不能维护,出现代码混乱,对象互相偶合。//06-6-26  如果一个对象需要从文件加载数据,不要写加载方法在这个类,继承一个新类,写在新类  里。

2010-07-15 20:09:00 264

转载 far cry 2 xbox 360 map editor

一个字:酷! http://www.gametrailers.com/user-movie/far-cry-2-xbox-360-map-editor/255390

2010-05-08 16:03:00 398

转载 infoq, 一个很好的技术人员的网站

恕我落伍,才发现这个网站:)貌似好东西不少哦。具体的我也不太清楚,大家多去看看吧:http://www.infoq.com/cn/architect/;jsessionid=2136A514144C27A0381BC02A93BF8542

2010-05-06 20:52:00 619

转载 MSDN 杂志 2000-2010 在线免费阅读

哈哈,又发现了一堆好东西哦,赶紧跟大家分享。只不过是全英文的,凑合吧:) http://msdn.microsoft.com/en-us/magazine/ee310108.aspx

2010-05-06 20:46:00 567

转载 修炼之道

这个网站也很不错哦。。。一箩筐的好东西哟。。。  http://www.kuqin.com/pragmatic/ 希望大家喜欢:)

2010-05-06 20:21:00 279

转载 程序员能力矩阵 你属于哪一层?

由于版面原因,直接转帖: 原文出处:http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm译文出处:http://static.icybear.net/%5BCN%5DProgrammer%20competency%20matrix.htm

2010-05-06 20:19:00 242

转载 代码的创造性:向程序员学创造性的14种方法

对程序员传统的看法一般是这样的:书呆子,兜里揣着防止钢笔漏水的塑料片,以及,非常、非常的无聊。一般没有人会把程序员和创造性两个词放在一起。不过,这样的看法错的不能再离谱了。事实上,编写代码是一个人能做的最优创造性的事情了。程序编写者必须在两个完全不同的世界——结构的世界和想象的世界——之间求取平衡。他们使用一种非常结构化的语言,却实现了很抽象的概念。这可不是简简单单的工作。我能够知

2010-05-06 20:16:00 1648

转载 一个睡五分钟等于六个钟头的方法

睡觉的诀窍         所以,根据医学和我的体验、观察,一个人真正睡着觉最多只有两个钟头,其余都是浪费时间,躺在枕头上做梦,没有哪个人不做梦。至于醒来觉得自己没有做梦,那是因为他忘记了。    通常一个人睡两个钟头就够了,为什么有人要睡七、八个钟头?那是你赖床躺在枕头上休息的习惯养成的,并非我们需要那么久的睡眠时间,尤其打坐做功夫的人晓得,正午只要闭眼真正睡着三分钟,等于睡两个

2010-05-06 20:02:00 478

转载 非常内涵的游戏

很有意思的一个视频哦:http://v.youku.com/v_show/id_XMTY2MzU3OTU2.html  

2010-05-06 19:58:00 296

转载 微软华人软件人生经历:功夫在身外

 微软华人软件人生经历:功夫在身外 出处:计算机世界 在微软工作的华人已近千人。在微软TechEd技术教育大会期间,他们中的16位作为讲师回到北京。他们为听众带来微软软件技术的最新进展,而他们自身的软件生涯也是一种财富。记者在大会期间,趁他们讲课 之余,采访了其中的5位讲师。学得杂一些

2008-10-16 11:27:00 520

转载 解决问题的方法

解决问题的方法 来源:http://www.uml.org.cn/  作者:人月神话   

2008-10-16 11:23:00 340

A FLEXIBLE AND EXPANDABLE ARCHITECTURE

关于高灵活性扩展性的游戏项目的架构设计.书中带有案例,UML图,还有很多很难在其他书里面找到的:游戏的架构设计。

2009-09-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除