当前位置: 首页 > news >正文

令人“悲哀”的 C# 游戏生态 —— 主流引擎支持现状与现实困境

 

506ebc008689d9245d98edd8bcd691ba

 

头图与文无关

令人“悲哀”的 C# 游戏生态 —— 主流引擎支持现状与现实困境

前言

本文中所说的悲哀,是笔者个人的感受。我之所以认为“悲哀”,是因为没有这么一个/一种开源的,且对C#有着很完善的支持的游戏引擎。

游戏引擎对C#的支持

在本文截稿日期(2025年12月12日)为止,在我印象里在世界范围内最具人气的三大游戏引擎分别是Unreal Engine(UE、虚幻引擎)、Unity(团结引擎)和Godot。在这三个引擎中,只有Unity和Godot对C#有官方支持。UE官方支持C++,曾有过第三方C#插件,但现已停止维护。

Unity对C#的支持

C#是Unity官方目前唯一支持的,用作游戏脚本的语言。其对C#的支持非常完善。在游戏调试阶段,使用其二次开发的Mono、JIT编译C#代码,使得在调试阶段无需等待漫长的编译环节。在游戏的导出阶段,则使用IL2CPP技术,将C#代码编译为对应导出平台(最后要玩这个游戏的玩家设备)的原生机器码,以提升游戏在玩家设备上的运行性能。

IL2CPP,即Intermediate Language To C++,是Unity私有,闭源的一种技术。
对于一般的C#程序,通常是先把C#编译为Intermediate Language(中间语言),然后再让C#的运行时(Mono, .NET Framework, .NET Core等)解释运行。有点类似Java的字节码。
而IL2CPP,可以把Intermediate Language转换为相同功能的C++,然后再把C++编译成对应平台的机器码。让游戏拥有极致的运行性能。

我很长一段时间没有接触Unity。原因是Unity是商业非开源项目,由商业公司主导。

为了牟利,Unity曾经还推出过“安装费”这样的让人大跌眼睛的商业政策(虽然这个政策很快被收回)。

在国内,甚至还有团结引擎这样的特供版本。让我长期对Unity不抱有很大的好感。

Godot对C#的支持

据说为了吸引Unity开发者使用Godot,同时微软曾对Godot给出过一笔“慷慨”的捐款,让Godot很早就提供了对C#的支持。Godot 官方在文档和社区讨论中多次强调,C# 是其官方支持的脚本语言之一,并试图将其定位为与 GDScript 并行的选择。但事实似乎并非如此。

Godot4相对于Godot3而言,将其使用的C#运行时从Mono迁移到了.NET,但是其在迁移后至今(Godot 4.5.1 stable仍未适配)仍未适配C# WASM,使得Godot 4尚不支持导出到Web(WASM),不能把游戏导出到网页上。

WASM,全写作WebAssembly。我暂时没找到它的中文译名,但我认为可以理解其为网络汇编。即一种运行在浏览器上的,类似汇编语言的语言。相对于JS这样的脚本语言而言,会有更高的运行效率。

同时,Godot 4 对iOS和Android平台的支持也是“试验性”的。换言之,没有成熟和完善的支持。

具体可参考下面的截图,截图自Godot官方文档(4.5)https://docs.godotengine.org/zh-cn/4.5/tutorials/scripting/c_sharp/

image

其中,对iOS,官方的描述是:

iOS support is currently experimental and has a few limitations.(对iOS的支持当前是实验性的且还有少量限制)

  • • The official export templates for the iOS simulator only supports the x64 architecture.(对iOS模拟器的官方导出模板只支持x64架构)
  • • Exporting to iOS can only be done from a macOS device.(只能从macOS设备导出到iOS)

只能从macOS设备导出不是大问题。因为据我所知,打包iOS应用只能使用macOS。对于iOS开发者而言,一台Mac设备是必不可少的。

但是,“对iOS模拟器的官方导出模板只支持x64架构”。我不知道这句话是否隐含:存在“对iOS模拟器的、支持Arm64架构的官方或非官方导出模板”(似乎是没有的,至少我没查到有)。

如果的确只能支持x64架构,那说明其对iOS的支持基本可以说是没有的。因为,苹果公司从来没有发布过x64架构的iOS设备,包括iPhone、iPad和iPod。使用这个模板导出的游戏只能运行在使用Intel芯片的Mac的iOS虚拟机上。

