源代码已经整理过了,去除了不需要的项目。

注意:以前文章中出现过的Git已经变更过了,请以前关注过,Fork过的朋友,重新Fork一下。

GitHub地址

卡牌XML文件的做成:(Git上面是没有XML文件的,原因是数量比较多,更新比较频繁,所以,运行游戏前,请自行生成)

代码里面有一个CardHelper的工程,运行这个工程:

资料导入导出

aaarticlea/png;base64,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" alt="" />

炉石资料文件可以从GitHub上找到,XML文件夹可以自己设定。  导出到XML 按钮按下去后就可以生成XML文件夹和文件了。

服务器的启动

启动  火炉服务器

按下 启动服务后,服务器就开始运行了。

这里卡牌文件夹一定要选择,就是上一步的那个XML文件夹

启动 炉边传说客户端 HOST

按下新建一局游戏后,后台将等待GUEST的连接。(编码不是很好,没有用线程,所有画面会冻结,以后修改)

同样,这里卡牌文件夹一定要选择,就是上一步的那个XML文件夹

如果你的服务器和客户端不是同一台机器,请先填写服务器的IP地址(我没有测试过。。。)

启动 炉边传说客户端 HOST

启动炉边传说,先刷新一下,列表中会出现等待中的游戏局,选中一个游戏局,按下加入一局游戏,则游戏正式开始。

部分法术没有开发完成,攻击,回复,冰冻,变形系的开发完成

风怒,圣盾,嘲讽已经完成

注意:这只是一个简单的DEMO版本。必然会有无数BUG。

#10楼 -- : 斯克迪亚
美工不是问题,如果不是商用的话似乎没有什么版权风险,我觉得可以找一些网上的玩家原画替代卡牌图案,当然最好开放客户端的修改权利,让玩家可以自己做成仿官方的,类似太阳神三国杀。
实在不行做出个框架就得,卡牌就是白底黑字都没关系,只要可修改,日后肯定有热心玩家给做漂亮。
关键还是逻辑、体验及可扩展性,这两点必须把握住。
技术上建议采用跨平台的游戏引擎,而不是单纯使用wpf、gdi+这类基础的绘图功能,否则太多功能需要从0做起,而且无法跨设备扩展。
比较推荐libgdx引擎,性能、功能都不错,轻量级,Android、iOS、Windows、Web通吃,游戏主体代码各平台通用无需修改。

现在正在这么开发,UI是保留了最低限度的UI,我没有精力去开发UI,而且Winform也肯定不是唯一的UI。

我的目标和你一样,炉石也可以改为 三国主题的游戏,只需要改卡牌配置文件。

我除了C#以外,基本上其他都是小白。我也看过你推荐的引擎,实在不好意思,没有时间研究。感谢您的支持和鼓励。

能否给我一个您的常用邮箱,以后可以私下发邮件讨论。

#13楼 -- : squallczj
@老坏猫
@hellsoul86
@斯克迪亚 个人认为游戏引擎不需要用第三方库,除了基础功能库外(如IOC,ORM之类)。引擎应该作为一个类库封装,独立于view逻辑(view引擎),也独立于服务器/客户端架构。当然接口还是要提供的,比如服务器与一局游戏的交互,客户端与游戏的交互。
我原来想的是设计一个以炉石为参考的游戏引擎,并开放AI接口,做成一个可人人、人机、机机对战(混战)的标准平台(主要还是服务器)。卡牌资料方面,考虑到版权,只可能参考部分炉石数据(其实最好是能拿到暴雪支持,如果这个平台能够做大做全的话,相信暴雪会愿意支持的,实在不行还可以寻求优秀的开源企划协助)。至于客户端实现,可能会暂时给个纯文字基础的,并开放接口,征求设计达人完成。AI部分,开放标准接口,这样任何人都可以参与开发并展示他的AI作品。
楼主的代码我看过了,与我想象的不太一样。游戏引擎没有独立出来,可扩展性有待提高。当然可能这只是楼主的一个prototype吧。慢慢来,这两个月我会找时间做个框架出来,然后再慢慢填功能。等有了第一阶段的东西,我会放到github上的。

