冲浪在 NGA 上看到一个有关太吾正式版技术架构的贴 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
太吾绘卷
HolmLoh
V2EX    太吾绘卷

冲浪在 NGA 上看到一个有关太吾正式版技术架构的贴

  •  
  •   HolmLoh 2022 年 9 月 23 日 5288 次点击
    这是一个创建于 1230 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先我没做过游戏,根据我非常有限的了解单机不是应该可以单个程序就解决了,如果是因为开发便利前后端分离进程间不是还有很多方法通信吗,为什么要通过网络端口通信,好像说这还导致了很多用户因为端口占用启动不了。帖子还有人说主创招了群三流码农高开低走。总之心情复杂

    24 条回复    2022-09-27 12:38:54 +08:00
    wwwz
        1
    wwwz  
       2022 年 9 月 23 日
    方便做联机?端口占用不是很好解决吗
    mainjzb
        2
    mainjzb  
       2022 年 9 月 23 日
    客户端大概率用 C++写的
    服务端可以用 Go 生产力提高 10 倍
    HolmLoh
        3
    HolmLoh  
    OP
       2022 年 9 月 23 日 via iPhone
    @wwwz 只是通过网络端口通信这一点来看,因为种感觉这不应该是单机游戏开发的常规操作
    renmu
        4
    renmu  
       2022 年 9 月 23 日 via Android   3
    用接口做通信不也是进程间通信的一种,也可以为联机做预留
    lookStupiToForce
        5
    lookStupiToForce  
       2022 年 9 月 23 日   2
    多少有点少见多怪的感觉
    人家饥荒当年因为单机游戏底层架构,压根没法联机,主创团队后来重写底层才搞出来联机版
    太吾茄子说要支持创意工坊,而玩家最可能搞得 mod 除了**、功法、剧情,不就是联机了吗?修仙模拟器的联机 mod 见过没?这有啥不好理解的
    beimenjun
        6
    beimenjun  
    PRO
       2022 年 9 月 23 日   2
    咋不想着下一步改成支持多人联机就想着改成网游赚钱呢?

    而且自己写的东西,弄成网游赚钱,只要是符合自己预期的作品,作者怎么整都可以。

    个人觉得,游戏的技术架构其实是非 MOD 制作人的玩家不太需要关注的东西。了解越多只会丧失游戏的现实隔绝性。
    HolmLoh
        7
    HolmLoh  
    OP
       2022 年 9 月 23 日 via iPhone
    @renmu
    @lookStupiToForce
    为联机准备好像确实有道理,虽然没有看到多人的感觉,也许确实是我少见多怪了
    ziseyinzi
        8
    ziseyinzi  
       2022 年 9 月 23 日
    就是为了以后支持联机呗。不知道它这个后端是什么写的,前端应该是 Unity(C#)。
    wdwwtzy
        9
    wdwwtzy  
       2022 年 9 月 23 日
    @mainjzb 客户端是 unity
    Torpedo
        10
    Torpedo  
       2022 年 9 月 23 日
    这年头哪个单机没点联网能力。。。

    不过要是因为端口占用启动不了,那确实菜
    xylxAdai
        11
    xylxAdai  
       2022 年 9 月 23 日
    进程间通信用 socket 感觉没啥问题啊,而且进程隔离防止修改也挺多这样的操作,不过估计是为下一步做联机吧,挺好的。关注这些没意义,游戏好玩就行。
    rrfeng
        12
    rrfeng  
       2022 年 9 月 23 日
    喷架构的都是瞎喷。

    写死端口导致可能启动不了确实是设计问题,可能开发水平也就这样了。有一万种办法不出现这个问题。
    HolmLoh
        13
    HolmLoh  
    OP
       2022 年 9 月 23 日 via iPhone
    @rrfeng 算是低级 bug 了,应该是忘了改了吧
    HolmLoh
        14
    HolmLoh  
    OP
       2022 年 9 月 23 日 via iPhone
    @xylxAdai 确实好玩就行,主要是这游戏一路走来不容易,实在是让人担心
    BeginInvoke
        15
    BeginInvoke  
       2022 年 9 月 23 日   1
    用 socket 实现进程间通信没啥问题啊,据我了解除此之外还可用管道,管道的话用起来还不如 socket 可靠
    tool2d
        16
    tool2d  
       2022 年 9 月 23 日   1
    我的程序也是 socket 通讯,因为界面是浏览器,用的是 websocket 。

    没什么问题,很适合混合语种编程的架构。
    jim9606
        17
    jim9606  
       2022 年 9 月 23 日 via Android   4
    这种设计进可以做联机和 p2p 独服,退可以像这样独立进程跑单机。这种设计得在项目初期就定好,后期没法改的。要是不这么设计到后面想加联机玩法就很困难了。
    socket 做 ipc 的优势是分布式,这样网游 /独服的服务器就可以不带游戏引擎了。而且 socket 实现很好做到平台&语言无关,其他 ipc 或多或少有些限制。
    NGA 果然是个奇葩论坛。
    HolmLoh
        18
    HolmLoh  
    OP
       2022 年 9 月 23 日
    @jim9606 #17 这下真是外行指导内行了
    BeginInvoke
        19
    BeginInvoke  
       2022 年 9 月 23 日   2
    哦对了刚查了一下走 loaclhost 数据甚至不经过网卡,纯纯内存缓冲区拿数据,所以采用 socket 根本不可能导致性能瓶颈
    HolmLoh
        20
    HolmLoh  
    OP
       2022 年 9 月 23 日
    @BeginInvoke #19 我也学习一下,这么说来这种方式是没有任何问题
    voidemoer
        21
    voidemoer  
       
    不提技术,正式版的战斗机制改的,就挺适合联机的,倒是挺希望能和朋友 1v1 的
    YUyu101
        22
    YUyu101  
       2022 年 9 月 23 日
    联机用吧,需要玩家当主机的话,就需要这种架构
    ysc3839
        23
    ysc3839  
       2022 年 9 月 26 日 via Android
    很多支持联网的游戏的单人模式都是跑个本地服务器的,不过大多是弄成单进程的。只能说开发者偷懒没有处理内部通信的事情。
    kice
        24
    kice  
       2022 年 9 月 27 日 via Android   1
    首先单机游戏做成 CS 架构没啥问题,隔壁 V 社的起源引擎和 MC 也是 CS 架构走 RPC (起源为了减少延迟,单机模式下开后门,不走 localhost 那边的 memcpy )。

    其次 50000+端口基本上属于很难被其他程序使用。估计程序员比较菜?写死了估计还没想到办法端口号变动之后怎么连服务器。

    走网络通讯是最简单最方便的 RPC 途径,其他的各种方法都不好移植,例如命名管道,mmap 之类。甚至可能是 HTTP 或者 HTTP over UDP 也是可行。

    我个人认为最蠢的地方是服务器逻辑单独一个进程进行处理。虽然知道是因为 unity ,但是如果我来做的话会尝试把服务器逻辑做成一个 C 井库,客户端既可以给玩家用,也可以本地开服务器局域网联机;然后再额外做一个没有渲染或者没有客户端逻辑的独服给公网(社区服)用。这样方案下,mod 环境某种意义上比较成熟( bepinex 之类的框架大家都会用)。

    单独服务器进程之下,mod api 就可以随意发挥,脱离 bepinex 之类的 mod 框架。缺点可能就是如果要修改素材,渲染方面,还是要用 bepinex ,然后服务器那边也要单独一个 mod ;虽然能避免,但是个人就比较怀疑团队那边有没有能力设计且实现好这个大饼。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4150 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 09:39 PVG 17:39 LAX 01:39 JFK 04:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86