|  |      1bruce0      2022-09-08 09:56:47 +08:00 第一次见用 Java 写游戏服务器的, 插眼学习一下 | 
|  |      2newmlp      2022-09-08 09:58:21 +08:00 游戏不是用 udp 加自己魔改可靠连接的多吗,比如 kcp | 
|  |      3RedBeanIce      2022-09-08 09:58:49 +08:00 指不定你发到 Java 节点会更好。。。。。 | 
|      4robot1      2022-09-08 10:01:21 +08:00 感觉你不太懂游戏开发啊。得了解下基本的游戏开发模式和关注的点吧。 你这感觉还是在搞 web | 
|      5cqu1980      2022-09-08 10:04:41 +08:00 既然用 node 开发,为啥不用现成的框架,比如 pinus ? | 
|  |      6dk7952638      2022-09-08 10:07:14 +08:00 我有一种偏见,所有带 GC 的编程语言都不适合做游戏开发 | 
|  |      7ddonano OP 大佬,所以写的是入门啊 | 
|      10kwh      2022-09-08 10:18:25 +08:00 可能是连接数量限制??? | 
|      11robot1      2022-09-08 10:24:17 +08:00 看很多评论关注语言、协议、gc 什么的, 但对于题主来说我觉的还是先看看书资料源码,弄清楚游戏开发的基本知识才是主要的 可以看 quake3 的快照同步,或者别的什么的帖同步,状态同步 ,客户端预测回滚啥的 语言之类的都是用来实现这套模式的工具,可以根据游戏类型灵活选择 | 
|  |      12qinxi      2022-09-08 10:25:13 +08:00 nodejs 不是有 socketio.  java 可以不用参与了.  非要 java, 不是也有 netty-socketio. 直接 netty 生撸也行 | 
|      13micean      2022-09-08 10:33:11 +08:00 当前基于 nodejs ,改成 java 的原因是啥? vertx eventbus 发消息是一个一个发……估计和 nodejs 版本也没啥区别 如果性能符合你的要求也没啥问题 | 
|      14assiadamo      2022-09-08 10:40:49 +08:00 如果是纯客户端计算,服务器只存个结果,或者演算的话,你用 web 那套没问题 长连接的话,老老实实用 netty 吧 | 
|      15cqu1980      2022-09-08 10:41:27 +08:00 @robot1 确实是这么个道理,还是要结合一些游戏框架来熟悉分析和理解才行,光靠自己想肯定是不行的。不过 java 的游戏框架不多,可以参考 node 的 pinus/pomelo 。 | 
|  |      16ddonano OP @assiadamo https://github.com/quarkusio/quarkus/issues/8805 好像 quarkus 的 websocket 就是基于 netty 的,我也看了源码,有使用到 netty 的 Channel 、ChannelHandler 这些。 | 
|      17assiadamo      2022-09-08 10:52:14 +08:00 @ddonano 看你需求,如果是 pc 端或者手机端,能用 websocket 为什么直接用 tcp/udp 呢,websocket 用在游戏上可能网页游戏更适合 | 
|  |      18allgy      2022-09-08 10:57:44 +08:00 java GC 直接卡你的怀疑人生 | 
|      19lmshl      2022-09-08 11:09:14 +08:00  1 既然是 Java 的话,akka-cluster-sharding 了解一下,国内腾讯网易淘宝游戏等都有应用,轻松扛百万玩家在线 @allgy 今年是 2022 年,Pauseless GC 已经诞生十几年了 | 
|      20lmshl      2022-09-08 11:28:30 +08:00 | 
|      22joesonw      2022-09-08 12:05:24 +08:00 via iPhone 0 游戏基础的 Java 话直接用 SmartFoxServer | 
|      23dcoder      2022-09-08 12:23:39 +08:00  3 你们上面滔滔不绝的基本都没说在点子上... 首先该问贴主是做: real-time 的游戏 (e.g. 竞技 ACT, FPS), 还是 turn-based 的游戏? turn-based 的话, websocket 这一套没有问题, 并且 websocket+stateful 的构架 还是比 Restful+stateless 的要难写. 但是要做 real-time 的话, 难度就几何级数上升: 1. 需要在 UDP 上用个快速的传输协议 (比如 KCP). 2. 需要在 server 和 client 端自己计算没帧的物理模拟(哪怕是最简单的也行). server 和 client 可以用不同的语言. 这里水也很深. 竞技游戏的话, 多半会基于 deterministic floating number 做 simulation. MMORPG 的话可以用差值糊弄糊弄, 不用每帧都是精确的 deterministic simulation. | 
|  |      27th00000      2022-09-08 16:01:42 +08:00 利益相关, 用 Vert.x 开发过线上吃鸡类游戏 但是 MMO 类型的话有待验证, 毕竟单线程可以容纳的在线人数有限, 吃鸡类就没这个问题, 大厅扩就是了 但是你也说过你的游戏是有房间概念的, 所以我觉得问题不大 另外 Netty 是 Netty, Vert.x 是 Vert.x, 不是两个互斥的技术栈 | 
|  |      29cloud107202      2022-09-08 16:06:34 +08:00 shardcake 这种不说成不成熟,effect-system 的框架就这么推荐新手用? 题主就从 linux 最大连接数、web server 线程池、所用具体 websocket 组件的 IO 操作是同步还是异步等几个地方依次排查下就行 压测可以用 galting 的 websocket module ,用 scala 简单写点代码,都是 DSL API 没什么门槛 | 
|  |      30ryanbuu      2022-09-08 16:07:29 +08:00 好奇游戏场景下 GC 的 STW 咋处理…… | 
|      31xf5464      2022-09-08 16:08:06 +08:00 移动同步的话,客户端这边按格子走,然后走到下一格的时候,服务端用上一次收到的移动格子时间和这次的时间差判断,是不是可以移动到当前格子,可以的话通知给其他人。每一格都验证,可能跟你说的移动不是一个事,比如一个格子 64*32 ,那么当客户端移动了很小的一段路,没到下一个格子的时候,是不会通知服务端的,也就不会通知到其他玩家。 | 
|      32Huelse      2022-09-08 16:20:09 +08:00 @lmshl #19 今天刚看到 akka 改 license 了,不过年收入$2500w 以内问题不大 https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka |