炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多。

在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比较差等问题。

当然,除去领域专家之外,很少人对于一个新的事物可以在一开始就把握住整个核心业务。

接下来讲讲整个程序的构造:

Card类库:将整个业务逻辑封装在里面,包括了服务器和客户端的通信逻辑。通信协议的编码和解码。现在是为了炉石定制的,以后想改写成更加通用的。

CardHelper:一个辅助程序,例如一些简单的单元测试,从Excel读取卡牌信息保存为XML等等

火炉服务器:一个简单的服务器

炉边传说:一个简单的客户端

程序最难的部分是理清楚一个客户端和服务器的通信流程,以及,各个模块的职责。

1.(本方客户端)本方使用一张手牌

2.(本方客户端)GameManager分析这种手牌的作用

3.(本方客户端)如果需要 抉择或者需要指定施法对象,则返回UI获得需要信息(UI和GameManager之间,使用delegate通信)

4.(本方客户端)使用法术的时候,将法术分解为效果,将法术名称记录到使用法术的日志(ActionList)

5.(本方客户端)法术模块进行施法动作的逻辑计算,修改本方的对象实例,将法术效果记录到使用法术的日志(ActionList)

6.(本方客户端)将法术的日志传送给服务器

7.(对方客户端)获得法术的日志

8,(对方客户端)通过法术名称,告诉用户被使用了法术

9.(对方客户端)根据法术效果修改本方的对象实例(这里没有逻辑计算,单纯的根据日志修改对象)

从整个游戏流程上说,大概是这个样子的

整个炉石的核心部分是法术效果

法术的卡牌,随从的战吼,亡语等等都可以看做为法术效果。

对于法术的分解,分解为最小单元则是最重要的事情。

例如:奥术飞弹 随机对目标发动次攻击,每次1点伤害

这个法术在分解为原子法术的时候变为  3个原子法术效果

随机对目标发动次攻击,每次1点伤害

每个原子法术的效果实施之后,都必须进行整个战场的再计算。

下面是整理的法术表格

希望有人帮助我整理资料,一个人力不从心了

不知道有人愿意为我开发客户端吗?服务器和核心类库的开发,我来完成,希望有一个对于客户端和美工比较在行的朋友,开发一个客户端。

C#的代码,可以考虑以后移植到Surface上去,或者通过Mono移植到Liunx去。

考虑到版权问题,可以做成三国主题的卡牌游戏

源代码:https://github.com/magicdict/MagicMongoDBTool

Card/Card Helper/火炉服务器/炉边传说   4个目录就可以了,其他的是MongoDB的项目源代码

考虑到以后用MongoDB做日志维护,暂时先放在一起管理了。

炉石传说 C# 开发笔记 (续)的更多相关文章

  1. 炉石传说 C# 开发笔记(6月底小结)

    炉石传说的开发,已经有30个工作日了. 关于法术的定义方法,有过一次重大的变更:法术效果是整个炉石的核心,正是因为丰富的法术效果,才造就了炉石的可玩性. 原来构思的时候,对于法术效果没有充分的理解,所 ...

  2. 炉石传说 C# 开发笔记

    最近在大连的同事强力推荐我玩 炉石传说,一个卡牌游戏.加上五一放一个很长很长的假期,为了磨练自己,决定尝试开发一个C#的炉石传说. 这件事情有人已经干过了,开发了一个网页版的炉石,但是貌似不能玩... ...

  3. 炉石传说 C# 开发笔记 (源代码整理公开)

    源代码已经整理过了,去除了不需要的项目. 注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下. GitHub地址 卡牌XML文件的做成:(Git上面是没有XM ...

  4. 炉石传说 C# 开发笔记(BS上线尝试)

    昨天买了一个月的1G 1核的服务器,由于不是新用户,所以没有享受到阿里的6个月免费的优惠. (阿里脑残,为什么不对于续费或者升级免费呢?) 在服务器的通讯上面已经OK了,完全绕过了ASP.NET,就是 ...

  5. 炉石传说 C# 开发笔记(BS模式Demo)

    原来这个项目,一直想做成CS模式的,BS模式对于炉石这样的游戏来说比较困难. 暴雪到现在也只出了 Windows 和 iPad版本的炉石,最大的问题还是在于如何在小屏幕下,实现最佳的客户体验. Win ...

  6. 炉石传说 C# 开发笔记 (法术篇)

    炉石的设计,最核心的内容是法术效果. 法术卡牌,无疑是法术的集中体现,但是,法术效果除了在法术卡牌之外,也不除不在. 随从的战吼,亡语,奥秘的揭示等等都是法术效果的体现. 法术卡牌在炉石里面有很多种( ...

  7. 炉石传说 C# 开发笔记 (初版)

    法术资料说明 1.资料的准备 从GitHub上面获得的工程里面,是没有XML卡牌资料配置的,这个是需要你自己生成的. 打开炉边处说的客户端 然后按下  卡牌资料生成 将炉石资料文件设定为 Github ...

  8. 炉石传说__multiset

     炉石传说  Problem Description GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说.但是传统的炉石传说对于刚入门的GG学长来说有点复杂,所以他决定自己开发一个简化版 ...

  9. fzu Problem - 2232 炉石传说(二分匹配)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2232 Description GG学长虽然并不打炉石传说,但是由于题面需要他便学会了打炉石传说.但是传统的炉石 ...

随机推荐

  1. 博文写作——摘要&摘要图标

    问题描述: 写博文的时候,一个比较好的习惯就是在博文的开头用简短的文字介绍一下本篇博文的大致内容.在博客园系统里面,如果博文没有在指定的地方添加摘要内容,那么系统会自动截取博文的开始部分作为摘要.如下 ...

  2. EF架构~CodeFirst数据迁移与防数据库删除

    回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的, ...

  3. Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本

    Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本 RC=Release Candidate,含义是"发布候选版",它不是最终 ...

  4. jQuery学习-打字游戏

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  5. 转 - ubuntu apache2下目录结构

    ubuntu apache2下目录结构 原文:http://blog.csdn.net/jibcy/article/details/8060651 在Windows下,Apache的配置文件通常只有一 ...

  6. java 中获取2个时间段中所包含的周数(股票的周数->从周六到周五)

    Calendar 类中是以周日为开始的第一天的,所以Calendar.DAY_OF_WEEK为1的时候是周日. 在股票中有日K 周K和月K的数据.  在此之中的周K是指交易日中一周的数据,周六到周五为 ...

  7. java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),

    建立exception包,建立Bank类,类中有变量double  balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount ...

  8. Jetty 服务器的知识

    Jetty 服务器的知识 也许你还没有听说过这个Jetty服务器,不过它确实是一种比较轻量级的Java服务器,和Tomcat一样,专门解释JavaWeb程序的服务器.因为在之前学习Java Web 的 ...

  9. LigerUI学习使用

    LigerUI有如下主要特点: 使用简单,轻量级 控件实用性强,功能覆盖面大,可以解决大部分企业信息应用的设计场景 快速开发,使用LigerUI可以比传统开发减少极大的代码量 易扩展,包括默认参数.表 ...

  10. css margin

    css中margin边界叠加问题: 看个同方向和异方向margin重叠现象: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti ...