在ClientServer开发时,我总会在想,为什么不把Server代码和Client代码直接分成两个文件夹。比如

-Server
--Hofix
--HofixModel

-Client
--Hofix
--HofixModel
--View
--ViewModel

这样不是在逻辑上可以减轻理解负担吗。按照上面的文件夹布局,我在思考时我只需要打开正确的文件夹,就不需要思考这个Hofix文件夹是不是对的。

现在的目录结构我需要先打开Model,再确认一遍我打开的是Client,再在对应的文件夹写代码。
再打开Hofix,再确认我打开的是Client,再在对应的文件夹写代码。

如果按照我上面的想法,我先打开Client,只需要打开Model,写代码。打开Hofix,写代码。这思考负担一下子下降了百分之30。
我的问题是,7.2这样的文件布局是有什么特殊原因导致的吗。如果无法修改,是否有什么方法可以屏蔽掉这个思考过程呢。

能说下你分的这几个文件夹,分别对应7.2里面的哪些文件夹?

  • zero 回复了此帖

    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 分开是为了逻辑跟表现分离,数据跟方法分离,有利于重构协作。你一个人随便怎么搞都行

                  说点什么吧...