[牛] 看到node社区有人99小时做了一个《炉石传说》demo

2013-12-02 13:54:08 +08:00
 subpo
原贴地址:
http://www.cnodejs.org/topic/529c1366a6957a0809485f3d#529c1fa2a6957a08094a0fbe

------

版权声明:此页版炉石传说源于暴雪公司的《炉石传说之魔兽英雄传》,只用于朋友圈娱乐及交流之用。

背景

我,一名从业近7年企业IT人士,基情无限,不甘寂寞!在前不久曾经利用业余时间用.net开发过小众游戏《一屁闹三国》;上个月得知炉石貌似大火,便继续操刀用新学到nodejs开始山寨之,敲敲打打一月,初版出来了,地址附在文章最后了。

10月底,那时我刚接触到炉石传说,便非常感兴趣。我当时还没有激活码,只能通过看攻略视频来了解,但仍如痴如醉。当了解到大部分规则后,便有想做个页版的想法,于是便开始了近一周的评估工作。

11月初,评估工作基本结束,我得到了一个近125小时内可以完成的功能清单,感觉只占了1月的业余时间,代价尚可,但最后决定一试。

在实现技术上,我并没有选择我一贯擅长的.net,而是使用新了解到的nodejs,这是一个有极大风险的事情,很可能让我没办法在限定时间内完成任务。于是我又花了两天时间评估了nodejs,发现风险也并没有开始想的那么大,而nodejs在即时通信和游戏方面也有优势,也许这个风险值得冒。在决定使用nodejs后,我从我的功能清单上再移除了几个小功能,留点时间应对新技术可能出现的问题。

一切确定,就开始开发了。

炉石传说是一个卡牌游戏,游戏玩点更多的是卡牌的个性和数量,所以卡牌效果的是这个游戏的核心。如何能尽快地实现高达400多种卡牌效果,这个在评估阶段我并没有想得很清楚。那时得到的模糊结论是将效果进行拆解分类各个小颗粒,然后不同的卡牌选择这些小颗粒进行组合即可。

我在花费了近二十个小时对效果拆解后,我发现原来的方案可能是错误的,又或者原来的方案是对的,但我的拆解思路是错的。总之,我浪费了二十个小时无静止不前!这是很纠结的事,我相信大家在开发的过程也一定遇到这么糟心的事。

这时我应该怎么办?

在当时最坏的解决方案是每个效果都单独实现,这样思路清楚,但实现上会比计划需要更多的时间。但有更好的方案吗?用来思考更好方案也需要时间,我需要将更多时间用来去思考更好的解决方案吗?又一个糟心的事!

其实你会发现,这些都是大家平时遇到的事,只是可能抉择压力没有我这边的大。我最后的结论是继续花2个小时思考更好的方案,但很遗憾,我还是没想到最好的解决方案,于是采用了最坏的方案,对400多的效果单独实现。

11月20号,这时我还在实现卡牌效果,还差100多张。项目进展得不顺利,进度已经延误不少,这时我已经开始担心我是否在规定时间内完成了任务了。我需要重新思考,在剩下的时间我能完成什么,应该继续放弃什么来达成最小功能可用的版本。

最后,我决定放弃这100多张牌的效果实现,而先将每个职业选一套基本牌,让每个职业都可以对战起来。

11月23号,我已经完成了炉石传说的练习模式,即是每个职业都可以跟电脑对战。当然电脑AI都是非常粗糙的,和人工智能什么的完成不占边,但因为练习模式的完成,给了我很大的信心,因为我知道我的山炉work了。

24号,我实现了对战模式,让玩家可以对战,便拉了几个《一屁闹三国》的老玩家过来作小白鼠。

因为nodejs是新技术,在玩家对战中BUG不断,我至到27号才将对战稳定下来。这时还剩下3天,也就十几个小时的开发时间了。还有竞技模式,我的收藏,卡包,牌店等功能。我怎么办?

理想是丰满的,现实是骨感的。在残酷的现实中,我只能将实现其中一个功能,而将其它三个暂时抛弃。最后我还是决定实现我的收藏,让大家可以组牌玩起来先。其中功能只能以后再开发了(如果你进去发现这三个功能已经实现了,那说明是我之后补的)

12月1号,回去看看我1个月以前的功能清单,笑而不语!因为是业余时间,所以还要时不时地受到我那2岁半儿子吞噬,但让我欣慰的时,尽管几个功能没实现,但目前已然是一个可用的最小功能版本,你可以组你想要的套牌和其它玩家对战。

12月2日,也就是现在,我开始写下这篇文章,和大家一起分享我的个人开发心路。

山寨一词目前已极具深意,但我还是选择做了,我做这件事的目的主要有两个:

1,展示下符合“精益创业”的精神和能力。这个山寨炉石传说之网页版(简称页版山炉)从技术上来讲并不算最好,相反还有很多缺点,同时我也坚信有很多人能比我做的更好。但它耗费资源只是我本人的一个月的业余时间,单就这点来说,我还算擅长利用现有资源在指定时间内完成一件产品。

2,寻求合作伙伴和机会。我虽然能独立完成页版山炉,但短板颇多,这将限制产品的后续发展。所以我希望有更多符合“精益创业”精神和能力的朋友一起去完成一些更有意思的事情;你可以跟我一起组成团队,我也可以加入你现有的团队,只要目标一致,形式什么的就随意了。

页版山炉:

网址:http://ls.ipinsg.com

帐号:demo@ls.com

密码:123

帐号无法多人一起游玩,你如需独立帐号,请联系rudermail@qq.com或Q我377372779
2885 次点击
所在节点    分享发现
4 条回复
sophy
2013-12-02 14:02:19 +08:00
#牛
fox
2013-12-02 14:50:24 +08:00
牛逼!
Actrace
2013-12-03 21:20:00 +08:00
为什么要用nodejs来处理重型数据库应用.
subpo
2013-12-03 21:20:40 +08:00
@Actrace 我觉得应该把这个看成实时性高的应用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91477

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX