冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2010-2-28 09:35
标题: 魔法师西蒙5初步汉化分析(2010.2.28 第2次更新)
最近看了一下魔法师西蒙5这个游戏,发现这个游戏也使用了Sqlite3来保存一些游戏数据。 - \. E* N( j2 I4 g5 ]
german.meta和resources.meta这2个文件都是Sqlite3格式的,我们可以用以下这个工具来打开修改。 ) i  s8 d" Z0 F+ v! m1 @1 Y
https://www.chinaavg.com/read.php?tid=20557
7 f: ]  c  S: Z/ V- x8 S其中的几个字段分别对应了包文件index,文件大小和文件在包文件中的偏移量,所以制作解包器应该很容易。 . n) C* O/ X: X9 H7 ]$ A  X
+ H5 |. z  `6 N& |
在文件名表里面,我们发现了在python/目录下面有好多游戏的.py脚本,暂时还没有发现游戏的字幕。 1 b* y- k9 G4 J/ n2 W/ L
我把python/adventure/dialog.py文件手工解了出来,让我们来看一下它头部的注释。
" g  B* r2 B2 Q8 J" g1 O* \2 P8 Q( C5 q8 |* F  z
"""Module to construct, manage and play dialogs. ! f  G3 {% o$ B& i6 R

" ~3 y6 g( v2 ?7 _) o- cThis modules provides the following classes:
+ I0 b; m& T& c# S
' v4 }( D" l8 `7 O- O( D! E. B9 w" sDialog_element - Basis class for all dialog elements. Not to be used directly, use Text or Choice
' N$ e: V" M& C: t. ginstead. ) N4 Y/ J/ b  f* F# M" [
! q+ F* o* v9 Z- q2 e1 Q
Text          - This class represents a single text in the dialog (including texts that are part of 3 |+ Y9 z. a3 v0 O' t7 w8 p: J& y
a choice) * [# m" s, F# w1 s; j

& E& j; X" a( `) jChoice        - This class represents a choice in the dialog. It usually has several Text elements . V/ }% b3 ~) k, z3 o* N) c
as children. This childrens are the texts that the player can choose from. The Choice itself is a + g. T, P- p+ Y  J7 @$ J& }
silent element.
3 H9 @5 C) W6 K+ C5 m
, l- q# b& Y) w) A  |8 T8 \Dialog        - This class represents a single dialog. A Dialog consists of several Dialog_elements - D' c+ S8 C9 t! [& Y: W; V
which are connected with each other in an arbitrary graph. + T0 x; J, \8 g+ M4 f8 v# C
1 Y! w7 J9 [4 E, o& |- Q
Dialog_system  - This class manages and plays Dialogs. 4 K* Z3 u1 M' Y$ G9 O% j) R# I; _2 R

7 ]. ?1 P4 g& E0 \# N6 nThe classes in this module interact with the text database.
4 g) x4 W+ _  c9 [6 m; KThe id used for a Dialog_element is also used to find the appropriate text in the text database when # q  C  L- z' k5 R0 A! r5 R
the Dialog_element is displayed. (i.e. the Dialog_element id and the id of the text in the text 9 B1 u- Y6 h% I( N( L
database have to be identical for all instances of class Text). ' p2 W8 l- z. r. t
""" 9 L7 D! p& w+ ^& p

3 k# C+ @) M/ h5 o6 M9 E5 v我推测,在包文件里面还有一个存放字幕的文件,说不定也是SQLITE3格式的,现在由于还没解包,还不清楚。
, Q% S4 z9 I  F另外,还有一个发现在文件名表里面我们发现了一个文件名python/grandmasboy/dwk5_graph.py。 # t! U9 V3 a, a4 @' C/ \4 }: z
我想起了前不久刚实现汉化的狂野小子5这个游戏,它也是采用了SQLITE3数据库的。
& K; d; Z0 X" S$ c* k) `) ~https://www.chinaavg.com/read.php?tid=20585
' N7 i' E4 x8 x8 d$ v我没有猜错的话,这2个游戏应该是同一个游戏公司开发的,上面的那个文件应该是前一个游戏遗留在游戏引擎里面的东西。
- s7 J8 D, U3 R狂野小子5字幕是utf-8的,已经实现了汉化,也许我们能找到一些相似点来实现汉化。
& E5 {' F5 P% f# q- [9 N暂时分析到这里,期待有热心的朋友把解包器做出来,以便于进一步研究。
, {2 R- h' y% K9 i! N" [" |' d放上2个sqlite3格式的文件和dialog.py共研究备用。 3 A( _* }( J3 ?9 C- Q
[attach]15347[/attach]
( |+ A# R, D; @. S: q% m( [, r
: r0 P( d; k+ `8 [! N% ]: i& |0 \----------------------------------------------------------------------- 1 A; W# E  N# V. y
2010.2.28 第1次更新 - A# w6 y% d7 h/ w
我在resources.d017中检索font,发现了以下的语句,这和狂野小子5几乎是一样的,应该也是用系统字库的。 " _! T# v% F; ?) `2 A
self.__cairo_context.select_font_face("Tahoma", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD) * f' R$ Q. J5 [& ^4 I
所以,我感觉这个游戏的汉化希望很大,接下去就是解包后寻找字幕文件了。% W! U* C" t6 K8 _! t& v4 C
-----------------------------------------------------------------------
& C$ D' C3 v0 \% Q) y- ^  P3 @2010.2.28 第2次更新
" W4 H6 {) J' d/ i% V我猜想这个游戏的字幕文件名也许和狂野小子5是一样的。7 R9 a' }+ F1 f0 `
我用sqlite3的工具打开german.meta,果然发现了一个german/text_db文件。! R! M- E0 {: d# l7 [6 z
这样的话,应该用同样的方法就可以把这个游戏给汉化了。
: B! U% g2 p; h等有时间再来做最后的试验。
作者: 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