(2012-01-29 21:08)
我大多数时候喜欢看逻辑性强的电影,但着实不喜欢也不擅长写影评。今天看了一个几年前的动画电影,或者说短片集,名字叫作“暗夜恐惧”,详见
豆瓣的讨论。名头虽是恐怖电影,但绝不和常规的亚洲或欧美恐怖片是一样的感觉,一路看下来没有让我做呕也没有头皮发麻更没有背后冒汗,却真的感到很深的压抑和扭曲,带给我一种难有的投入体验。尤其喜欢一些希区柯克风格的桥段。
这种画面风格和叙事手法以及镜头推送应用到游戏上应该别有一番风味,虽不惊艳却直摄人心魄。
这几天忙过年的事情基本每天都在走亲戚但是却感觉自己没有做什么事情,觉得自己快要在冬天的东北蒸发掉了,我爸都说过年这个假期不是轻松而是疲惫了。为了赶走自己的空虚感,利用空余时间把C#通过CLI
C++中间层调用Native C++的方法整理出了代码和文档。
东西开放在:http://www.codeproject.com/Articles/320190/native-under-managed。
这是一个不那么容易翻译成中文的标题,《青龙盖地虎,托管镇本地》、《托管上了本地》、《托管和本地同居的日子》……怎么说都不对味。暂时没时间再翻译成中文了。
昨天又仔细想了下P/Invoke的路子,把语言边界的可渗透类型限制成有限的几个通用数据类型也不失为另一种简洁的方案,但是我夹个CLI
C++做中间层的从我最开始用到现在也没觉得多别扭和繁琐,以后能牵扯上关系的需求我就都按自己三层的来写了,或者把P/Invoke也加进去,让top和bottom能直通做为另一个路由。
春节假期的写代码效率比我预想的低,如果我不往外跑也没人到我家来的话我想能高一大截,但是一年在外一朝团圆,该见的也尽量见到吧。接下来的几天假期
(2012-01-15 22:47)
又到一年当归时。再过两天就回家过年了,今天理了个发,上次理还是两个多月前的事情。
昨天和老婆一起看了“
大魔术师”,这应该是近档最附和贺岁的一部片子了,要的就是那种愉悦的体验,我很喜欢。今年的“
Merlin”全看完了,又要苦苦等到2012年秋才能看到下一季了,话说Richard
Wilson老爷子都快76岁了,算是长青树了。“
新福尔摩斯”是近期最好看的电视剧,这一季中的素材案子要比上一季更经典。
本来感冒都快痊愈了,上周三却突然发起
我是个粗人。会写点代码,偶尔以此为乐,并凭此谋生。2011差不多是我职业生涯的第三个年头。
代码是有脾气的,我以为。有的代码蛮横,不把你自己的程序大卸八块是容不下它的;有的代码随和,很容易就集成到自己的程序中了。有的代码罗嗦,和它打交道要不断的互相传递很多信息;有的代码收敛,暴露给你的不多,但都是精华。有的代码狡猾,自以为聪明的帮你接管了很多工作并让系统不可控;有的代码耿直,只要是你想要的细节它都能给你,当然,你也能充分信任它放任不管……以前写代码刚入门时,别人的代码在我看来是没什么区别的,都看得懵懂,以现成代码为基础写一些功能时也时常东改改西改改看看效果对不对,完全不知所云。今年复用了一些前些年写的代码,在阅读时难以抑制的重构了很多,今年敲的代码应该比去年更能让人接受吧。记得“黑客帝国”中尼奥像触电一样过了一遍功夫片就扬言:I
know Kung
Fu,何其大言不惭;同样我不敢相信一个看了《21天精通XXX》的人在三周后真的能品鉴出技术的脾气(我仍然觉得入门阶段使用这类书的确很有效,但这类书多半是会了就扔的)。我把技术书籍和博客分成两种:教人怎样写代码的和教人怎样写出更好的代码的。有经验的
最近在找合适的给C++添加RTTI特性的方案,这里记录一点想法。
元数据(metadata)顾名思义就是数据的数据。像C++这种强类型强检查的静态语言最惯用的方式是不会用到metadata以及RTTI的(typeid和dynamic_cast只能算RTTI的小角落,在C++中很蹩脚);C#本质上也和C++一样是强类型强检查(即使DotNET
Framework向类型推导、泛化和动态化的不断演化使C#这门语言也越来越呈现动态语言的特征),但C#诞生之初就把metadata做到了骨子里;更不用说诸如ECMAScript语系的语言等脚本什么的弱类型已经成了隐含的写代码的先决概念。许多使用UI方式的游戏编辑器都免不了需要一套获取C++类型metadata的机制。托C语言宏和C++模板的福,我们有数种方式干这件事。
1. metadata获取方案:TIG /
RTTI。Unreal3,最近开源的Doom3和Reflex库等都使用了TIG(Type Info
Generator)这种使用独立的scanner加parser扫描分析某种定义源码的方式实现metadata的获取;Gamebryo,trl库还有《游戏编程精粹5》上介绍的一种方案都用了另一种在目标C++类型上添加额外代码收集与访问metadata的方式。前者不需要给被操作的类型添加额外代码就能实现,向已有
十三年前第一次听Bob Dylan的那首“blowing in the
wind”。很多年前我开始想,一个程序员写多少代码才算入门呢?对写程序的认识从能实现功能就万事大吉到有意识的注重代码质量和效率的转变点应该算是入门阶段的一个里程碑吧。每当我遇到一个无法逾越的技术点,或是自认为刚刚学会的一个小手段能解决一大片问题时,其实都是遇到了知识断层的障碍。不知不觉弥补了断层过后就会恍然大悟:原来那个问题要那样去解,而我当时的小聪明着实不高明啊。程序员对代码优化的认知也是阶段性的,优化的能力应是随着无法解释的抽象层面的减少而成长的。
看一些人写技术博客在措辞上过于谦虚了,这可能也是被不看文章瞎评论的人惹怕了吧。好在我脸皮厚,写博客只注重清晰表达自己。写字直白和为人不够谦逊在我眼里向来没有联系。我和大部分有兴趣仔细看这篇文章的人没多大差别,只是一个写了几年代码的游戏程序员。这里只写我对游戏程序效率优化的一点想法。
抠不如抓
茴香豆中hui有多少种写法?不用循环和分支语句怎么实现两数交换?STL迭代器移动++写在前头好还是后头好?循环中的特定代码需要外提吗?按我对编译器的认
主要更新列表:
1. 如果undo/redo到一个已保存的状态时退出则不再询问用户是否保存。
2. 调试命令输入窗口自动完成。
3. 插件可操作脚本变量。
4. 添加保存、恢复当前工作目录脚本接口。
5. 添加获取控件对象脚本接口。
6. 修订ShellUtil中对话框为异步调用。
7. 增强异常捕获、处理、报告。
8. s64、u64装拆箱修订。
9. Service可向调试控制台echo内容。
10. 添加鼠标滚轮消息分发。
11. 添加opened和closing配置脚本调用。
12. 添加纯托管已编辑状态支持。
13. 添加文件拖放支持。
14. 实现脚本插件机制。
写框架的初衷是把可复用的部分抽离成独立的模块,再次遇到相似的需求时可以尽可能简便快捷的搭建起开发环境并摆脱重复开发可复用模块的窠臼。然而像GEF这种上和UI下和业务逻辑联系紧密的框架不可能让所有将来未知的基于此的扩展开发细节都能舒服的进行。使用框架开发如果遇到了未期的效果可能是调用者逻辑错了或调用不当,当然也可能是框架本身出了问题,框架形式的封装的一个原则就是尽最大可能把
(2011-11-27 17:36)
主要更新列表:
1. 调试控制面板。充当文本输出和脚本命令输入的控制台。
2. 更完善的消息流程。向plugin的消息分发模式更完善。
3. 完成支持undo/redo特性的command模式。
写基础设施脱离不开实际需求,忌讳的是仅根据凭空假设去写。写代码之前万般努力的妄图考虑清每个细节打好腹稿,并通过这些妄想出的假设去实现一套东西出来,最终再用这套东西去套用实际的需求时一些当初设计之时无法预见的硬伤便会浮现出来。开发者的经验丰厚程度决定着假设与实际的脱节距离和最终硬伤的深度。这次的版本中加入了简单的添加、删除、移动物体(现在只有矩形)的演示功能,并且以上所有操作都支持undo/redo,还有鼠标、键盘事件处理的一些示例,这些代码可充当tutorial和test
case。GEF是MVC的一次实践。接下来的一段时间我打算基于GEF重写公司项目的两个编辑器,严重的硬伤我想不会有,但按我对代码的洁癖,小尺度重构应是不可避免的。在框架核心代码极稳定之前就不放出任何可供二次开发的东西了,但这次放出了一套plugin和service的演示源码,有兴趣的同学可以看一下使用GEF的话你们自己都需要写什么样的
(2011-11-17 00:56)
原文:《Why portable console gaming needs to go away》,地址http://news.cnet.com/8301-17938_105-20123991-1/why-portable-
console-gaming-needs-to-go-away/?tag=epicStories。
GAME
OVER,索尼和任天堂认输了。掌机游戏在这个用随性戳、拽、敲的方式玩游戏的时代已成明日黄花。现在多功能的移动设备远比只能专用玩游戏的高科技设备重要,3DS和Vita只能苟延残喘。

(Credit: CNET)
相比一个复杂的25小时RPG,现在的消费者更容易对快餐激励感兴趣。我在NDS和PSP上玩过那些游戏,我知道其中有很多棒游戏,但是,拿一边去。
但
(2011-11-13 19:44)
上一篇《
富有弹性的通用游戏工具框架(一)》写了些骨架性的东西,今天把first
runnable的截图和demo发出来。名字就叫GEF(Game Editor
Framework),其实把它用作非游戏领域的软件开发也是完全可行的,前几天老婆决定把GEF用到她的网络仿真毕业设计中。我以后写编译器的IDE也可以拿这个玩意直接用了。话说Visual
Studio这种现代IDE的扩展性非常好,用VS做shell来开发游戏工具也是可行的,VS插件写起来不难,不过开发资料相对少得多。什么现成的都不如自己专门定制的用起来顺手和爽快啊。
简单的从网上抠了块几何体渲染代码写了个OpenGL渲染测试,消息流程都跑通了,undo/redo的command模式还没有加上,一些必要的消息处理还没有写完。第一版的截图如下: