Profil de Duo一心天堂PhotosBlogListes Outils Aide

Blog


17 novembre

关于使用lib

      周末打算把数据解析和属性修改的内容做完的,不过一如既往的,还是没有完成目标T_T,发现涉及的XML库的调用挺麻烦,所以权衡再三,决定对这个库做小部分的重构,因此,周末的时间就在重构上用完了。写了有些时间的东西,要重构起来就有点回忆不清,这次重构完,有必要留一套比较全的UML设计文档了。

      另外在编译,和重新启动单元测试程序后,对库的链接出了点问题。

      一。是一定要慎用#pragma comment来加载库,因为这东西的路径是相对与自己的,一旦是link多个库,代码里的这个路径很容易出问题。

      二。使用库的时候一定要注意 ,编译时的/MTD /MD选项要一致,否则容易报LNK2005很莫名的错误。我花了一个晚上检查代码,最终也还是没有查出LNK2005的重定义从何而来,最后才发现时项目中的一个设置在版本控制时被覆盖了,结果造成一个库用的/MTD,一个/MD,改成一致后,莫名的LNK2005就解决了。

11 novembre

数据解析

      昨天开始抽空写了数据解析程序,原本的XML系统中的数据节点的设计部太适合我目前想做的关于自解析和填充数据的用法。其实这个问题早在设计游戏内的数据结构时我就发现了,也想好怎么改了,只是一直没有进入数据结构加载阶段,也就没动这块程序。昨天把XML系统中的设计修改了,把rpg引擎里的基类结构写完。用了一种pump的推动方式来自动加载数据对象中所有数据。今天想把从游戏初始化到加载数据的部分都做完。不知道晚上我的笔记本床上桌到了没,否则就可以在床上写程序了。

      另外研究了下位移贴图,和细分曲面,不错,长知识了。发现自己对曲面的计算几何还是不行,完全看不懂论文里的计算,要补习下

9 novembre

泄漏解决

    把泄漏搞定,发现文件系统中有一个不太方便的接口调用,修改了下,下午开始写数据导出结构,为XML系统的加入做准备……
7 novembre

泄漏,泄漏!

    哦,又是内存泄露。昨天今天,在发布能编辑文档后,突然发现了5个内存泄露,其中三个是因为我有意暂时不加释放程序,造成的。还是习惯不好啊。后面两个就诡异了。一个是在DLL内部调用的。其诡异表现在一个丝毫没有被执行到的new,造成了泄漏。百思不得其解,和riger前辈交流了一下午,没有结果,最后认为是编译器bug。今天早上还是不死心,心里总有个疙瘩。抱着再试一次的想法,我依旧使用_CrtSetbreakAlloc试图定位。(昨天试过,结果没断下来)。经过一个早上的折腾,最后发现没定位下来的原因,是其内存分配的ID早于我的CRT调试函数,提醒我了,所以在构造APP的时候调用,结果定位,最后发现造成泄漏的是我给静态变量来了个new,而恰好没有调用相应的释放函数。而两个内存泄露,一个是因为我包含了含该变量的cpp文件,而在DLL内因为再次调用,但不在同一地址空间,因为两次执行。最后还是自己粗心了。不过编译器的报告确实存在误导,它根本没有检查出静态变量的泄露,而是报我成员函数内new的泄露,这算编译器一个警告的不完善的bug吧。
     哎,不过还是有内存泄露,今天后来去拿笔记本了,明天还得把电脑修修,估计晚上才有时间改这两个bug吧,我实在很讨厌内存泄露啊。
6 novembre

XML显示

    旅游归来,一切照旧,公司里忙着解决音效的问题,回到家电脑坏了,工作不得。加上有点心事,在周四开始稍微空点后,才开始写了点东西。调整了下加载游戏逻辑的DLL加载结构,然后将文本内容显示出来,同志们,你们可以编辑XML了。
25 octobre

DLL调用成功

    DLL插件的添加,加载,调用,今天晚上测试成功,很好,这样编辑器就有了更大的扩展性!
    下午去见了下新的美术,希望新的力量加强我们的Team!

编辑器插件框架设计

    本来我并没有意识到会设计插件。原本的想法,只是想把界面功能和逻辑分开。但在设计过程中,发现,实现该功能用插件是最好的。使用DLL加载插件后,可以进一步提高编辑器的可重用性,可以支持以后的游戏逻辑。所以在这个原则下,我设计了DLL方式加载插件,通过对DLL导出类来实现。这种方式可以将逻辑,引擎,编辑器划分的更清楚。今天只把这个思路定下来后,实现了一个小类的DLL加载,底层搭的越来越细了。
22 octobre

编辑器框架大体完成

    把我要用的MFC类,控件都添加进去了,接下去就是写编辑器的逻辑了,当然这是要和引擎同步的。
    最近忙的一塌糊涂,公司的程序代码BUG已经要我用反汇编和内核模式才能调试了。所以自己的项目更新很慢了。今天有点事,请假在家。抽空把编辑器的一点遗留问题解决。总算像点样子了。其实心里很急,接下去我想做alpha混合功能,没有编辑器不好看效果,好在终于完成,可以吧效果加进去看看。计划,Xml文档编辑,和贴图编辑一起同步进行。
    虽然现在很慢,但都是为了以后打基础。忍了。
 
    最近和同行交流很多,对这个行业有了新的看法。恩,希望我的选择没错
6 octobre

编辑器进展

    十一长假,免不了串串门,呵呵,今天开始算是没活动了,安心写程序。
    其实3号的时候已经在写了,不过在用一个控件的时候碰到了一个MFC非常诡异的问题……花了两天时间研究,结果是问题虽然解决,获得了我要的功能,但为什么会造成这个问题的原因仍旧不很明了,推测只是MFC的内部封装干的好事,和CSDN上一个朋友讨论了很久,最后只能暂时这样解决。真要知道原因,估计我得把MFC的内部机制好好跟踪一遍,没有这个心情了,这个灵异现象已经拖慢了我的进度。
    总之,以后控件初始话,同志们尽量在OnInitDialog里完成,切记。
    编辑器里已经可以展开文件数据路径,这样就可以实现下一步点击文件进行数据编辑功能了。另外添加了另一个控件PropTree,将来用作属性显示和编辑用。
29 septembre

编辑器框架

    这周主要在搞编辑器框架,MFC开发,恩,用了一个老外的组件,我还是想把编辑器做的美观点,因为公司那个太丑了~~~。打算使用一个stack窗口,上面是文件数据列表,下面是数据属性,图形数据的话有预览。View里面显示文本或是图形。
20 septembre

从内存数据生成贴图

    前几天完成直接加载贴图文件,今天把内存中的图形文件生成surface来生成贴图完成。我们可以自定义自己的贴图格式了……
    当中麻烦的还是JPEG得解压问题,一开始生成的图片颜色都发生了色偏。尝试了几次不行,最后只好去老外的论坛发帖求助,谁让这玩意是他们搞的。应用方面的说明老外写的相当少,包括Q&A。听一国外的好友说,老外都比较天才,不屑写这些说明,呵呵……
    嘛,反正后来晚上回到家冷静思考了下,又做了几个实验,最后被我试出来了,D3DFORMAT的内存格式问题,现在已经解决,放出最新截图,还是当年蓝老师说的对,Bug必有因果,慢慢静心分析,总能解决
 
另,N个MM说我们的LOGo可爱,印象深刻了,哈哈
18 septembre

2D场景显示完成

    本周忙公司项目的盛大β版本,通宵了一天,剩余几天也几乎围绕这个事情,所以场景显示的制作明显慢了,昨天把整个显示场景的过程调试通过完成,今天把结构和测试代码整理了下……
    添加了viewport相关的类。顺便感谢lim帮我解决了一个bug
12 septembre

今天郁闷了……

    我实在对libjpeg这库没想法了。事实证明我以前说过的两件事还是有道理的:1.用别人的库还不如自己写;2.标准在手就是NB。这个老外用C写的库,功能真的很全啊,但这也写的太耦合了,换句话说,你就必须按他的方式调用,否则这程序就出错。但这却让我的程序结构不能按预先设计的去写了,想到以前用havok那会,哎,谁让我们没有拿到JPEG标准,只好按别人的规则游戏了
    程序的结构性被打破了,很不爽啊……
11 septembre

BUG修正,底层库整合使用,单元测试接口

    上周因为在开发过程中发现原本我使用常量来保存程序中的输出信息,已经不能满足扩展的需要了,因此改成了动态分配和保存。并可以通过接口随时添加客户程序员所需的信息。但没有经过单元测试……现在用的时候果然吃药了,书写时候的小疏忽,造成了一些比较低级的BUG。花了大半天的时间修正。同时,把调试信息输出到了调试器中。
    贴图加载到渲染的接口都测试了一下,基本没有问题了。说明渲染的基本工作流框架完成,接下去就是增加功能了。开始研究ljpeg的库的应用和增加对PNG的支持。
    另外,前期分开编写的XML库,内存管理库和文件读取,日志等基本库全部整合起来使用了,终于看上去像一个还挺浩大的工程了。
    最近公司也很忙,每天早上都要先解决A类的bug,希望能在下周,显示场景,这样,美术那就可以忙起来,我也可以转战服务器搭建和逻辑编写了先。
4 septembre

关于游戏的进展

进展还行,不是很快,但也不慢
 
这几天主要完成了将从场景数据文件读入二进制文件后,生成DX中的Texture部分。还是先搭建了数据加载和渲染的框架。目前功能比较单一,对于贴图混合,和多层贴图还没有实现,只是在代码结构中预留了接口……
 
搭建引擎的架构还是颇费心血,我的目标是对外提供更加简单,容易理解的图形引擎接口。内部封装DX,OPEN GL,等图形API。有计划支持SGL,不过这是后话了。目前的架构,我把DX和OPENGL的调用封装在了引擎的渲染层,大概深度在3层左右
19 janvier

