冒险解谜游戏中文网 ChinaAVG

标题: 魔法师西蒙5初步汉化分析(2010.2.28 第2次更新) [打印本页]

作者: shane007    时间: 2010-2-28 09:35
标题: 魔法师西蒙5初步汉化分析(2010.2.28 第2次更新)
最近看了一下魔法师西蒙5这个游戏,发现这个游戏也使用了Sqlite3来保存一些游戏数据。 # G, x0 ?8 |( {2 @2 Z* O0 @. }
german.meta和resources.meta这2个文件都是Sqlite3格式的,我们可以用以下这个工具来打开修改。
' F( b, M# O$ g4 A( B7 F- T( q/ [https://www.chinaavg.com/read.php?tid=20557
/ E! g4 |9 S  y- w* y其中的几个字段分别对应了包文件index,文件大小和文件在包文件中的偏移量,所以制作解包器应该很容易。 7 K4 a' o6 Y6 m7 _6 f5 E  ]

6 k9 k: R7 h  s' ~/ ?4 V' v0 c, D7 R在文件名表里面,我们发现了在python/目录下面有好多游戏的.py脚本,暂时还没有发现游戏的字幕。 8 D& y7 R- d# L) Q- R5 F( Z- M
我把python/adventure/dialog.py文件手工解了出来,让我们来看一下它头部的注释。 + Z! ~' z7 Y& U. i& _* K

  {0 O6 C5 [* D* \! x5 u  c"""Module to construct, manage and play dialogs.
" S  h" N# U# b' S- \/ S, U. v1 q' I- d
9 x/ Q, \+ V' @. n8 H" PThis modules provides the following classes: # E3 b% |- R2 _7 A& C6 u5 f
" O5 D- F4 P0 u) e% w3 Q
Dialog_element - Basis class for all dialog elements. Not to be used directly, use Text or Choice
2 _, m' Y" f! R, @instead. ! i5 f6 i% S3 Y0 x- v0 W5 B# q& q

+ r1 u% p& h& P& i7 {& \$ eText          - This class represents a single text in the dialog (including texts that are part of
0 |. O2 ~0 a! ?, }a choice) 2 w* T3 p% V& w" {1 ^4 a2 i
; M, S" X8 |% S
Choice        - This class represents a choice in the dialog. It usually has several Text elements + Y% T& x: v) V1 ~9 r1 r) `
as children. This childrens are the texts that the player can choose from. The Choice itself is a
& _* d* e, T8 }6 }3 v! }/ ssilent element. ! V* y' q& r  A! a: C4 j/ b9 ?

8 k5 ?1 O# m9 e- V' s' LDialog        - This class represents a single dialog. A Dialog consists of several Dialog_elements % ?# j) x) A  }
which are connected with each other in an arbitrary graph. : I/ b( j; v$ |- u; P+ E. W

# D  g* `- f" K. ^6 }Dialog_system  - This class manages and plays Dialogs. / \( f1 ~) p" I% I% G* Z" D1 u
: O6 f' V9 L, w8 t( U+ l3 i
The classes in this module interact with the text database. 0 b' y/ V: D, y2 t
The id used for a Dialog_element is also used to find the appropriate text in the text database when 6 Z# h$ v5 D: `* W1 L
the Dialog_element is displayed. (i.e. the Dialog_element id and the id of the text in the text - {; {" X9 X2 n& S3 i: V  A, q2 r
database have to be identical for all instances of class Text).
" M: g9 u% I$ W& \"""
$ m) X8 h" R1 L5 Y7 N7 A
1 c4 P, @7 H2 x我推测,在包文件里面还有一个存放字幕的文件,说不定也是SQLITE3格式的,现在由于还没解包,还不清楚。 1 B# M+ S0 l7 S# o6 M7 R
另外,还有一个发现在文件名表里面我们发现了一个文件名python/grandmasboy/dwk5_graph.py。
1 H+ b5 q6 b4 N: j* [* k我想起了前不久刚实现汉化的狂野小子5这个游戏,它也是采用了SQLITE3数据库的。
; n; T& k8 h/ P; p- Ihttps://www.chinaavg.com/read.php?tid=20585
/ ~4 Z; K# {& g. ]我没有猜错的话,这2个游戏应该是同一个游戏公司开发的,上面的那个文件应该是前一个游戏遗留在游戏引擎里面的东西。
( I. J7 I  X- ]狂野小子5字幕是utf-8的,已经实现了汉化,也许我们能找到一些相似点来实现汉化。 ( [3 [5 X# q  u" V0 a
暂时分析到这里,期待有热心的朋友把解包器做出来,以便于进一步研究。
" I! Y& x. s6 X$ n) ]% ^5 T放上2个sqlite3格式的文件和dialog.py共研究备用。   \+ v8 S; {- _8 H; D( v7 P
[attach]15347[/attach]
$ [9 r0 t; ~$ f* R) q6 i* a2 e) _$ j1 w1 [+ y5 X3 q
----------------------------------------------------------------------- 8 {" M6 Y# x! P
2010.2.28 第1次更新 ! v- Q, G' T( C& R% C8 n
我在resources.d017中检索font,发现了以下的语句,这和狂野小子5几乎是一样的,应该也是用系统字库的。
, p& }# W& P4 g; O2 z0 A  Iself.__cairo_context.select_font_face("Tahoma", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD) 8 W, M, u) y6 Q! s# _0 j  ]& y
所以,我感觉这个游戏的汉化希望很大,接下去就是解包后寻找字幕文件了。
0 f2 b2 Z2 V) e. ^( S----------------------------------------------------------------------- 7 L- C7 p4 @3 X/ n! i! B7 W, A
2010.2.28 第2次更新9 q' u, \' y. l9 W4 Y% D8 B0 G
我猜想这个游戏的字幕文件名也许和狂野小子5是一样的。! \! {* N% r8 e) N, n4 z, `/ |
我用sqlite3的工具打开german.meta,果然发现了一个german/text_db文件。' E- w2 J. |0 Y- @' I$ C4 k1 W
这样的话,应该用同样的方法就可以把这个游戏给汉化了。
: B; l2 w7 S7 h5 P9 N& t# n等有时间再来做最后的试验。
作者: shane007    时间: 2010-2-28 09:52
2010.2.28 更新
作者: shane007    时间: 2010-2-28 14:22
2010.2.28 第2次更新




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2