asksim
目前的7.2里面的布局:
-Hofix
--Client
--Server

-Model
--Client
--Server

-HofixView
--Client

-ModelView
--Client

把这个里面各个部分的Client代码提取成
-Client
--Hofix
--Model
--HofixView
--ModelView
把Server代码提取出来,
-Server
--Hofix
--Model

我用- 和– 分别代表了层级关系。简单就是说把Client和Server的代码分离成两个文件夹

有的Client里的Server里面也要用到。不过7.2和8.0的目录规划,对我来说没啥用。我自己也调整过目录了。

  • zero 回复了此帖

    asksim 那把Share文件夹再单独分出一个文件夹也比现在这样好理解啊

    其实不光是share,主要是Model下面的,Robto这些也要用到这部分。

    • zero 回复了此帖

      我是把ClientServer这种客户端和Server在一起去掉了。对我来说,这个没啥用处。独立开个服务端就可以了。

      不在unity里面启动客户端和服务端。Server部分的单独复制出来了,不再放在Assets目录下。大概目录规划是这样的:

      • zero 回复了此帖

        asksim 既然Robot这些需要在Client和Server里面复用,那他应该放在Share而不是Client。我感觉这样调整应该是没有问题的。主要是我看ET6.0的目录结构好像就是Client和Server分开的,而ET7反倒耦合到一起了

        asksim 多谢分享,其实你这个就是我在思考的,把Client和Server代码分离出两个独立的文件夹,或者说项目。这样写代码的时候,我可以不用时时刻刻分辨当前写的位置是Client还是Server。这种思考负担还是挺重的。

          zero 是的,我把Assets下的Server部分的代码都放到外面去了。没必要放在客户端里面。包括配置生成和协议这些,都是分开了。

          StartConfig这种配置也仅服务端会有。客户端只有Gameconfig

          再好好研究下吧,这些方案我都考虑过了。首先开发是用的Ide开发,不是按照目录来开发,既然是ide,那么你最终还是要把客户端跟服务端目录整合到model hotfix中一起来,那还有啥区别?其次,share的代码跟client server独立,你会发现share根本不好管理,想把一个类放到同级的share中,结果发现要跨越很大。

          • zero 回复了此帖

            egametang 多谢大佬的回复,这里我有几个疑问:
            1.为什么说IDE开发需要将Server和Client整合到model和Hofix中,Server和Client分别拥有自己的model和Hofix不行吗。
            2.如果说为了Share代码,需要将Server和Client直接整合到一起。那有没有办法在IDE层面,也就是Rider中通过引用的方式将Server和Client的代码分开(我自己没有找到合适的方法)。

            我理解为了代码复用,才将Server和Client整合到一起。但这个思考负担是客观存在的,希望大佬可以帮忙想一个合适的解决方案,IDE层面或者调整目录都行,现在Client和Server的代码太分散,双端代码中重名的文件夹太多,需要时刻注意当前的开发目录,开发效率实在是太低了。

              按照我的理解,如果客户端不考虑开发过程中的热重载的话,可以把Hotfix/HotfixView和Model/HotfixModel全部合并了。

              开发过程中,也不用分这些dll了。发真机版的时候全部合并成一个Hotfix.dll也没啥问题吧?至少对于我来说,还是会减少不必要的开发压力(主要还是要把system写到另外一个地方,有点尬,找来找去太费事)。

              至于服务端,如果考虑热修复的话,可以保持现有的 Hotfix/Model的方式,不过说实话,这种热修复也仅限于修修逻辑。如果Model改了,也没戏。还不如考虑更好的方案来处理修复的问题。比分说多准备一个服务,把有问题的服务下线,把玩家切到新服务里去?

                zero 这有啥难的,你另外建个工程叫做Server.sln里面建几个工程引用server的代码目录不就行了,client.sln引用客户端代码目录

                asksim 分开是为了逻辑跟表现分离,数据跟方法分离,有利于重构协作。你一个人随便怎么搞都行

                说点什么吧...