首先我没做过游戏,根据我非常有限的了解单机不是应该可以单个程序就解决了,如果是因为开发便利前后端分离进程间不是还有很多方法通信吗,为什么要通过网络端口通信,好像说这还导致了很多用户因为端口占用启动不了。帖子还有人说主创招了群三流码农高开低走。总之心情复杂
1
wwwz 2022-09-23 10:08:09 +08:00
方便做联机?端口占用不是很好解决吗
|
2
mainjzb 2022-09-23 10:12:32 +08:00
客户端大概率用 C++写的
服务端可以用 Go 生产力提高 10 倍 |
4
renmu 2022-09-23 10:15:31 +08:00 via Android 3
用接口做通信不也是进程间通信的一种,也可以为联机做预留
|
5
lookStupiToForce 2022-09-23 10:21:17 +08:00 2
多少有点少见多怪的感觉
人家饥荒当年因为单机游戏底层架构,压根没法联机,主创团队后来重写底层才搞出来联机版 太吾茄子说要支持创意工坊,而玩家最可能搞得 mod 除了**、功法、剧情,不就是联机了吗?修仙模拟器的联机 mod 见过没?这有啥不好理解的 |
6
beimenjun 2022-09-23 10:26:01 +08:00 2
咋不想着下一步改成支持多人联机就想着改成网游赚钱呢?
而且自己写的东西,弄成网游赚钱,只要是符合自己预期的作品,作者怎么整都可以。 个人觉得,游戏的技术架构其实是非 MOD 制作人的玩家不太需要关注的东西。了解越多只会丧失游戏的现实隔绝性。 |
7
HolmLoh OP |
8
ziseyinzi 2022-09-23 10:28:11 +08:00
就是为了以后支持联机呗。不知道它这个后端是什么写的,前端应该是 Unity(C#)。
|
10
Torpedo 2022-09-23 10:45:38 +08:00
这年头哪个单机没点联网能力。。。
不过要是因为端口占用启动不了,那确实菜 |
11
xylxAdai 2022-09-23 11:08:34 +08:00
进程间通信用 socket 感觉没啥问题啊,而且进程隔离防止修改也挺多这样的操作,不过估计是为下一步做联机吧,挺好的。关注这些没意义,游戏好玩就行。
|
12
rrfeng 2022-09-23 11:14:08 +08:00
喷架构的都是瞎喷。
写死端口导致可能启动不了确实是设计问题,可能开发水平也就这样了。有一万种办法不出现这个问题。 |
15
BeginInvoke 2022-09-23 12:19:27 +08:00 1
用 socket 实现进程间通信没啥问题啊,据我了解除此之外还可用管道,管道的话用起来还不如 socket 可靠
|
16
tool2d 2022-09-23 13:08:28 +08:00 1
我的程序也是 socket 通讯,因为界面是浏览器,用的是 websocket 。
没什么问题,很适合混合语种编程的架构。 |
17
jim9606 2022-09-23 13:29:04 +08:00 via Android 4
这种设计进可以做联机和 p2p 独服,退可以像这样独立进程跑单机。这种设计得在项目初期就定好,后期没法改的。要是不这么设计到后面想加联机玩法就很困难了。
socket 做 ipc 的优势是分布式,这样网游 /独服的服务器就可以不带游戏引擎了。而且 socket 实现很好做到平台&语言无关,其他 ipc 或多或少有些限制。 NGA 果然是个奇葩论坛。 |
19
BeginInvoke 2022-09-23 13:42:44 +08:00 2
哦对了刚查了一下走 loaclhost 数据甚至不经过网卡,纯纯内存缓冲区拿数据,所以采用 socket 根本不可能导致性能瓶颈
|
20
HolmLoh OP @BeginInvoke #19 我也学习一下,这么说来这种方式是没有任何问题
|
21
voidemoer 2022-09-23 17:02:44 +08:00
不提技术,正式版的战斗机制改的,就挺适合联机的,倒是挺希望能和朋友 1v1 的
|
22
YUyu101 2022-09-23 17:56:59 +08:00
联机用吧,需要玩家当主机的话,就需要这种架构
|
23
ysc3839 2022-09-26 01:53:21 +08:00 via Android
很多支持联网的游戏的单人模式都是跑个本地服务器的,不过大多是弄成单进程的。只能说开发者偷懒没有处理内部通信的事情。
|
24
kice 2022-09-27 12:38:54 +08:00 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 ;虽然能避免,但是个人就比较怀疑团队那边有没有能力设计且实现好这个大饼。 |