2008年9月20日星期六

谢谢周末

  这两天都在聊天,感觉头有点涨,稍有点迷茫的感觉,遂喝茶、听音乐、随便写写。
  先说“不务正业”,技术人员业余聚一块交流,多数还是在讨论技术,其实按我个人的理解,技术上最多讨论点思路性质的东西,本来嘛,更多都在实际开发过程中才能体会了,像这种感想,如果在一个较固定的圈子里,聊来聊去很容易把该说的都说完了,通常讲出来要比学起来更快些嘛,而大家在业余讨论做点什么东西的时候,没啥范围限制,但还是很难想出来个有意思的,为啥,跟几个朋友聊过后,一方面可能是程序员的自我壁垒,只知道聊技术,另一方面,程序员通常是个怎么样的生活呢,把一天数数,工作、加班、上网、看专业书籍、睡觉,哪项都是重脑力劳动,就算身体还有没消耗掉的体力,但已经不听指挥即将睡去。之前我刚做网游时,还觉得可能会生活土壤会更丰富些,但实际也没啥区别,鉴于此情况,我准备出个topic,名字大概就是“奔跑中的程序员”吧,还没想好,暂定。
  另一说就是和sun工作人员的接触吧,一开始没仔细看名片,我还以为是做市场方面的人员,吃饭时一看那mm手中拿本书,要来一看,O'Relly的Linux Network Internal影印版,再一聊才知道是sun的开发人员,这文化,我羡慕,嘿嘿,开发人员走向四化啊,更难得的,是个美女程序员,为啥我待过的公司都没这种情况呢?哈哈。
  还有就是和一个同行的碰面了,他做游戏已经有些年头了,一聊,还不少偶然,发现这个圈子不够大啊,认识些相同的人,观点也差不多,讨论最多的还是行业目前混乱的局面了,一开始觉得可能是越乱越有机会,等垄断形成也就没的玩了,但后来再一想,怎么说游戏也算一实货的艺术品,可能存在垄断吗?如果不是,相信798那些艺术家早就没影了,如果真在某个层面构成垄断,也不应该是游戏的核心,否则就成大的体制问题了,百家争鸣的情况应该在这个领域内持续,同时,在开发方面,如果可以幻想,那会不会是程序开发这层的统一服务提供呢?看看主流艺术家,各种乐器已经被“抽象”的很好,没有几个艺术家是自己做一个出声的“器具”然后再搞艺术,但这是个大问题,可能会很久时间都没法彻底解决。同时,研发管理的混乱至少理论上来说是可以被解决的,整体跳槽、内耗等不健康的因素仿佛在这个行业太常见了,这个与IT业其它如企业定制开发这类团队差别很大,如果不改善,恐怕只会让国内的游戏行业以一种低效率的发展方式前行。作为developer,现在最常见的情况还有一个,就是一个成功产品后,相关人员就全离职了,谁都说的像他一个人做的一样,然后在别的地方以此经验谋取物质利益的最大一块,像这样的情况就太多了,数数大家私下的游戏源码就知道了,市面上流行的,恐怕都有。
  但游戏这块我个人感觉有个小趋势对个人和小开发团队挺有利的,就是轻量化游戏的崛起,比如webgame,这可比我现在做的mmo轻量太多了,而且,更注重玩法(有回归游戏本质的感觉),也更符合,也更容易结合时下潮流,这里面已经有了不少较成功的例子,很小、很酷、很灵活,上天也赐我点灵感吧!
  我真该扇自己两巴掌,迷茫的感觉就是因为没有合理的定目标导致的,这是在渎神吗?

2008年9月2日星期二

红色旗帜

  记得传统武术里有南派和北派,最大的特点就是北派更注重身体机能的修炼,而南派更注重搏击技巧的练习,好似最大限度发挥优势和最大弥补自身的比较,若能结合当然是更好,以前在部队时,听教官讲,很方军队的拳法就是综合这两个系的特点创造出来的,现在,我也觉得我是喜欢并适应全面发展的人,这次参加Nike+ HumanRace 10KM,取得了不错的成绩,让人精神振奋!
  奖品中有有件红色tshirt,鲜红鲜红的,很喜欢!

2008年8月23日星期六

Innov8创意沙龙归来

  终于去了次传说中的798,在会场上听了Tinker hatfield的演讲,在中国把中西方的文化综合,确实是一件很有意思的事情。结束后在798园内转了转,看了看小众艺术家的作品,总体感觉有点颓废,让人有悲凉的感觉。

2008年8月19日星期二

