KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[M] Prelude to K.O. (1)

[ 6039 查看 / 3 回复 ]

K.O. 是目前正在开发的“开放版本”汉化工具的代号 =v=
虽然目前进度连Alpha都算不上...但是还是先聊聊本工程采用的(迷之)编程架构,这样对源代码有兴趣的各位可以先有所了解,不会到时候找不到北... ^_^

--- K.O. 功能设定 ---

功能决定一切。首先就从功能说起吧。
整个工程大致期望达到的目的是: 对脚本文件中的文本进行本地化,然后再使其能够完整的在游戏中呈现出来。
前后两个部分关联比较弱,因此可以分割解决。

后面 (游戏呈现) 的部分因为功能较简单,目前已经基本完美解决。
能够实现自由选择各种语种的字体,以及将编码的文字转换到合适的代码页呈现出来;
窗口标题文字也被本地化;主角自定义名称也得到完美的支持。
实现上参考了英文化工具RLDev的部分源代码,因此也继承了它的一些优良品质:
1. 完全不需要修改游戏可执行文件 Reallive.exe
2. 支持各种版本的Reallive引擎,只需要更改配置文件;(兼容RLDev的配置文件)

但是,前面 (脚本汉化) 这一部分比较的复杂,因此目前还在实现中。
预期的功能为:
从原始脚本包开始,创建汉化工程,存放入单个数据库文件;
以"场景"(SEEN)为单位,自动提取所有文本,统一存放入数据库;
从数据库中按照场景取出原文,保存为文本文件供更改;
将文本文件中的文字作为翻译,导回数据库;
将数据库中的翻译文字引用到原始场景中,并且自动生成脚本包;
或者,也可以从别人处理过的脚本包开始,创建另一个汉化工程。


--- (迷之)编程架构 ---

因此整个汉化工具涉及到较多的功能,如脚本包的压缩解压,脚本的分析,数据库的操作,用户图形操作界面等,
我决定试用我历时N年(其实是N年未完成的 -v-),最近刚具有一定可用性的(迷之)编程架构 ....

(代号) Chobits Application Server (CAS) Architecture


浅显的讲,CAS就是一个非常模块化的程序:将一些功能单一的模块链接起来以实现一个复杂的功能。
但是区别于一般的"模块化"的是CAS采取的“链接”方式。

传统的模块化程序是将代码(或者方法,过程)通过静态或者动态的方法组合起来,然后予以执行,整个过程中传递于各个模块之间的是“执行体”(Control Transfer);
CAS则是赋予每个功能模块一个"执行体"(线程),使其能够独立响应功能请求。这样,在CAS下执行一个复杂任务时传递于各个模块之间的是"消息"(Message Passing)。

CAS架构有许多好处,其中最突出的就是很好的解决的模块之间的依赖性问题。
传统编程模式下,模块之间很容易出现依赖,对调试和维护都有严重的影响。(比如,更改一个模块的代码,导致另一个出现问题,改那一个又牵扯到其他的....)
特别是对于这种"业余"的工程,因为有的时候几个星期都不会碰,导致对旧的代码逐渐陌生,继续进度的难度加大。
有了消息传递机制和执行体的隔离,模块之间的依赖要弱得多,因此代码也更容易调试和维护。

CAS的另一个好处,就是提供了非常简单而且不易出错的多线程编程架构。
一般情况下,每一个CAS模块是由一个线程执行的,因此,模块内的代码可以按照单线程方式书写;
但是一个CAS程序,自然的就是一个多线程的程序,因此也能够利用硬件的并行执行能力。
也就是说,程序员可以(基本上)用写单线程程序的方法写出一个多线程的程序!

尽管这个工具本身不是一个很大的工程,但是因为它具有一定程度的复杂性,因此我决定利用它来对CAS的功能进行演示、试验以及调试。

------

在下一次的Prelude里面,我将着重介绍CAS的内部构造和编程接口 (自然语言,不会涉及到具体API)。
本主题由 管理员 深海蓝空 于 2007/5/13 13:28:46 执行 设置精华/取消 操作
分享 转发
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[M] Prelude to K.O. (1)

这架构...不如重新写个AVG引擎好了.
TOP

回复:[M] Prelude to K.O. (1)

楼上的正解啊,CAS就是为了这种中等规模的工程开发的。

但是,还是请改掉断章取义的老毛病。倒数第二句话说得很明白:这个程序对于程序开发者和对于一般使用者来说有截然不同的意义。
尽管这个工具本身不是一个很大的工程,但是因为它具有一定程度的复杂性,因此我决定利用它来对CAS的功能进行演示、试验以及调试。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:[M] Prelude to K.O. (1)

WinNT的服务就像此架构,system和svchost进程都是数十个线程.
消息的结构,模块(线程)的同步,死锁的避免将是实现的难点.
TOP