版权声明:此页版炉石传说源于暴雪公司的《炉石传说之魔兽英雄传》,只用于朋友圈娱乐及交流之用。
背景
我,一名从业近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,寻求合作伙伴和机会。我虽然能独立完成页版山炉,但短板颇多,这将限制产品的后续发展。所以我希望有更多符合“精益创业”精神和能力的朋友一起去完成一些更有意思的事情;你可以跟我一起组成团队,我也可以加入你现有的团队,只要目标一致,形式什么的就随意了。
页版山炉:
帐号:demo@ls.com
密码:123
帐号无法多人一起游玩,你如需独立帐号,请联系rudermail@qq.com或Q我377372779
牛逼啊。。。。
这个必须点赞啊
牛逼,你是我的榜样
牛就一个字
怎么玩??
好牛逼,这都做的出来,不过我对卡牌一点都不懂。。。
我也是,不知道怎么玩…………
厉害。。。
mark
<code>csdfsdg</code>
卡牌效果拆的还不够细,我觉得应该把每种基础效果写成接口 然后卡牌效果的逻辑使用DSL语言来实现,调用各种基础接口即可
然后每张卡牌设定卡牌效果即可
喔!
牛逼!
此项目已经开源:https://github.com/ruder/legend 欢迎贡献代码,批评,指正…
这个真心吊爆了!!!
厉害 太牛了 大神受我一拜!
碉堡了
@ruder 有劳作者, 请问克隆下源码后, 有哪些地方需要配置后才能在本地运行?
赞啊