这只是一个原型,我的想法是,先通过开发一个炉石,来掌握一下业务逻辑和难点。

在这个基础上,可以进行不断的抽象和提炼做成一个可靠的引擎。增加扩展性和柔韧性。

我非常同意您的观点,希望能够和你开发同一个项目,我不介意将您的GitHub作为主要的Git库。或者将我的所有代码迁移到您的Git库里面。

我的目标也和你差不多,现在暂时做出一个看得见的东西,也可以给自己一点鼓励。我很希望和你长期交流。

能否给我一个您的常用邮箱,以后可以私下发邮件讨论。

#34楼 -- : wdwwtzy
@magicDict
我个人觉得最好是在github上独立一个项目,然后我们watch之后,就可以看到每次的commit的内容和进度了。

代码已经分割

能否给我一个您的常用邮箱,以后可以私下发邮件讨论。

任何想参加这个项目的,可以留下常用邮箱。

我IM平时用的比较少,一切事宜通过邮箱分享情报。

本人在上海,特别希望上海的朋友一起参与开发。特别希望有人可以将UI部分重写一下,我实在没有时间和精力。

炉石传说 C# 开发笔记 (源代码整理公开)的更多相关文章

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

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

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

    炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...

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

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

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

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

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

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

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

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

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

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

  8. python全栈开发笔记---------数据类型****整理****

    一.数字 int(..) 二.字符串 replace/find/join/strip/startswith/split/upper/lower/format tempalet ='i am {name ...

  9. QCustomPlot开发笔记(一):QCustomPlot简介、下载以及基础绘图

    前言   QCustomPlot开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,过目 ...

随机推荐

  1. Java处理Radius access-challenge

    最近使用 RSA Authentication Manager, 并且与其自带的Radius server整合, RSA的Radius server 配置不太透明, 目前只配成功了PAP方式的验证,C ...

  2. linux奇技淫巧 4

    压缩解压 tar 即可压缩也可以解压 c 压缩 如果没有z.j参数,则表示,只打包,不压缩. 就说, t 查看 z 以gzip方式压缩 相当于 gzip ?.. j 以bzip方式压缩 bzip2 ? ...

  3. swift NSComparator

    var cmptr:NSComparator = {(obj1:AnyObject!, obj2:AnyObject!) -> NSComparisonResult in if((obj1[&q ...

  4. MVVM架构~knockoutjs系列之扩展ajax验证~验证数据是否存在

    返回目录 在大部分网站里,用户名都是唯一的,即当用户注册时,如果用户输入的名字不合法,我们需要提示用户,让用户再起个新名字,而这种复杂的验证一般是通过JS来实现的,如果把它集成到ko里,那就完美了.有 ...

  5. EF架构~数据分批批量提交

    回到目录 对于大数据量提交,包括插入,更新和删除,我始终不建议用EF自带的方法,因为它会增加与数据库的交互次数,一般地,EF的一个上下文在提交时会打开一个数据连接,然后把转换成的SQL语句一条一条的发 ...

  6. PHP实现RESTful风格的API实例(二)

    接前一篇PHP实现RESTful风格的API实例(一) Response.php :包含一个Request类,即输出类.根据接收到的Content-Type,将Request类返回的数组拼接成对应的格 ...

  7. How Google TestsSoftware - Crawl, walk, run.

    One of the key ways Google achievesgood results with fewer testers than many companies is that we ra ...

  8. 那些年我们写过的T-SQL(中篇)

    中篇的重点在于,在复杂情况下使用表表达式的查询,尤其是公用表表达式(CTE),也就是非常方便的WITH AS XXX的应用,在SQL代码,这种方式至少可以提高一倍的工作效率.此外开窗函数ROW_NUM ...

  9. 正则表达式之JSP、Android

    对于正则表达式,很多朋友一定不陌生,因为在我们做网站或apk时,当需要用户提交表单时,很多时间需要判断用户的输入是否合法,这个时间正则表达式就可以发挥它的作用了,我们知道正则表达式在这个方面是很强大的 ...

  10. java中对象的初始化过程

    class Parent{ int num = 8;// ->3 Parent(){ //super(); // ->2 //显示初始化 // ->3 //构造代码段 // -> ...