找回密码
 立即注册
搜索
查看: 8569|回复: 43

[其他] 为什么业界游戏引擎还在使用落后的C#语言开发?

[复制链接]
     
发表于 2019-8-20 10:17 来自手机 | 显示全部楼层 |阅读模式
比如广大独立游戏爱好者喜爱的U3D技术,是基于C#语言开发的,往往跨平台容易造成系统不兼容问题,移植平台需要重写一份代码。使用java语言开发移植平台的时候就不需要重写代码了,这样移植后平台也不会造成优化变差的局面。为什么现在游戏界还不大力推行java语言呢?

评分

参与人数 1战斗力 +1 收起 理由
eggplant + 1 推Java还不如推最好的语言PHP呢

查看全部评分

回复

使用道具 举报

发表于 2019-8-20 10:18 | 显示全部楼层
本帖最后由 竜破斬 于 2019-8-20 10:21 编辑

因为用了java之后从一开始优化就变差了而且游戏界用的多的是C++吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 10:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2019-8-20 10:22 来自手机 | 显示全部楼层
竜破斬 发表于 2019-8-20 10:18
因为用了java之后从一开始优化就变差了

那么有没有一种语言可以解决跨平台和优化问题呢?
回复

使用道具 举报

     
发表于 2019-8-20 10:23 | 显示全部楼层
提醒一下楼主,Java诞生于1995年,而C#诞生于2000年
回复

使用道具 举报

     
发表于 2019-8-20 10:23 来自手机 | 显示全部楼层
很久以前,拿JAVA开发点游戏引包都有点麻烦,轮子都没有更别提造车了,不知道现在咋样了。
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 10:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 10:28 来自手机 | 显示全部楼层
C#跨平台有mono,谁跟你说要重写代码了?
回复

使用道具 举报

     
发表于 2019-8-20 10:30 | 显示全部楼层
王怡人 发表于 2019-8-20 10:25
我的世界不就java开发的么,  卡得一逼

我觉得我的世界可能怪不了java,只能怪majong自己······
这边基岩版史诗光影鸽了,让英伟达RTX入场,majong技术真的8行。
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 10:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 10:33 来自手机 | 显示全部楼层
C#不落后。Unity跨平台做得是偏好的那一档。。。
回复

使用道具 举报

     
发表于 2019-8-20 10:40 来自手机 | 显示全部楼层
为啥不搞开发喜欢参合开发这事情?
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 10:42 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2019-8-20 10:45 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2019-8-20 10:45 | 显示全部楼层
LZ想问的是C++吧。C#主要就是Unity在用,一般inhouse引擎的底层肯定都是Cpp写的。
用C++一开始的原因就是高性能和方便优化,后来的原因就是路径依赖。一直有很多人在尝试让游戏开发远离C++,比如吹哥就很烦C++,自己开发了一套语言Jai。他直播了好几年在用他做的编译工具链写引擎
回复

使用道具 举报

发表于 2019-8-20 10:47 | 显示全部楼层
本帖最后由 竜破斬 于 2019-8-20 10:48 编辑
yexuning 发表于 2019-8-20 10:22
那么有没有一种语言可以解决跨平台和优化问题呢?

跨平台一键移植的一般都跑在虚拟机里,没法针对硬件优化。而要提高运行效率做出最好的画面效果针对游戏主机的硬件进行优化是必须的。所以大部分3A游戏用的引擎像unreal,cry engine,寒霜等都是用C++写的。
unity就是属于一键移植的,你看官网列出来支持平台数量那是一个多,然而unity游戏的运行效率也不用我多说了吧。
回复

使用道具 举报

头像被屏蔽
发表于 2019-8-20 10:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 10:48 | 显示全部楼层
java效率多低啊……在统一硬件平台下代码执行效率越高,内存用的越精致,画面表现就越好。而且9012年了都,跨平台概念不是早就破产了吗……

  -- 来自 能手机投票的 Stage1官方 Android客户端
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 10:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 10:51 | 显示全部楼层
qfqczr 发表于 2019-8-20 10:23
很久以前,拿JAVA开发点游戏引包都有点麻烦,轮子都没有更别提造车了,不知道现在咋样了。 ...

拿idea开发java引包的体验还行,游戏开发就不太了解了,到处都是unity,PC上用java开发的游戏倒很少听到

不知道所谓的跨平台优秀是哪来的
回复

使用道具 举报

     
发表于 2019-8-20 10:51 | 显示全部楼层
运行效率低下,90%的锅在于你的实现,而不在于你用什么语言。
回复

使用道具 举报

发表于 2019-8-20 10:51 | 显示全部楼层
すぴぱら 发表于 2019-8-20 10:32
谁跟你说c#是落后语言移植平台需要重写的?我看你是看不起il2cpp编译器

java这种弟弟一个虚拟机占 ...

其实部分重写还是要的,手柄这块就逃不过,触摸屏这块也是。
游戏开发说说c艹艹落后java先进这能给我一早上的乐子

回复

使用道具 举报

发表于 2019-8-20 11:03 | 显示全部楼层
竜破斬 发表于 2019-8-20 10:47
跨平台一键移植的一般都跑在虚拟机里,没法针对硬件优化。而要提高运行效率做出最好的画面效果针对游戏主 ...

