【OpenTGX】一个基于 TypeScript 的开源免费全栈游戏开发技术方案

不要动不动就性能什么的。 一个东西的存在,总有他的合理的。
所有的选择,不过是权衡而已。
汇编,C++,JAVA,GO 我也弄过啊。

选择 TS,是因为 95% 的情况下,有它就行!
同时,前后端统一语言,生产效率蹭蹭蹭往上涨。不香吗?

OpenTGX 的目的也不是要满足 100% 的项目需求。 只是想尽可能地提高生产效率,同时让游戏技术服务更多行业。

技术选型和择偶一样,没有最优解。

大家需要自行评估,适合就好。

3赞

感觉事件还是比较草率的


这里貌似once的事件没有移除。
然后如果事件回调删除事件的时候,会报错的。

嗯,忘了写。这就补一下。多谢!

这句话我不认同,riben he fei 水也存在,那ta合理吗?不是为了刚,确实这句话不妥。其他的我就不说咯,溜~,其实世界上存在很多东西,且这些东西都不合理,我这里举例只是觉得这句话不妥,不能成为理由

这位估计是在米哈游腾讯网易之类的大公司CTO,游戏都是几百万用户在线,所以对后端要求严格。不像我们臭要饭的,nodejs写个后端跑起来就开心得要死。

3赞

游戏服务端好像真没什么计算压力,只有战斗场景对实时性要求高一些,但是战斗运算没有特别复杂的

说的有道理,以后就别再说了

人家说的是合理,又不是合法 也不是合乎伦理,

来聊聊择偶标准吧 :full_moon_with_face::full_moon_with_face:

php 就是村里的花姑娘,虽然有点土,但人家能干活啊

​TS 就是你的小情人,让你爽强过一切。

​C++ 是你的女神,很高大很美好,但也很昂贵。

​JAVA,那是别人家的老婆…

合理就是合法+合乎伦理+等等合理东西

回的很好,以后就别再回了

不会java,但是速度人家确实6,也不至于这么慢,生产效率固然重要,但是并不怎么什么适合游戏场景,后期维护也是一堆bug,比如你懂的。。
我的准则比较简单,只要不是特别慢的语言,我一般都不会介意,哪些特别慢呢,比如python,js,php等等同列的三流语言。
老婆没必要特别完美,但是太丑也不行,带不出门啊兄弟

1赞

Swoole 加持的 拍黄片 不会慢

调用其他语言写的拓展,那就不算那门语言了,比如js也能调用c++写的代码, 那就是另外一回事了;
但是如果是原生语言原生层面支持,而不是像 Swoole这样的由框架支持,那也算是那门语言的速度~比如python,php标准库很多都是调用c/c++

有数据也还是不信,你的准则我懂了,佩服,佩服。

1赞

那也得看什么数据。。。demo级别的数据其实只能“参考参考”罢了,go性能跟java差不多,就看下go来跟nodejs的对比吧:注意,这还是一个计算型函数的差距,在大多数项目中,一个api的函数的调用层级可能多达20多层也是可能的,最少也有3-4层吧,这么说你可能不大了解,假设go比nodejs平均一个函数快2倍,那么当你访问一个api时候5层深度的函数也就快了10倍了,这可不是夸大,几万行的代码也会导致这个差距,真实的线上项目中你会体会更加明显。
如果你觉得10倍不大,可以接受,那么你可以试想一下当你打开一个网页0.2s响应数据和2s响应数据是什么差距就知道了
说太多反而让人反感,这个作为最终帖子,不再继续讨论
NodeJs vs Golang: Which is Best for Backend Development? (intellectsoft.net)

底子越好,上面的就越轻松。但是实际生产情况中这个只是其中的考量之一,纠结这个意义不大。就好比cocoscreator选择ts一样。

我也不是说在乎谁的性能高,也不是说 JS 的性能比 Go、Java 高。

只是总是有些偏见不断地被人云亦云,避免误导了更多人。

我的观点是如果是在 Java C# Go JS 这类语言中选择,不应该以性能为主要原因而选择某个语言,因为它们性能确实就是半斤八两,除非某些确实有明显偏向的项目。

NodeJs vs Golang: Which is Best for Backend Development? (intellectsoft.net)

你引用的这份基准数据太夸张了,是真是假我不评价,只是有几点:

  • 2018 年的文章,至今已有 5 年了。
  • 测试数据不够透明,没有所使用的版本,也没有源代码。
  • 绿色表格中可以看到 Go 比 JS 平均要快 5 - 10 倍,但后面的蓝色表格中,却明显看得出 JS Go Java C 这四个语言的性能相差无几,用眼睛预估大概 C 和 JS 的差距才 2 倍,这两张表看起来是自相矛盾。

然后是我之前引用的基准测试,我每年都会搜一些基准测试来看,这是今年我能找到的数据比较新,热门,透明可信的基准测试了,如果有其它的更好的希望大家能分享一下。

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-node.html

两个基准测试所用的测试项目基本都相同,贴一部分两者数据差距巨大的:

  • mandelbrot
    A:NodeJS 比 Go 慢 3.5 倍
    B:NodeJS 比 Go 慢 0.08 倍
  • binary-trees
    A:NodeJS 比 Go 慢 1.6 倍
    B:NodeJS 比 Go 快 2.3 倍
  • regex-redux
    A:NodeJS 比 Go 慢 7 倍
    B:NodeJS 比 Go 慢 0.07 倍
  • fasta
    A:NodeJS 比 Go 慢 4.9 倍
    B:NodeJS 比 Go 慢 0.07 倍

虽然说数据的差异和具体的实现有关系,但 Benchmarks Game 可以通过点击看到每个源代码,也能看到所使用的语言版本,而另一份基准没有任何数据,就只能是纯粹地选择相信了。

你说的对,一帧搜索一次比别人慢 1ms,搜索两次就比别人慢 2ms,十以内的加减乘除法需要了解啥。

如果你的整个真实项目就是搜索 100 次,那么是的,情况如你所说。

但更多的是就像引擎说某块性能提升 200%,项目即使用了这个模块,升级引擎后帧数也不会提升一半,因为真实项目涉及很多方面。


还有一件事是特别不能理解,和 JS 比,Python 这种就真别拿出来说了,这才是人尽皆知的慢。

根据这几年的数据,部分语言的性能应该是:

第一梯队:
Rust、C++

第二梯队:
Java、C#、Go、JS

第三梯队:
Python、Ruby、Lua

3赞

对比rust 和go 确实慢,但是要开始考虑nodejs不够用的时候,已经成功了,那时候怎么样的人招不到。。

1赞

轮子造的不错,可惜的是,论轻量开发,前有skynet, 后有网易pemelo,而且两者,转重度服务器开发已经得到大厂证明(2者起源都是网易,猪场确实牛逼);然后还有一个选型的重要维度就是*成功产品证明,*社区活跃度,*你公司没有历史包袱也不知道是不是好事-要是你公司有前服务器遗留代码-你会希望遗留的是skynet和pomelo,其他各种自制服务器真头疼吖,那么这两款产品就成功了