使用SIMD优化

  之前使用过SIMD指令对程序进行优化,压榨CPU的感觉就是好啊,这个链接作为介绍应该是足够的,其次,在使用时,通常也需要对原有算法做些适应性修改,可能最常见的就是修改内存布局和最大限度的利用并行计算了,直接写asm是挺痛苦的,尤其是比较长时(单代码段上千行),MS有一组的封装函数,直接可以用函数式的调用来使用SIMD指令集,据说比非最优化的asm版慢不了多少,MS一片苦心啊,MSDN的示例代码也里有个画曲线的例子,挺直观。对于大面积的整数/浮点运算,真是个很直白的优化手段。

2008年8月15日星期五

One Day, One Race, One Million Runners

  中午吃完饭去注册了Nike+ Human Race,08年8月31日,这个活动简直太Cool了,一万米,全球一起动,想想都兴奋,真想在办公室狂吼一会儿!
08.31.08
RUN
AGAINST YOUR BEST FRIEND
RUN
AGAINST YOUR WORST ENEMY
RUN
WITH PEOPLE YOU DON'T KNOW
RUN
FOR YOUR STREET
RUN
FOR YOUR CITY
RUN
FOR YOUR COUNTRY
RUN
FOR YOURSELF
RUN
FOR GOOD

2008年8月13日星期三

FreeType2使用总结

  之前用过一段时间freetype2,其实已经过了很久了,突然想起来应该总结总结,在这里记录下来。
  freetype2是个纯c实现的字体引擎,在非标准的表面上绘制字体这是个不错的选择,它非常干净,只负责生成字形信息(灰度图或按位存放的点阵图),后面具体的绘制交给开发人员,你可以往任意的表面自己实现绘制。
  使用起来很简单,看官网的小例子学起来应该很快,就这么几步,初始化、加载字体文件、得到单字索引、得到AA(反走样图,一个点一个byte)图或Bit图(一个byte里每一位一个点,当字号小时,AA不生效,自动会变成这种模式),得到这个字形图后,就可以绘制了,描边也简单,AA图的描边可以用freetype2里的FT_Stroke,Bit图麻烦点,可以参考photoshop的效果自己写一个,也不麻烦。
  实际用起来效率是要注意的,因为生成一个字形是很慢的,需要把生成过的字形信息全cache起来,可自己写个,或者直接使用freetype2较新版本带的FTC系列函数进行处理,索引和字形图分别用FTC_CMapCache和FTC_ImageCache进行缓冲。
  另外一个麻烦点的地方就是文字排版,虽然每个字形信息上带了left和top(这个top不是传统想像中的top,是字笔画实际top到底的距离),但描边时我却没找到方法怎么得到这两个值,于是我手工扫描了字形信息,将空白的无用区域“cut”掉,其实只是在它的buffer、top、left上算一个自己的修正值,这样就能保证两张图对的上了,在这个过程中,可能会需要修改freetype2,我也懒,buffer用来做左和上的偏移,width和rows的修改没什么,只要pitch不变,也没关系,这样的好处就是不用改动它的内存管理,同时也做了自己的修正。
  freetype2源码内部的内存及对象处理都是用的结构内存技巧去做的,一开始还有点不习惯,后来感觉这样也挺清晰,还有就是c,很少实际去用c,和c++细节还是有些区别的。
  其次win32也有类似GetGlyph的函数,但没试过,不知道效率和质量怎么样,网上有个gdi++,就是用freetype2替代win32内置字体绘制。

我就是

  之所以起这个标题是因为刚看到一个Nike的宣传flash,平时不太经常点广告性的东西,有两个厂商印象不错,一个是Sprint(呵呵,不是sprintf),另一个就是Nike,他们都会在网上放一些很精致的flash做宣传,如Nike这个,给人的感觉很好,抛开商业活动的本质不谈,如果只看其过程,很是让人振奋,“我就是”,是坚持,是肯定,后面的几个描述也很想记下,“我是专注!我是奋斗!我是决心!我是历练!我是顽强!我是力量!我是自信!我是突破!我是投入!”,是很简单的道理啊,如不能时常回忆而抛之脑后,就遗憾了。感谢Nike,给了我这样的提醒!
  近期说来也不算很顺,一直很忙,有些人加了后聊的很少,昨日与o6z老师聊了下,谈了些自己内心的困惑,也有些结果,毫不含糊的,对自己的心理到生理进行分析,大家无非都是有血有肉的,关键是真实的感受。我昨天回去路上和今天上班路上都在想这个,想想后,感觉现在重点的无非还是历练自己,这点算什么呢?保证心态平和,稳步前进吧,上周末在看了些新买的佛学书,四法印,诸行无常,第一条就是教人如何面对和保持心态,要好好实际体验而不是体会了。对于之前的一些尝试,有不足的地方,我要继续try!
  我是专注!我是奋斗!我是决心!我是历练!我是顽强!我是力量!我是自信!我是突破!我是投入!