写一个游戏玩
我有几个缺点:
1、懒
2、嘴笨
3、脑子慢
4、不够聪明
5、常虎头蛇尾
但我有一个梦想:写一个游戏。
知己知彼,百战不殆。我知道自己的缺点,因此我有准备做好持久战。
虽然我一直是个游戏爱好者,但是制作游戏的念头,几乎一直没有。
其实也有。我写过一个DOS字符版的扫雷。。。写过手机版的俄罗斯方块。。。但那些都是玩票性质。
难道这次我就不是玩票吗?
字符版的扫雷,花了我2天。手机版的俄罗斯方块,花了我大概10天,大概花了一周时间做出来以后,发现自己的思路就不对,耦合性太强,调试困难,从头再写,花了3天。发现手机性能的问题以后,又花了点时间折腾,最后无功而返。
这些其实只是我的知识储备的问题。
我只是一个工匠,远不是能工巧匠,因此我需要站在巨人的肩膀上才能做成一点小成就。
现在我找到了一个开发框架Loon,还有好几个相当纯熟的手机游戏源码可供借鉴;这些就是我巨人的肩膀。
此外,我在Innovit的工作教会了我怎么用脚本语言,教会了我一点一点解析和构建一个巨大的系统;只要慢慢学习,足够坚持,蚂蚁可以啃掉一座山。
我现在的年龄也刚刚好,足够我实现自己的梦想,又不算太衰。。。没错,程序员30而衰,33岁,按理说,已经废掉了,但是在这里没有国内那么浮躁,也不需要那么多加班,似乎大家都能平静地接受大龄程序员。。。这给我一种感觉,似乎我还有能力和精力做一个自己的东西出来。另一方面,如果现在不去做,也许过了几年,自己就会给自己找各种借口了。
这事情的其他优势是,它可以一个人去做,它只和我的梦想有关,因此对成品没什么太大要求,好坏不需要旁人评判,它的目标不是为了钱,因此也没有急于求成的打算。它需要的时间和精力并不太多。
我对这个项目的信心是,我一贯有着慢慢完善的作风。看看我的博客,三年前,它还是一个很垃圾的东西,充斥着毫无意义的东西和到处转贴的东西,更新的频率也是两天打鱼三天晒网;那时候我根本不知道还有专业建站的工具比如WordPress;但是经过不断的磨合,至少我现在已经对自己的博客相当满意。
因此我的目标就是,让自己满意。我也曾经折腾了很多项目,比如夭折的手机版《炎龙骑士团》,放弃的时候,连个雏形都算不上,但是那次尝试让我思考了很多细节的问题。而看到人家相当成熟的手机源码的时候,我很吃惊于那些架构和算法。如今,我既有对细节的思考,有实践,有现成的站在巨人肩膀的架构和算法,相信至少对我而言,真的应该不会太难了。
博客,这个毫无技术含量的东西,依然花了我三年时间去适应:选择平台,购买主机,选择写什么内容,选择域名。对了,选择域名这件事情也有意思,我选择了glad2u.com,选择了wanbulei.com,每次取名也是绞尽脑汁,过了一年依然没啥感情,最后取了一个chenyi1976.com才产生归属感。
因此,对于这个项目,我也觉得我最好还是去复刻自己特别特别喜欢过的游戏,复刻,而不是从头构思一个。。。从头构思一个,到了最后只会失去兴趣,失去毅力,不知道自己想要什么;而复刻,则是所有的细节都已经烂熟于心,我说到底并不是一个特别能创造的人,倒是一个特别能怀旧的人。
那选择什么作为开始呢?
Loon框架里面并没有提供SLG的例子,而《炎龙骑士团》和《魔法门英雄无敌》无疑属于SLG。如果可以把《韦诺之战》的源码改造成Java就好了,但是我不觉得把C++转化成Java是容易的事情。
AVG我从来就没有特别喜欢的游戏。提到AVG,特别是Loon框架的那个实例,我最容易想到的是日本人早期做的OOXX游戏,有趣是有趣,但是我不想做不能拿出来展示的东西。《心跳回忆》也算AVG吧,蛮好玩的,不过还不至于好到复刻它的地步。其他的比如《美少女梦工厂》,我有一阵子生病的时候把他通关了,同样的,蛮有趣,但是还不够好到复刻它。其他还有《明星志愿》,也许是我玩的第一个AVG。其实这种游戏都类似于心理测验题,选了一堆选项以后(中途还可以看指标),重点在于最后的答案。它不像SLG,SLG的乐趣在于拍兵布阵的过程而不是最终的结果(反正肯定会赢),AVG的乐趣在于调整指标赢取结果,当然OOXX的AVG的乐趣就不在结果了,而是在于过程。
大部分构思良好的小说,如果想作为游戏脚本,都有一个致命的缺点,单线程单结局。
如果做成《Descent》那样倒是不错。但那是桌游,要求有一个界面,有旗子,有技能。
如果做成MUD类型的探索型游戏呢。打怪,捡取装备,升级,满地图乱转,击败魔王。那样就是一个全新的游戏了。
桌面游戏是我很喜欢的类型,问题是这一领域,没有特别爱不释手的,俄罗斯方块,大家来找茬,扫雷,推箱子,拼图,etc,都是很轻度不沉迷的游戏。。。也许我可以试试复刻《卡卡颂》,说实话,XBOXArcade版本的卡卡颂做得很让人失望,PC版其实还不错;但是我对这东西的兴趣也是一般(要说兴趣,我有兴趣做一个算法机器人出来,然后用它上X360联网对战,用电脑对抗人脑);顺便所收
我还得仔细想一想。或者再研究一下Loon,看看用它来做SLG的可能性。
当年我有着无穷的热情和时间去制作游戏,但是却没有能力没有技术。现在可能是我最好的时机,去尝试一个10年前不能完成的梦想。
也许可以试试复刻魔法门5的平面版?不过貌似要求太高了。其实复刻早期作品更好,因为更容易,系统更简单。比如《Heroes of Might and Magic》,1代只有4个种族,每个种族只有7种兵,建筑也少,地图更是小的可怜,战斗没有地形。(当年还有一款类似的跟风的作品,我也试玩了一把,怎么都觉得别扭,如果是现在的我,一定会总结出哪里失败了,哪里有进步;当年我只是简单地放弃了。现在回忆起来,只剩很模糊的印象了。)
其实,开发游戏只是程序员的一个分支而已。不管你喜欢不喜欢,玩过或者没有玩过俄罗斯方块,做为一个合格的程序员,你都能写出俄罗斯方块出来,这更像是一个四级上机考试题,而不是一个游戏开发。
换言之,能开发是一回事,想开发是另一回事,为了得到愿意付出多少是另外一回事。所谓的付出,是指时间,精力,甚至是经济上的付出。最慢的跑到最后。。。也许那些跑得最快的家伙早就意识到做程序员没前途。所以只剩下我,慢慢跑。跑到最后,还自我感觉良好,其实傻得要死,但是人家也说难得糊涂。
经过一天的时间的思索以后,我认识到这种事情难度太大,虎头蛇尾的可能性为80%,因为我干脆连虎头都不要了。
决定做一个卡卡颂的算法程序出来。我在联机XBOX Live的卡卡颂的时候,总是想,我要是自己搞一个程序出来,算法做得好,肯定玩得比我好,如果算法足够牛,胜率一定大得很。
这事情促使我上网找了一下有没有现成的项目,结果发现了3个Java的。
一个在GoogleCode上;一个在Java.net上;最后一个的完成度最高,也最牛B,可惜不是开源项目。
在玩了一把界面以后,我选择了最后一个,闭源不要紧,关键是作者没有加混淆器,所以用java.decompiler直接反编译。出来的代码经过我几个小时的修改(主要是1,Label有问题,2,Enum有问题,3,有些参数丢失或者出错),终于可以编译了,而且可读性还不错。放到了这里:http://chenyi1976.com/code/JCarcassonne.zip
今天花了点时间好好地读了一下,感觉稍微有点眉目了;顺便学了不少小东西。看下来的感觉就是写一个卡卡颂要比写一个俄罗斯方块难很多。
一个小但是很恼火的问题是,Socket连接不能成功。。。查了半天也不知道为什么。。。
JCarcassone使用了GridBagLayout和JLabel来实现界面的绘制,所以就避免了自己绘制界面的复杂性,但是也让界面很难看,扩展性也不好,有时间应该用Loon的框架重新写一遍界面绘制的部分。
法律上当然有问题啦。反编译人家的非开源的代码,很不道德。不过我也没有打算牟利。我打算继续完善它。唔。。。貌似这个理由也不对,劫富济贫也是劫。。。不管了。
最后,看别人的代码真的对提高自己的水平很有帮助。我不是那种自己能够发明创造的天才,所以拿来主义对我而言,更为重要;学习了,搬到自己的程序里。虽然起步晚,但是玩得蛮开心。现在想到大学没有报计算机专业真的是太失策了。
还是挺怀疑自己到底能做到什么样的程度。不过动手了就好。
文章的脚注信息由WordPress的wp-posturl插件自动生成





















居然写了3000多字,自己都忍不住佩服自己一下,沙发自己坐了。
[回复]
你上班太闲了。。。
[回复]
admin 回复:
十月 22nd, 2009 at 8:34 上午
我一天上班10小时耶。这3000字是我两天的成果,不是一天写完的。每天下班之前都想写一点东西。写东西和写程序不一样,很放松,也属于文理切换,很舒服。
[回复]
了解桌面游戏的好地方!中国桌游网:http://www.like52.cn/
[回复]