V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
subpo
V2EX  ›  分享发现

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

  •  
  •   subpo · 2013-12-02 13:54:08 +08:00 · 2871 次点击
    这是一个创建于 4009 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原贴地址:
    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

    帐号:[email protected]

    密码:123

    帐号无法多人一起游玩,你如需独立帐号,请联系[email protected]或Q我377372779
    4 条回复    1970-01-01 08:00:00 +08:00
    sophy
        1
    sophy  
       2013-12-02 14:02:19 +08:00 via Android
    #牛
    fox
        2
    fox  
       2013-12-02 14:50:24 +08:00
    牛逼!
    Actrace
        3
    Actrace  
       2013-12-03 21:20:00 +08:00
    为什么要用nodejs来处理重型数据库应用.
    subpo
        4
    subpo  
    OP
       2013-12-03 21:20:40 +08:00
    @Actrace 我觉得应该把这个看成实时性高的应用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.