Posted on 2012-08-17 17:10
CrHackOS 阅读(2088)
评论(2) 编辑 收藏 引用 所属分类:
个人开发
以前刚开始搞 GameViewer 的时候,主要目的是做一个自娱自乐的东西,用来打发打发时间。后期发现,当中有很多东西与平时的工作、兴趣爱好等等有很多的关联。所以后来,才逐渐加入了一些诸如 3D 模型、图片滤镜、脚本之类的功能。希望一些东西能够集成到那里去,有个可以测试和试验的统一环境。同时,那里面的东西也能够拿出来实际使用,不光光只是用来提取别人的东西,别无他用。
之前用的是 C++Builder 6.0 做的界面,用 VC2003 写的一些库和插件。后来发现,这样的组合越来越偏离了本身的目标,局限性太大了,很多现成的资源无法利用,所以就果断停止了进一步的开发。而且,我想玩的东西还有很多,比如换用 QT 或者 WX 写写界面;用 OpenCV 做图形图像处理;加入 Lua、Python 等等来做脚本引擎;尝试一下那些开源的 3D 引擎;甚至想换用 .NET 和 Java 来做一点东西。一直以那样的组合为中心,实在是太无聊了,而且很难把所有不同的东西都拉到一起,或者说实现一个大统一的环境本来就是不可能的。
为了实现目标,这次打算用《UNIX编程艺术》一书里提到的思想方法来重新设计。其根本手段就是:(1)应用与库分开。这就实现了一些东西集成到里面去,并且可以拿出来实际使用。打个比方就是,写完一个游戏插件,就可以拿这个库直接使用别人的资源来开发自己的游戏(所以本次设计的主要目标不是提取游戏资源,而是直接渲染游戏数据)。(2)多进程的架构。这就实现了多框架、多开发环境的问题。由于都是独立的程序,我想用什么来开发就用什么来开发,自由的很。(3)一个程序只做好一件事。这才是模块化的最高境界,给你一种豁然开朗的感觉。一个程序写烂了,可以直接扔,不会影响大局。(4)进程间通讯交互。这个才是最最重要的部分,一定要仔细设计交互协议,否则就是天下大乱。
我把项目的源代码放到了这里
https://github.com/prefetchnta/questlab ,除了用到的第三方闭源开发库外,其他都是开放源代码的。目前还没有完全重现 GameViewer 的所有功能,但是整体框架已经有点成型了。以后会不定期更新,把以前做过的那些东西逐步开源出来。还要把其他零散的小工具、小程序统一集成到这个环境里来,形成一个大统一的应用程序。