周末过了两天黑白颠倒的日子
都是游戏给害的。
一开始迷上 Puzzle Quest ,装了个 PSP 版玩,一发不可收拾。初看起来就是一个 Bejeweled (钻石迷情) 的改版,很多手机上都装的小游戏,我见过许多 mm 喜欢玩。但是这次人家硬是做了极大的创新,变成了一个 RPG 。
职业、魔法、任务、升级、打怪、抓宠、合成装备,一个都没少。甚至战斗起来比大部分粗制滥造的网游有趣多了。消除方块也变的有意义,不再是比谁消的快,而是给不同的方块赋予了四系魔力、经验、金钱、攻击等不同含义。在对战的环境下,可以发挥更多的策略。与传统 RPG 不同,在 Puzzle Quest 里低等级玩家打败高等级玩家也是有可能的,即使级别相差很大而 RP/技术 足够好的话,总能有一丝胜利的希望。
把方块游戏玩出这种花样来,就不简单的等同于 PUZ+RPG 的组合了。相比我这几年经常听到的,“让我们把 XXX 类型 和 RPG 结合起来放到网游中”,“在 MMORPG 中加几个小游戏吧”,这才是真正的创新。而为啥我们的策划就如此没想象力呢?
好吧,没想象力就没想象力,退一步那就抄去吧。其实这个游戏抄到任何一个休闲游戏平台上都是绝对大作了。鉴于它拥有无数 RPG 元素,可以做角色培养,应该是很好赚钱的呢。:)
就这样,我用 Puzzle Quest 打发了周五的夜晚,一直睡到周六下午。
给同事推荐 Puzzle Quest 的同时,也有人给我推荐了 PSP 上新出的《勇者别嚣张》。从画面初看起来就是一个简化版的《地下城守护者》,但玩起来感觉却不太一样,只能说游戏目的类似吧:扮演魔王驱使怪物杀掉来进犯的勇者。
《勇者别嚣张》是全日文的,还尽是假名。(其实学过几天日语的人就该知道,其实片假名的词大多数就是对英文单词的音译,花两天时间背一下,外加日语中大量出现的汉字,玩日文游戏其实没多少语言障碍。)不要被菜单和游戏对白吓到。其实这个游戏的操作极其简单,就是方向键加一个挖掘键便可以玩了。
在今天,游戏/软件菜单越来越复杂的今天,我们这些游戏制作人应该好好反思了。复杂的游戏规则应该隐藏在背后,交给玩家用户的应该是最简单的交互接口。
这个游戏也非常耐玩,我周末打了一天,到第八关那个金色的勇士冲起来后就抗不住了。这激起我无比的好胜心,计划在下个周末通关。
《勇者别嚣张》的画面非常复古,不仅是基于 2d 平面 Tile 的,精灵的形象也是极其简陋的像素图。那个主角魔王的造型,立马让我联想到 FC 上的最终幻想一。勇者则是经典的 DQ 里的风格。
这个画风让我想起前些年有朋友推荐我玩的 NetHack 。一个发展了 20 多年,在今天仍旧在向我们展示 Ascii Art 的游戏。
当时我正着迷于《不可思议的迷宫》,有朋友建议我看看 NetHack 。NetHack 的前身是 rogue ,rogue 在《Unix 编程艺术》上也提到过,就是一个迷宫探险游戏。这个游戏影响之深远,以至于大量使用键盘热键交互控制的 console 软件都被称之为 roguelike 。
《不可思议的迷宫》应该就是这类游戏的直系后代。另外一些著名的游戏,如《Diablo》应该也算远亲,不过 Diablo 的自动生成迷宫表现的就远没它的祖先好了。
当年我没太把 NetHack 玩进去,今天心血来潮又当了一个试试。其实我的主要目的是想读一下源码,看看它如何自动生成随机迷宫和迷题的。这些代码早在 1985 年就成型了,还是很古老的 C 语言风格。但是设计人员的想象力却不比今人差。今天还有多少游戏程序员把心思放在“如何随机生成更好玩的迷宫”这样的题目上?
可惜 NetHack 的源码写的时候没考虑过支持中文,它的底层 API 是硬把字符一个字节一个字节写到 console 屏幕上的。中文一个需要两个字节,自然就不能正确显示了。
不支持中文可能是这个游戏一直没有爱好者去汉化的原因之一。另一个原因是其中有数以十万字的英文文本,用到大量普通字典也查不到的奇幻小说中才会出现的名词或缩写,工作量太大吧。
我试着做了下程序上的汉字支持,第一步是让其可以显示汉字出来。这里用了个 work around 的方法,因为字符串显示肯定是依次调用 xputc_core
函数。我在函数里检测字符的 ascii 值,一旦大于 128 就记录下来暂时不于显示。等下一次调用时,把两个字符连接起来一次调用 write console 的 api 。
第二步是做字符串替换。因为游戏逻辑都直接写到了源文件里,或是用一些代码生成数据。所以许多地方做一下字符串的汉化即可。我原本想把一些不熟悉的名词替换成汉字以便自己游戏时不用再查字典。后来发现,NetHack 里大量使用自生成代码,有的串该成非字母后会不太正常。这个时候就需要改些代码了,不过也不算太麻烦,毕竟人家程序写的很清晰,注释也很详细。
还有一些地方会成字符串中提取字母做游戏里用到的热键,直接换成汉字,游戏中就激活不了热键了。最终我保留了英文字符串,在数据结构中增加了中文字符串的字段,修改源码,让其在显示的时候调用中文信息。开源还真是个好东西啊!:D
不过以上也只是一些业余爱好,我已不是学生时代的我。那个时候有大量闲余时间做这些。
对 NetHack 有兴趣,并想继续汉化的朋友可以和我联系。我可以私下讲述一下自己对 NetHack 源码的理解,和做汉化的思路,节省汉化爱好者们的时间。
btw, 假如能把 NetHack 套上一个现代游戏的漂亮外壳,并修改操作方式让其适应现代玩家,我想它依旧拥有万人迷的魅力。
Comments
Posted by: keigoliye | (13) July 19, 2010 02:02 PM
Posted by: mm | (12) April 1, 2009 11:01 PM
Posted by: 猫 | (11) May 7, 2008 10:44 PM
Posted by: 痕 | (10) January 27, 2008 09:01 PM
Posted by: Anonymous | (9) January 25, 2008 04:19 PM
Posted by: xtpebee | (8) January 23, 2008 10:47 AM
Posted by: lulu | (7) January 21, 2008 06:40 PM
Posted by: Anonymous | (6) January 21, 2008 05:56 PM
Posted by: orz | (5) January 21, 2008 02:18 PM
Posted by: Cloud | (4) January 21, 2008 02:01 PM
Posted by: hacker47 | (3) January 21, 2008 12:56 PM
Posted by: func | (2) January 21, 2008 12:46 PM
Posted by: 江心 | (1) January 21, 2008 09:15 AM