Friday, September 25, 2009

关于《幽城幻剑录》的随便写写勿当真

这个游戏大概是不错的。据说剧情是中文RPG中最强的,这个说法可能是真的。
不过我只玩了一遍,而且也完全没有体会出剧情的好来。并不是说剧情不好,而是主线完全被复杂的支线冲淡,完全没有连贯性。
让我比较失望的是在中后期,一个台阶的地方,为了剧情大概上上下下有十几次,实在是非常的繁琐。忍了过去之后,实在不想再来第二次。
也许它的剧情确实很强,画面效果也很好,但是很多不人性化的地方阻碍了它的普及。
总的来说,网路上对它的评价也比较极端,很多人认为它是最好的中文RPG,也有很多人被不人性化的地方吓到了。
有人拿它跟95年的《仙剑奇侠传》比较,认为它远远胜过,并且认为仙剑奇侠传只是因为在一个合适的时间出现了。
实际上这并不是事实,在没有Windows和DirectX的时代,《仙剑奇侠传》的引擎非常出色,在主频仅有66MHz的电脑上就能够流畅运行,并且基本提供了足够耐看的效果和适当的节奏。而同期的另一个经典《金庸群侠传》的表现则十分糟糕,游戏的效率极为低下。而需要依赖显卡加速的Windows时代的游戏就更加完全不要想,它们不可能出现在那个时代。

Thursday, September 17, 2009

MO



20090917046_thumb20

祖国版的MO也不好买啊……涂装实在不好看……

Sunday, September 13, 2009

让引擎适应游戏的杂事

让引擎适应游戏是一件很麻烦的事情。
据说微软曾经为了一个游戏《猎鹿人》运行不了就推迟了Windows XP SP2一个测试版本的发布。当然我们这些做山寨游戏的不能跟微软比。如果你看过《Windows编程启示录》(这本书的名字听起来很高深,但纯粹是一本八卦集锦)的话,你也能体会到微软很多时候的无奈。其实Windows不是那么糟糕的系统,把它搞乱的是那些糟糕的软件。

1. 《苍龙逐日》的错误语句
看过复刻版事件部分源码的朋友应该知道我在3号指令那里写了一段注释:

//这里应该是原本z文件的bug, 如果不处于当前场景, 在连坐标值一起修改时, 并不会同时
//对S数据进行修改. 而<苍龙逐日>中有几条语句无意中符合了这个bug而造成正确的结果

这个错误实在很令人抓狂。因为它仅仅出现了三四次,而且全都是邪线。

2. 《再破菠萝》的跳转口
在内场景主循环中处理跳转口的语句是在《笑梦游记》之后才弄清楚的。原版处理跳转的逻辑实在是莫名其妙,如果能一切重新开始,那么我会选择用一个指令进行跳转,但是在复刻原版和MOD的时候,你必须去适应已有的事件。

    if ((sx = RScence[CurScence].JumpX1) and (sy = RScence[CurScence].JumpY1)) and (RScence[CurScence].JumpScence >= 0) then
    begin
      PreScence := CurScence;
      CurScence := Rscence[CurScence].JumpScence;
      if RScence[PreScence].MainEntranceX1 <> 0 then
      begin
        Sx := RScence[CurScence].EntranceX;
        Sy := RScence[CurScence].EntranceY;
      end
      else
      begin
        Sx := RScence[CurScence].JumpX2;
        Sy := RScence[CurScence].JumpY2;
      end;
      InitialScence;
      Drawscence;
      ShowScenceName(CurScence);
      CheckEvent3;
    end;

至今甚至很多制作人也没能完全弄清原版的逻辑。

3. 内存相关指令
50指令中的25和26都是内存相关指令,在内存的诸多应用被破译之后,这两个指令的相关事件也多了起来。而复刻版无疑是不能支持这两个指令的。
源码中50指令的25和26部分都是特殊处理,在26指令中有一个类似下面的列表:

          $1D295E: x50[e5] := CurScence;
          $1D295A: x50[e5] := Sx;
          $1D295C: x50[e5] := Sy;
          $1C0B88: x50[e5] := Mx;
          $1C0B8C: x50[e5] := My;
          //$1D2956: x50[e5] := Cx;
          //$1D2958: x50[e5] := Cy;
          $05B53A: x50[e5] := 1;
          $0544F2: x50[e5] := Sface;
          $1E6ED6: x50[e5] := x50[28100];
          $556DA: x50[e5] := Ax;
          $556DC: x50[e5] := Ay;

而在25指令中,情况更加复杂,因为部分指令是直接读取内存获得物品的信息。

4. 特殊子程
在没有复刻版之前,一些特殊功能的子程是通过带参数的50 43来实现的。其中最重要的应用是新的获取物品和新的对话。
在测试《笑梦游记》的复刻的时候,我发现跳转时代的执行效率非常低,后来经调试锁定问题在新的获取物品指令上。这个指令似乎是直接读内存,在DOS版中效率很高,但是在复刻版中由于执行机制变得效率极低。后来我在43指令中添加了一个列表,即如果发现要执行的子程是“获取物品”,就直接用2号指令代替,因为2号指令我扩充过功能,更加强于50指令编写的事件,更重要的是效率更高。
在猪3中的这个列表似乎更复杂了。


5. 直接执行内部子程
这个就是50 49指令。我认为在我添加的9个50指令中,49指令是最伟大的(吹吹牛)。而在我的说明书中的那个任意转换场景的例子,实际上包含了非常复杂的汇编原理。
但是相比25、26和43,49指令是绝对没可能移植的,甚至给出一个列表也是非常麻烦,因为参数的个数就是很棘手的问题。所以如果你的MOD真的使用了50 49指令,那么在不修改事件的前提下进行移植,基本上是不可能完成的任务。
所幸50 49还未传开。
下面就是50 49的源码,以此记念这个特殊时期的产物。

; 调用系统子程
_instruct_32_31_CallProcedure proc near ; DATA XREF: dseg02:0005D0C8o
pusha
mov     eax, [esp+20h+arg_4]
shl     eax, 10h
xor     ebx, ebx
mov     bx, [esp+20h+arg_0]
add     eax, ebx
add     eax, (offset set_textmode-20000h)
mov     ebp, eax
mov     ecx, [esp+20h+arg_8]
mov     esi, [esp+20h+arg_C]
imul    edi, esi, 4
cmp     esi, 0
jz      short loc_5E6A8
loc_5E698:
movsx   eax, ds:word_120000[ecx*2] ; 变量空间
push    eax
inc     ecx
dec     esi
cmp     esi, 0
jnz     short loc_5E698
loc_5E6A8:
call    ebp
add     esp, edi
mov     ecx, [esp+24h+arg_C]
mov     ds:word_120000[ecx*2], ax ; 变量空间
popa
retn

目前所有MOD的复刻版源码

包括:
《苍龙逐日》《再战江湖》《乡民闯江湖(PTT)》《茗城版》《笑梦游记》《再破菠萝》《群芳谱》的复刻时的源码。
这些复刻的版本有些并不完美,毕竟多数时候是引擎去适应游戏。如果有高手可以利用这些源码将这些老MOD变得更加完美,那应该是一件好事。
几点注意事项:
1. 所有源码均由s.weyl编写,对游戏本身的引擎部分已经说明不保留任何权利,但是MOD的原始修改者应享有每个MOD与原版不同之处的保留权利。
2. 《苍龙逐日》《再战江湖》《再破菠萝》的引擎可能错误比较多,也有些特殊修改的部分。这三个MOD是最早复刻的,当时一些算法还未弄清。完善度应是依次递增。
3. 《笑梦游记》可能存在部分错误。
4. 《乡民闯江湖》《茗城版》均使用的较新的源码,即将整个源码拆成多个文件。
5. 因我并未参与后来《群芳谱》的制作,所以并没有较新的源码。里面增加武功个数的方法有一定的参考价值。

http://www.txdx.net/thread-428021-1-2.html

Tuesday, September 08, 2009

在勇者系列中出场的变形金刚

客串出场……Takara榨取剩余价值……

首先可以看看下面这个网页,介绍比较全面。

http://www.tfclub.com/art/200408020001_5822.html

下面看看一些其他的图:

image

image image

雷神,或者翻译成顶天者,汽车人总司令。

在飞机上装履带的……这年代不是多变没法混……

image

雷神在勇者中的客串出场,情节不知道,听说是老大中的老大。头部似乎有些变化。

image

音速爆弹,雷神的小弟,也是出来客串。

image

大恐龙萨拉斯,机体的细节还是很多不同的。萨拉斯在TF系列中很没存在感……

image image

撒克巨人,这个角色很有名,现在穿了一身马甲就出来混了。怪不得是最强头领战士之一,头部可以任意换的……

image image

其实最囧的是这个……著名的六面兽……玩具设计史上的经典,被涂成了这样……

Monday, September 07, 2009

Rodimus 的形象

图片取自tfwiki.net和mamao2.cside.com。

