WebAssembly 现在越来越流行了 以后Cocos 会不会支持c#?

个人认为觉得运算符重载是非必要的前端程序,多数做的项目都是等服务端给运算结果付个值就行。
只要是做过重前端运算处理项目的人都不会説出这句。

开始扯皮了,吃瓜

是的,但凡写过运算逻辑多的,都不会觉得运算符重载没必要,写一堆3d向量的运算,难道不会觉得调函数来算很恶心?或者是没有用运算符重载的功能写过这些逻辑,所以就没有对比

2赞

实际上就是目前这两点,导致了 Vec3 使用和计算的繁琐(需要各种clone和类型转换)。不过语言层面的问题没法解决,只能将就用了。

1赞

ECS:啊?

脚本有脚本的方便 例如json序列化这块 编程语言是弱势 重载运算符也不是不可以用函数替代 eq 和 == 肯定是eq直观点 另外你说的堆和栈无非就是global和local区别 出了作用域都会释放掉 除非new出来的 js也可以做到的
脚本语言的key访问需要查询 但能动态 这是struct做不到的 所以反序列化这块确实方便

5920a70d1179da25ad83cf2ef2a7b0c6
…为什么不用Rust!
Rust也很好!

个人愚见:
CCC性能的关键其实一直不是TS/JS效率不够
再不够能有屁眼子差?(pyhton)
网易还在用屁眼子做脚本呢!你看他们怕了吗?
那么快干啥?投胎啊!?
就不能把吃性能的代码和不吃性能但是吃开发效率的代码,分分?

所以更重要的,是和C++的交换
换种方式说,是高性能任务需求能够怎么方便快捷且尽可能减少损失的交付结果给脚本方
这层Cocos这边就是C++,网易那边NeoX,还是弥撒亚也是C++。

一个语言梭哈全部确实好,但是如果你用一个不方便的语言梭哈,那真的吃大粪,UE就是这样的,虽然也能用LUA这些,但是你如果不用,“U++”是真的体验不好。写这个我不如写2DX

你看看鸿蒙os,arkTs做开发语言,复杂的上C++
像不像?我是说像不像一个椰子游戏引擎?
做好这一层,就够了,虽然目前这一层COCOS也没做好,但是你别忘了, Unity h5当年走得慢,被Cocos狙击,也是因为这块卡了好几年,这几年Wasm给力了,小游戏支持了,才开始有胆子的。
搁以前,谁用啊?
你用吗?我不用。

ps:虽然c#好用,大家也都是"公认"的,那也要看和谁比,和C++一流比,那肯定好用
但是就这样子想和我大TS碰瓷,不好意思了,“孩子永远是后面的可爱” :rofl:

附带一张速度图:

https://github.com/theolivenbaum/h5

类似这样的呢,c#编译到js

WebAssembly 流行 和 支持C# 什么关系?

Rust是一个好语言,无gc设计解决很多痛点,但过严紧的编译器机制, 对于程序员的要求太高, 开发速度会受很大影响,估计语言后面如果不放寛, 感觉很难受大众喜欢, 或者公司会采用这技术方案, 如果走Rust+脚本形式开发项目, 那很多人还是会走回C++&脚本或 C#&脚本的方案

我并没有否定js的优势,脚本语言这是未来趋势, 但不代表语言不用进歩, 一个好的语言已攻占简单领后就应该向深度领域发展,操作重载符只是基本, 你説的eq 更直观十分片面也证明你用ts写的都是简单处理项目, 还是那句, 特殊的一条加减乘除公式处理, 你用符号直观还是add, sub 这种一层嵌套一直观?如果嵌套无所谓干麻要有promise 去解决回调地狱。
另外你説的栈和堆就是global和local, 这是有多肤浅的説法? 你看过v8的js 垃圾回收原理不?标记删除法不用耗cpu资源?任何一款有自动gc的语言都一直在讨论如何有效减少gc,有那个会讨论如何减少栈回收?

用TypeScript没问题,是否有办法在发App的性能更高一些,开发H5体验不变的情况下利用: TypeScript2Cxx (随便搜索的) 把一些耗性能的TS模块直接C++然后再编译打包。(像il2cpp那种玩法)

虽然都说C#好用,但是如果不是unity把他作为主要语言,真看不到他在其他领域有什么大的作为,web前端有用吗?没用,后端有用吗?很少,开发桌面应用有用吗?很少,开发移动APP有用吗?基本没有。或许unity用它的原因之一是他们公司和微软的关系不错~

ts2cc作者有升级版的编译器。且一直在更新。内置jit和gc。 ASDAlexander77/TypeScriptCompiler: TypeScript Compiler (by LLVM) (github.com)

1赞

Cocos 不会换成 C# 的。不过 TS 的潜力会持续挖掘下去。

TS 从来就不把自身定位成全新的语言,而是在 JS 的基础上增强“协同”能力,因此编译出来的东西必定是标准的 JavaScript,甚至只要做完类型擦除,bun、deno 就能把它们跑起来。

如果 TS 是一门全新的语言,好处是:
天然可以引入重载、值类型、析构函数等诱人的语言特性

坏处是:
无法和 JS 生态兼容!无法互操作!无法动态 polyfill JS 库!甚至无法做单文件编译。(目前 Creator 基于 babel 方案,引擎和项目代码都是单文件编译的,只有改动过的代码需要重新编译。这也是为什么 const enum 编译后那么恶心的原因,TS 引入的这个特性实际上偏离了自己的设计目标)

是的,目前市面上的 TS AOT 方案,都会存在上述问题。当然这些问题在 Creator 生态里可能都不是事,但是对微软来说不符合这门语言的定位。

我只是解释了为毛 TS 会缺少一些游戏领域(或者说数学领域)的关键基础设施。

PS:上文所指的无法互操作,指的是在虚拟机层面目前不支持。如果要支持的话是可以的,引入跨语言调用、装箱拆箱等机制即可。

1赞

正常呀,因为.net决策的失误造成这样的,
晚了就慢慢回暖,
用着舒心才是重要的,比如py和java,也没c#搞游戏的多,
起死回生的语言很少,

c# .绝对算一个,

.net 以前不开源。不官方跨平台,被多少人抛弃了,现在回暖,真的牛批

这个TypeScriptCompiler把ts直接编译为Native确实猛,但cocos creator的其他代码交互还是C++更友好吧!

看3.8.x的结构,发布app如果要把一个项目完全去掉v8然后能跑起来,目前还是太难了,ts的比重太大。
(有好的示例或者方案,欢迎交流)

其实还是大环境造就的,国外的技术氛围比国内好太多了,一个小小的插件有无数人研究迭代很多年,国内干啥都是java一把梭,是它比rust优秀吗,比c#、kotlin又好多少?真不见得,好招人,当牛马,培训班一窝蜂往上冲,突出一个急功近利,35岁拜拜,国外的团队技术选型百花齐放,unity敢启用半死不活的c#,flutter敢启用无人问津的dart,搁国内试试,死的那叫一个快

2赞

c#能热更了?