• 讨论
  • 在ET(8.1)中客户端如何做比如MVC的分层?

标题:

以官方教程(目前到27节)为例,登录模块。

传统的设计模式一般会将该模块至少分成3层:

1,数据层 单纯来用处理数据。例如保存服务器下发的数据,各种访问本地配置,缓存的接口等。

2,逻辑层 管控流程,例如登录状态机,或者整个游戏行为树的登录叶子节点。

3,表现层 登录界面,找回密码界面,服务器列表界面,注册界面,选角界面等

但是在ET中,目前看到登录的教程中,在客户端中只看到了表现层的处理,即登录界面。

那么数据层和逻辑层应该如何规划? 是自行另外建对应的component以及System来管控吗?

各位有什么好的建议?

登录哦的 数据层和逻辑层不是在服务器嘛 你客户端只需要做表现

    yiyi

    客户端科不仅仅是做表现。

    理论上来说,一个严肃的客户端,在刨除所有表现层以后,数据逻辑层是可以独立运行不受影响的。

    还是以登录模块来说。客户端从一开始的状态机启动,状态切换,读取网络配置,读取本地上次登录的账号缓存,读取上次选择的角色偏好等,以及例如上行协议处理和下行协议处理的接口。都是独立在客户端的数据层,逻辑层的。

    即便没有任何表现层界面存在,也不影响它们的运行(理论上可以快速的做一个脱机外挂机器人)。

    对应到进入游戏内的地图,战斗,也是如此。 即便没有地图资源,角色怪物模型资源。 客户端的数据层逻辑层对象是可以独立进行完整的战斗过程的。

    表现层对象,只是最后给这些逻辑加上去的一个表现的皮。它们不会影响到逻辑和数据。

    至于说原因。很简单。

    1,能客户端自己计算的,不要问服务器。将计算压力分发给用户各自的机器,而不是集中在服务器。

    2, 方便换皮。

    3,所见即所得的战斗编辑器的开发等等,需要有一个严肃完整的序列化数据和逻辑分层,以对应编辑器的界面和编辑,导出等等。

    4,其他

    以教程来讲 客户端的登录就只是做了个表现而已 如果你要问一个严谨可以上线的登录 或者其他模块 那有什么好建议的 ET不是已经严格的给你分好了 model 不就是数据层 hotfix不就是逻辑层 还要什么规划… ET没有MVC 这里是ECS

      yiyi

      1,我问的是分层设计的实现思路,不是说文件夹怎么分。如果你说文件夹里面就代表着分层,那么ET中的客户端逻辑层就是各种XXXXhelper?

      2,MVC和ECS是矛盾的么?

      • yiyi 回复了此帖

        yiyi 所以我才来求教的。ET中客户端应该如何写才能实现数据层逻辑层和表现层的分离。主贴表达的就是这个意思。但是你的回答没有解决任何问题。

        ET的文件夹就是分层设计

        model 就是数据层

        hotfix 就是逻辑层

        带view 的就是表现层用的 ModelView 对应有表现层的数据层 HotfixView表现层的逻辑层

          yiyi OK,我尝试从这个角度去理解一下。先按照这个分法把登录模块完整实现一下试试。感谢回答。

          • yiyi 回复了此帖

            MainTank

            对应刚刚说的4个文件夹 ET有dll限制 有分析器限制 服务器有关联限制

            所以才可以达到你说的分层设计

            因为你乱写 或者写到其他地方 代码就直接报错了

            比如你登录的表现层相关的就不可能写在hotfix里面 这个程序集都没有引用unity

            hotfix还被服务器关联 达到前后端复用

            说点什么吧...