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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    下面是整理的法术表格

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

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

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

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

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

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

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

  • 相关阅读:
    javascript --学习this
    seaJS
    wamp之htaccess的配置
    replace之$1、$2等
    nw.js使用
    新电脑开发环境配置
    vue-vue常用指令
    Array的splice与slice
    vue-入门体验
    Object.defineProperty
  • 原文地址:https://www.cnblogs.com/TextEditor/p/3747460.html
Copyright © 2020-2023  润新知