找回密码
 立即注册
查看: 364|回复: 5

为啥市面上的游戏引擎很少用Python作为脚本语言呢,基本都是c#或者js?

[复制链接]
发表于 2023-11-3 15:17 | 显示全部楼层 |阅读模式
为啥市面上的游戏引擎很少用Python作为脚本语言呢,基本都是c#或者js?
发表于 2023-11-3 15:17 | 显示全部楼层
别听没做过游戏的人瞎扯淡。没搞过就没搞过,不懂不要装懂。

python不适合做游戏,java也不适合。性能有问题。游戏对性能敏感。根本不是啥机会问题。java和python的脑残粉远比c#多,你以为没人试过啊。

编译型语言,如果不自缚手脚,效率跟c++其实是差不多的。但如果自缚手脚就不行了。
放弃内存布局的控制能力,放弃指针,都会导致性能下降。因为缓存优化没法做了,然后有些跟c语言和c++交互的地方,没法用指针,不得不创建新的对象。new是非常降低性能的都知道吧。
python和java都是这种自缚手脚的编译型语言。

说白了,语言要高性能,就得有指针,得有struct。设计者不要“纯oo综合症“发作,把提高性能的手段完全禁了。不安全的功能,限制使用即可,不能走极端彻底废掉,不然就是损失性能。

所以只有c#适合做游戏。不是做啥脚本语言。而是c#适合开发游戏引擎本身。性能可以跟c++相当,但开发效率远高于c++一个数量级以上。所以未来c++在游戏行业是不会有市场的。

别觉得c++是啥主流,那只是因为新世代的引擎还没有放出来。放出来之后,就不会有人再用c++开发游戏了。
写代码没人家快,就是没本事。说别的都是废话。给自己找理由不如多学点别人的优点。

cocos为啥火?简单好用,但只能开发2d游戏。如果c#开发游戏引擎,它会比cocos更火。

除了c#,其实dart也是可以用来开发游戏引擎的。但dart基本没啥市场,生态不行。潜力是有的。毕竟它是个c#的仿制品。

google的编程语言不值得投资,太花心了。小熊掰玉米,啥都搞,啥都搞不好。
发表于 2023-11-3 15:17 | 显示全部楼层
因为网红python修图修太过了,吹牛逼……
Python做胶水语言特么的根本不好用,谁用谁知道。

我跟你们举个例子,有个很过分的,恶毒的游戏引擎,叫godot,
妈的它干了什么你们知道吗?
它用几乎一样的语法重新发明了一遍Python当它的内置语言,
起名叫做GDScript,
它甚至定义一套几乎一样的DSL,重头写一个解释器,也不愿意用Python……
发表于 2023-11-3 15:18 | 显示全部楼层
这里面有历史原因,网络游戏发展早期,对于脚本的需求还只是在服务器端,给c或者c++增加灵活性,特别是npc事件,任务处理等。在这个阶段,lua以其高性能和简单使用占据了游戏服务器脚本市场,并逐渐在手游时代通过对热更新的支持拓展到客户端开发。
Python痛失先机。
2008年,web游戏开始逐渐因其“点开即玩”的特征受到欢迎,针对web的flash游戏开发逐渐形成气候,并一定程度推动形成后来的h5研发技术栈基础。
2015年后,手机游戏市场引爆,  cocos引擎被王哲团队以c++重制后迅速占领市场,并在之后收购廖神的lua封装机制,通过解决热更新进一步稳固了lua在手游开发领域的地位。
之后h5游戏因为其跨端的方便性开始逐渐逐渐成为大趋势,白鹭引擎和layabox基于早期页游经验,推出了适合页游开发者习惯的引擎,cocos也放弃c++,潜心研发基于js,ts的跨端开发引擎cocoscreator,并顺利推出产品占领市场一席之地。
经过几年手机性能大幅提升和unity自身优化,几年后,手机游戏进入3d时代,unity逐渐成为主流研发工具和模式,unity自身绑定c#,并有好事者封装了lua&c#调用,继续稳固lua开发模式,不过从发展看,js,ts已经成为主流,这里面有一部分原因来自中国互联网科技企业和电商企业的发展,造成大批前端开发技术和人才积累,使得群众普及基础颇好。
停一下,再来说一说Python。
Python本身优点颇多,但曾有两个问题,一个是性能低下,这在对性能极为重视的游戏开发中不得不说是个致命问题。
二是库依赖严重,不如lua小巧、简洁、专注、稳定。
这么说来,Python在游戏领域并不乐观。
不过…
随着时代的进一步发展,一方面硬件发展导致软件性能影响越来越小,所以UE这个重武器也开始出现在移动开发中、另一方面Python本身的优化也越来越好,而游戏引擎及程度越高,对于底层也越来越不需要人参与,c/c++开发逐渐被上层脚本调用取代,UE,Blender等引擎也将Python作为开发语言选项。随着AI时代的来临,Python的话语权进一步提升,已经逐渐成为不可不学的普及性编程语言。
我相信,未来属于Python。
发表于 2023-11-3 15:19 | 显示全部楼层
……Python,在网易的时候用的自研引擎就是底层C++加逻辑层Python,有的用UE的组也要硬塞一个Python解释器当中间层然后用Python写逻辑,你知道当时我有多羡慕能写C#的组么。
发表于 2023-11-3 15:19 | 显示全部楼层
主打H5、小游戏的引擎用js无可厚非,毕竟运行环境原生支持js。
除此之外的引擎,主打语言一定是高性能的语言。或者会另外搭配一个开发效率高,性能不太高的语言来平衡,这个往往是作为胶水语言来组合主打语言开发的模块以及引擎的功能。
比如UE主打C++,搭配个蓝图。python支持,不过只能在编辑器用,用于扩展编辑器。
而Unity主打C#,但C#本身开发效率也挺高的,官方也就没额外加胶水语言。ps一下,不少性能要求特别高的unity项目,性能要求高的地方C#也满足不了,得上C/C++。
而非官方添加的脚本就多了。比如:Unity、UE下支持TypeScript/JavaScript的puerts,Unity下lua方案:xLua、slua、tolua,UE下lua方案:slua-unreal、unlua。
运行时用python作为胶水语言的也有,比如网易自研引擎,相信unity的python支持他们也有,只是没对外开放。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-7-22 02:42 , Processed in 0.105723 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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