unity的底层照样是C++写的,C艹艹只是中间层。中间层这块用C艹艹或者C++的影响远没底层那么大,相反为了方便这年头中间层用C艹艹、JS、LUA的比比皆是。用开发不方便的C++反而是有多想不开。
谈到效率问题,unity和其他商业引擎比确实有差距,但也没那么夸张的地步。unity表现的效率不行更多是开发人员的问题,开发unity效率不行的,换其他引擎也是一个样,这块unity只是吃了易上手易用的亏。


回复

使用道具 举报

     
发表于 2019-8-20 11:15 | 显示全部楼层
本帖最后由 lemore 于 2019-8-20 11:31 编辑

U3D不是C井写的,C井只是一个用于业务层的语言,用来调用U3D写好的接口,对所谓的性能以及移植影响不大。实际上为了开发敏捷这种做法在游戏界很常见,C或者C艹用来做业务开发非常不方便,通常就是C写好底层,然后用高级语言或者脚本语言去写业务。

性能低下大部分还是游戏开发人员自己的锅,业务层实现用了撒皮算法拉低效率那游戏引擎也阻止不了,算法垃圾用C写还是python写那都一个样,去leetcode上看看统计,一样的算法C和python耗时不会差太多,这种差距在业务层上是完全可以忽略的(然后python实现四五行,C写了十几行)。
回复

使用道具 举报

发表于 2019-8-20 11:30 | 显示全部楼层
本帖最后由 竜破斬 于 2019-8-20 11:37 编辑
museqsou 发表于 2019-8-20 11:03
unity的底层照样是C++写的,C艹艹只是中间层。中间层这块用C艹艹或者C++的影响远没底层那么大,相反为了 ...

主机要优化好自然是要魔改底层来实现最好的效果啊。只在中间层开发天然在优化上落后魔改底层的一截。当然现在主机都x86了,估计魔改的必要性也没有以前那么大了。
确实。unity主要还是缺少3A游戏站台,几乎都是中小规模游戏。给人一种低成本游戏专用引擎的印象。
回复

使用道具 举报

     
发表于 2019-8-20 11:34 | 显示全部楼层
LZ明显就一巨魔,你们还真喜欢上钩
回复

使用道具 举报

     
发表于 2019-8-20 11:39 来自手机 | 显示全部楼层
槽点太多,我还是扔到其他地方让大家开心一些吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 12:06 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 12:11 | 显示全部楼层
RE引擎也用C#当脚本哦
回复

使用道具 举报

发表于 2019-8-20 12:29 | 显示全部楼层
黑丝大野模 发表于 2019-8-20 10:48
java效率多低啊……在统一硬件平台下代码执行效率越高,内存用的越精致,画面表现就越好。而且9012年了都, ...

跨平台概念不是破产,只是已经成为新的语言标配了,所以没人提了
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 12:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2019-8-20 12:49 来自手机 | 显示全部楼层
lemore 发表于 2019-8-20 11:15
U3D不是C井写的,C井只是一个用于业务层的语言,用来调用U3D写好的接口,对所谓的性能以及移植影响不大。实 ...

不 python实在是太慢了,相同的逻辑一般有10-100倍的差距
回复

使用道具 举报

头像被屏蔽
     
发表于 2019-8-20 12:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2019-8-20 13:23 | 显示全部楼层
I is fishes
当代跨平台最大的问题在于你有那么多平台要跨吗?如果真到要跨平台的时候真的不能再投入时间写一份吗
回复

使用道具 举报

发表于 2019-8-20 13:51 来自手机 | 显示全部楼层
lemore 发表于 2019-8-20 11:15
U3D不是C井写的,C井只是一个用于业务层的语言,用来调用U3D写好的接口,对所谓的性能以及移植影响不大。实 ...

别逗,py和java比都有数量级的差别,更别说c/c艹了

leetcode 3sum:

回复

使用道具 举报

     
发表于 2019-8-20 14:37 | 显示全部楼层
天才援交少女 发表于 2019-8-20 13:51
别逗,py和java比都有数量级的差别,更别说c/c艹了

leetcode 3sum:

挑题目就没意思了啊,python这种脚本语言操作数组容器本身就天然劣势,写基于数组操作的算法当然吃大亏

如果主要容器是用hash-map,那差距就没那么大:

当然我的不是最优解,CPP时间最优解在40ms,py在100ms


如果不是写图形渲染,网络收发之类的底层,编程语言的这些性能差距基本不构成影响。我不是想说py在性能上能和cpp五五开,我的意思是大部分用现有引擎的游戏开发者,他们接触到的场景都是逻辑业务开发,在这个场景下编程语言造成的瓶颈很小,甩锅给语言不合适。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2019-8-20 14:52 | 显示全部楼层
用C#是因为Unity这个通用引擎用啊,而且人家是Script啊

如果有用Java的通用引擎也行啊
回复

使用道具 举报

     
发表于 2019-8-20 17:16 | 显示全部楼层
天才援交少女 发表于 2019-8-20 13:51
别逗,py和java比都有数量级的差别,更别说c/c艹了

leetcode 3sum:

人家是说业务层而不是底层。
回复

使用道具 举报

     
发表于 2019-8-20 18:45 | 显示全部楼层
点进来之前我还以为是想说Rust
回复

使用道具 举报

发表于 2019-8-20 18:57 | 显示全部楼层
看泥潭这些精神程序员嘴炮,真有意思

c#作为语言挺好的,要跨平台,有需求就有方法,最多就是成本问题,虚拟机一起打包完事儿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-18 10:42 , Processed in 0.196191 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表