1月19日晚 23:15

    我好像喜欢做迟到的总结。迈入07年大半个月后,终于有时间来更新space,终于有时间来总结自己一年的得失和成长。这还得归功于在这个夜深人静的夜晚,我的IE终于能顺利的打开space的全部编辑功能。那么,就乘着这难得的机会,灌下水吧。
    一年前的今天是大年夜,我满怀憧憬的准备进入现在的公司,一个长久的愿望,梦想的开始。
    目标和梦想,已经不是今天的我挂在嘴边的名次。我不太愿意去提起。因为这个事和别人提没什么意思,用声明修饰符来解释的话,是个private的变量。
    在今天晚上九点半的时候,终于完成了对可以说是主要代码的一次重构。总结这个开始于9月的工作,到1月中旬才初步完成,确实有很多东西值得反思。有很多感触。疲惫,是最大的感觉。我一直觉得工作很难给我压力,但是这半年来,压力确是我有生一来第一次真实感受到的。说起来,也许是这个游戏开发的本身大大的有别于软件开发。游戏的开发,需要一套更加严密,有效,有特别的开发方法。迭代式的开发在游戏领域真的显得特别重要,但即使,这样,你很难去说,策划的设计会保持不变。也许你会今天,10个月后,你开发的完全是和10个月前截然不同的一个游戏。所以,重构代码显得家常便饭。而在时间的限定下,压力就随之而来。
    几乎很少看到落日夕阳,几乎很少能和家人坐在一起吃顿饭,几乎没有休息天。早上一觉睡起,整个背部的肌肉仍旧没有复原的迹象,一天的开发,让我到了晚上,几乎只能靠眼药水,才能保持眼睛的睁开状态,否则,眼泪就不停。
    我涉及的开发部分处于一个主要交互状态,很多涉及牵涉到各个模块。在这一开发过程中,终于体会到,有时还是要让一个程序员专注于一个模块,否则设计的效率,和编码质量将大大降低。同时,很容易造成高扇入的设计。今天,刚改完做底层的代码。经过重构的代码后,影响到了其它使用者的代码。接下来的工作,就是重构上层的代码,自下向上的将目前的结构替换掉。
 
    开发游戏真的很辛苦,付出的代价也是巨大的。自己的时间,健康,还有很多很多东西。有的代价,让我几乎失去了一些在这个年纪很重要的事。你很难去说是失去的大于得到的,还是反之。学到的东西,几乎让我消化不过来,失去的,其副作用也不是可以轻易抹杀。我不愿意去衡量这个天平。
 
    只要,我还这么希望,我就会继续。
    有部电影,里面有一句话,“成年人的生活是没有容易这两个字的”。我现在并不觉得生活,工作,轻松,很多乐趣已经不能吸引我了。有点机械的只想工作。但是,就拿今天晚上来说,当终于重构,编译运行通过的那一刹那,我并没有我想象中的激动,也没有如释重负的感觉。工作还很多,虽然一阶段的成功令人高兴,但坐在车上回家时,心里却有点空虚,失落,和寂寞。总觉得,当一件事完成后,一下子失去了目标,一下子向失去动力的船,不知道该继续朝何处努力。
 
    也许,只有今晚,好好的睡一觉,暂时的解放疲惫的大脑吧。理完思路后,明天又是更多的工作。
    失去的也好,得到的也好,只要这种累有价值,如果我只能在这种疲惫后能感觉到自己的真实存在,我就会继续。
4 novembre

写游戏程序的不同

    写游戏程序最大的不同是有着极大的成就感。
    写游戏程序的不同是,更大的成就感是在整个游戏完成和发行后才冲击而来的。在此之前,必须忍耐再忍耐。
 
    写游戏程序的话,应该有近乎BT的对完美的追求。绝对不能因为这里只是降低了1%的性能就放任不管。更不能认为这个错误的出现几率是0就忽视它。
    写游戏程序,要有不断否定自己敢于推翻自己的勇气。因为可能你在刚完成这段程序的时候,你就得重新推倒重来。即使,你原来得代码写得不错。只是设计变动了而已。
    写游戏程序要有耐心,你找不到一个错误是很正常的,因为你不知道玩家会怎么来玩你得游戏,而项目,毕竟是一大群天才程序员写的。你不可能时刻都能立即明白别人的意图。
    写游戏程序,设计文档更多的是再你的脑中,你得有足够得表达能力让另一个程序员明白你在做什么。要求大家留下完整得文档是一件代价高昂,且没有足够得时间完成得事。除非你不关心游戏什么时候上市。
 
以下写于11/14
 
    写游戏的时候,真的不知道什么时候是项目的结点,当以为可以暂告段落时,总有新的工作会冒出来。
    写游戏得有很好得记忆力,你必须记住,改动了一个地方,得去看看关联得部分是否也需要改动。
    写游戏,还是勤于动笔,因为再好得记忆力也比不上纸和笔。