这样的“试验性”支持对于一个正式游戏项目而言是不可接受的,更不必说商业化项目了。这样一来,基本上可以说Godot 4 C#只支持三大桌面平台(Windows、Linux和macOS)。

对我个人而言,在Godot提供了官方支持的两种语言中,我更偏向于使用C#。主要原因是我认为C#是一门更强大、更完善、更成熟的编程语言。它和主流的开发语言Java、C++在语法上更相似,有着高级的面向对象特性。有着更广泛的使用生态,在后端开发、桌面开发甚至机器学习方面有着很广泛的应用。另外,使用C#还有一个好处是,可以使用.NET生态下丰富的NuGet库。

在性能上,C#与GDScript各有优劣。一般而言,C#的性能优于GDScript。但是如果游戏程序要频繁调用Godot的接口,从C#到Godot的跨语言调用也是一笔不少的开销。在官方文档(见参考4)中说到,这种开销甚至在某种情况下会使其性能不如GDScript。

综上,Godot 4 作为一个开源游戏引擎极具吸引力,但其C#支持在移动端跨平台导出能力方面,尚不足以承载严肃的商业项目。

其他引擎

Godot 3 似乎有着对Web(WASM)、iOS、Android较好的支持。但是其使用Mono作为运行时,不支持C#新的语言特性。且Godot3本身也已经不再加入新特性,和Mono一样,进入了“长期维护状态”。

我查到了一个叫MonoGame的技术,但实际上它不算一个游戏引擎,只能说是一个游戏框架。没有编辑器、什么轮子都要自己造,在易用性上远不如Unity和Godot。

写在文末

本文仅代表作者个人观点,如有纰漏,欢迎友好的批评与指正。

参考:

[1]Godot官方文档,https://docs.godotengine.org/en/4.5/tutorials/scripting/c_sharp/
[2]Godot Blog.Raul Santos.Current state of C# platform support in Godot 4.2,https://godotengine.org/article/platform-state-in-csharp-for-godot-4-2/
[3]Reddit.hermitfist.State of Godot 4.4 Android/iOS using C#? Commercially viable?
[4]Godot官方文档,https://docs.godotengine.org/zh-cn/4.5/about/faq.html#which-programming-language-is-fastest

 

http://www.jsqmd.com/news/84838/

相关文章:

  • 单车慢跑中的节奏建议
  • 工具分享:彻底解决Docker拉取慢/超时,解放双手!自动测速优选配置镜像源 代理切换脚本
  • CS配合CrossC2插件,实现MacOS/Linux上线
  • 1、掌握 Puppet 4:高效管理 IT 基础设施的秘诀
  • 无需运动恢复结构(SfM)的层级训练三维高斯溅射(3D Gaussian Splatting)
  • 2、初探Puppet清单编写
  • 3、编写首个Puppet清单指南
  • 前端工程师必看:AI+前端+A/B测试 实战指南(小白友好版)
  • 4、Puppet 入门:从基础使用到主从架构搭建
  • Notepad++紧急更新,且是两个版本,究竟修复了什么
  • 5、Puppet 主节点与代理节点:全流程解析与性能优化
  • 6、深入探究 Puppet:Facts、Types 与 Providers 详解
  • C51_HC-05蓝牙通信
  • 7、Puppet资源类型与模块:深入剖析与实践应用
  • 8、利用类和自定义类型模块化清单
  • 网络融合
  • 9、深入理解 Puppet 中的类、定义类型和模块
  • 10、Puppet 模块:结构、管理与实践指南
  • 智源Emu3.5震撼登场:AI首次实现物理世界统一认知,开启多模态交互新纪元
  • 利用sklearn进行pca降维
  • VS-CODE 里的github copilot 不支持自己配置模型api
  • 图像分割
  • Easy Holden Key Programming: Lonsdor K518 Pro FCV License Activation for Mechanics Owners
  • 线性代数(五)向量空间与子空间
  • 大模型学习基础(五) 强化学习(Reinforcement Learning,RL)初步
  • REST--GCA
  • linux查看内存
  • SPM设置原点
  • 30亿参数引爆企业智能升级:IBM Granite-4.0微型混合模型如何重构本地化AI部署生态
  • Qwen3-VL多模态大模型全解析:技术突破、部署实践与行业应用指南