Rodimus Prime,中文译名补天士、洛迪文等,是擎天柱之后的汽车人领袖。之前叫做Hot Rod,中文多翻译为热破(也有叫火棒、高速马力、罗德等),是一个汽车人的年轻战士。据说现在Hot Rod这个名字的版权已经不归Hasbro了,所以目前的玩具系列都叫Rodimus,只是前后缀不同,热破叫Hot Rodimus,补天士叫Rodimus Prime(日本叫Rodimus Convoy)。

没错,Rodimus的特点就是橙色的跑车或者货柜车。加上火焰涂装(其实一个货柜车涂成这样真的挺囧的……)。

不像Optimus的形象(包括动画和玩具)已经成坨成灾了,Rodimus的玩具系列还是数的过来的。

image

配音:我是个领袖!!…………(这个电子星球上哪来的布啊!)

下面是Rodimus的动画形象,非常少……

image

《The Movie》中的热破,很年轻,当时似乎担任丹尼尔的保姆(保父?)。

image

《The Movie》中的补天士,似乎变老了,这时身高也跟擎天柱和通天晓一样了(说实话,通天晓的身高一直是个问题……这人相当于擎天柱身上加了几个零件居然跟擎天柱一边高……)。

image

《Energon》中的补天士。只有这部动画里面补天士是与擎天柱地位基本同一数量级的角色。补天士是传说中的英雄,在内战中带领部分人物离开塞博特恩去寻找新的家园,而擎天柱留下来带领汽车人继续抵抗。

image

08动画,这个片的造型很美式……好吧,这是个领导……

下面……没了……

稍微提一下,补天士手臂上的轮胎在《头领战士》中的位置有过调整。

image

 

下面是玩具的形象。玩具比动画还是多些的,因为无论Hasbro还是Takara,总是出些莫名其妙的系列骗钱……

image

image

G1的热破和补天士,车型都很完美(补天士的车小了点),热破的人形还能看,补天士的……据说美国人当时对日本的设计师保密,没说这个是领导……我靠,这个形象除了枪大似乎没啥好的……而且这两个怎么都不像同一个人……

image

《Rebirth》中的目标战士热破,除了武器可以变成小人,据说模具还有细小的改良。

image

这是啥??

image

image

美版和日版的经典热破。颜色和涂装不同,日版还有部分电镀。

这个是历史上最好的热破玩具形象。

image

黑色限定版……有资格出黑色版的角色不多,还是被老美当领导看的……

image

image

钛系列,这个气势终于像个领导了。不过后面那个黑色的居然另起了个名字叫“飞天虎”(就是G1霸天虎的汽车合体),弄得购买欲都没了……

image

经典2.0,好难看……

image

Alt系列……Ford的车型,人形看起来很零碎……

image

KP系列……前面不涂成火焰还叫补天士吗……

image

Energon系列,这个造型很有气势,在整个系列中也属于优秀的。只是不是跑车了,像一个奇怪的卡车头。这是一个经典形象。

image

08动画……这次大家一起异形,不差它一个……

image

这个角色叫火区,而且……它有个红色版……这个不是补天士,只是有些像。不能是个跑车涂个火焰就是补天士吧……

以下属于黑历史……

Takara制作完《胜利之斗争》之后,又设计了很多新的变形机器人玩具,与Sunrise合作制作了勇者系列动画,很多以前TF设计中后来未使用的机体在这个系列被使用了。不止如此,后来他们连出场过的机体都拿来用,比如《胜利之斗争》中的萨拉斯,《地带》中的雷神和音速炸弹。这个影响不大,毕竟这几个角色在TF系列出场不多还都只在日本发售。后来有一个重涂六面兽的,样子非常囧……

Rodimus的一个设定确实在勇者系列中被使用过,传闻这是《Return of Convoy》中的形象,但是没有采用,而且这个系列也是只有日版漫画没有动画。由于资料稀少,在勇者系列中的动画形象很难找。不过玩具照片找到了……看了玩具照片之后,估计动画形象也没有想看的冲动了,看到也绝对认不出来……

image

这个是设计图吧,变形应该是一个消防车,你见过消防车上涂火焰吗…………

image image

image 

依据tfwiki.net的记述,这个变形的设计是来自补天士的消防车形象,但是不同的是,一个救护车变成了机体的手臂。所以没错,这个就是客串出场的补天士…………

这个系列的另一个机体与星之擎天柱很像,可以和这个“补天士”合体,合体的方式是把这个拆了,作为几个零件拼上去……