炉石传说 C# 开发笔记(6月底小结)
炉石传说的开发,已经有30个工作日了。
关于法术的定义方法,有过一次重大的变更:法术效果是整个炉石的核心,正是因为丰富的法术效果,才造就了炉石的可玩性。
原来构思的时候,对于法术效果没有充分的理解,所以只将效果数据做成了常数,例如 造成5点伤害。
随着更加深入的解除,发现还有 毁掉你的武器,对所有随从造成武器攻击力的伤害,这样的话,效果是一个 表达式。
然后考虑到,有些追加效果,例如,对某个随从造成2点伤害,如果这个随从没有死,则抽一张牌,
这里就牵涉到了根据条件追加效果的处理。
同时,德鲁伊的抉择系列,有的是主动让用户选择效果,有的是根据战场形势自动计算使用效果,这些也是原本没有考虑到的。
经过权衡之后,将数据定义表格进行了重构。
(旧的法术定义)

(新的法术定义)

新的表格对于法术的定义更加详细具体,每个种类的法术都有自己不同的字段。
同时在法术的使用流程上,也加入了更多的思考,并且将这种思考落于设计书。先进行了设计,然后将成熟的设计转化成代码。
对于炉石这样流程复杂,规则诡异的东西,一定要彻底做好设计!!设计的时候发现问题,修改成本是1,开发的时候修改成本是10,测试的时候修改成本是100

接下来的一段时间,大概截止到6月底,将是做单体测试的时间。将整个架构进行必要重构后就要进行测试了。
对于代码的重构,包括对于名字空间和代码目录的重构,花了一些时间整理了名字空间和代码结构,让正确的代码文件放在争取的地方。
让正确的方法出现在正确的类里面。Engine是总的空间名称,下面有Card,Effect,Client,Server等子空间。

炉石的测试,最难的就是对于结算的测试和规则的测试。平心而论,炉石的结算规则还是非常模糊的。
1.如果奥术飞弹的第一发将一个随从打死了,随从的亡语是召唤一个随从,那么,这个时候进行召唤操作吗?召唤出来的随从也是奥术飞弹的目标吗?
如果是的话,每一个奥术飞弹的结果都要结算,如果不是的话,3发结束后进行结算。

如果是全体型的烈焰风暴呢?
肯定是对所有随从造成伤害后再一次性结算了。

2. 叫嚣的中士
如果场上没有其他随从,有时候这张牌是不能上场的?iPad的时候,以前的版本一定会让你选择一个施法对象。
3.如果带有召唤战吼的随从入场,遇上满员的时候,该怎么处理呢?
炉石的很多规则不是很清晰,所以开发的时候,可能需要做两手准备,或者能让用户自定义,让这个项目的核心更接近于一个引擎,而不是一个炉石定制的东西。
炉石传说 C# 开发笔记(6月底小结)的更多相关文章
- 炉石传说 C# 开发笔记 (续)
炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...
- 炉石传说 C# 开发笔记
最近在大连的同事强力推荐我玩 炉石传说,一个卡牌游戏.加上五一放一个很长很长的假期,为了磨练自己,决定尝试开发一个C#的炉石传说. 这件事情有人已经干过了,开发了一个网页版的炉石,但是貌似不能玩... ...
- 炉石传说 C# 开发笔记 (源代码整理公开)
源代码已经整理过了,去除了不需要的项目. 注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下. GitHub地址 卡牌XML文件的做成:(Git上面是没有XM ...
- 炉石传说 C# 开发笔记(BS模式Demo)
原来这个项目,一直想做成CS模式的,BS模式对于炉石这样的游戏来说比较困难. 暴雪到现在也只出了 Windows 和 iPad版本的炉石,最大的问题还是在于如何在小屏幕下,实现最佳的客户体验. Win ...
- 炉石传说 C# 开发笔记 (法术篇)
炉石的设计,最核心的内容是法术效果. 法术卡牌,无疑是法术的集中体现,但是,法术效果除了在法术卡牌之外,也不除不在. 随从的战吼,亡语,奥秘的揭示等等都是法术效果的体现. 法术卡牌在炉石里面有很多种( ...
- 炉石传说 C# 开发笔记(BS上线尝试)
昨天买了一个月的1G 1核的服务器,由于不是新用户,所以没有享受到阿里的6个月免费的优惠. (阿里脑残,为什么不对于续费或者升级免费呢?) 在服务器的通讯上面已经OK了,完全绕过了ASP.NET,就是 ...
- 炉石传说 C# 开发笔记 (初版)
法术资料说明 1.资料的准备 从GitHub上面获得的工程里面,是没有XML卡牌资料配置的,这个是需要你自己生成的. 打开炉边处说的客户端 然后按下 卡牌资料生成 将炉石资料文件设定为 Github ...
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
引言 Cordova(PhoneGap)采用的是HTML5+JavaScript混合模式来开发移动手机APP,因此当页面需要获取手机内部某些信息时(例如:联系人信息,坐标定位,短信等),程序就需要调用 ...
- Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境
引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...
随机推荐
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
遇到个输不出来的字符怎么办,因为输不出来的字符一般又是不常见大多数时候连名字也喊不出来的,所以想问百度谷歌大大也不大可能.如果是小白用户肯定会去把输入法软盘打开切换到其他键盘一个一个找.即使有搜狗输入 ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
- C++ inline函数
本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: C++为什么引入inline函数? 为什么inline能很好的取代表达式形式的预定义? inline函数的使用场合 ...
- Lua标准库- 模块(Modules)
Lua包库为lua提供简易的加载及创建模块的方法,由require.module方法及package表组成 1.module (name [, ···]) 功能:建立一个模块. module的处理流程 ...
- Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途 1.1. 高斯模糊 的原理(周边像素的平均值+正态分布的权重1 1.2. 高斯模糊 的用途(磨皮,毛玻璃效果,背景虚化 ...
- rabbitmq消息队列——"topic型交换器"
在之前的章节中我们改进了我们的日志系统,我们使用direct型交换器代替了只能盲目广播消息的fanout型交换器,这使得我们可以有选择性地接收日志. 尽管使用direct型交换器改进了我们的日志系统, ...
- css_01之基础属性、选择器
1. 常用属性:①color:文本颜色:②background-color:背景颜色:③font-size:文字大小: 2. 样式声明:①内部样式:style=“样式规则:”,写于作用标签内,优先 ...
- Spring配置汇总
现在主流的JavaWeb应用几乎都会用到Spring,以下是Spring的配置,以及结合Web的SpringMVC配置的汇总. jar包的引入 与Web项目集成 Spring配置文件 SpringMV ...
- Oracle 11g系列:数据库
1.创建Oracle数据库 创建Oracle数据库的最常用工具为Database Configuration Assistant(数据库配置助手),依次选择[开始]|[所有程序]|[Oracle-Or ...
- 反质数问题,求不大于n的最大反质数
反质数:设f(n)表示n个约数的个数,如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数 我们都知道对于任意一个数n,都可以用质数乘积的形式表示出来:x = ...