ChuanXin 发表于 2022-10-26 11:57

UnrealCSharp,诚心找小伙伴一起挖新坑

背景

一直有想法造一个新的脚本语言插件的轮子,起初是在C#和Rust之间做选择,在9月使用Rust写了整整一个月的某项目之后,写起来比较折磨,决定还是放弃Rust,选择C#。在10月初,开始一些预研工作,利用工作之余的时间,三周的时间里完成了第一版。
第一版功能

目前在编辑器下的基本流程已经完善并跑通,能够正常绑定Class,缓存UProperty和UFunction,支持基本类型的set/get,UFunction的Override,无参UFunction调用。通过这些,验证了一些思路的可行性以及如何在Mono中实现。由于平时比较多接触unlua,代码结构上比较相像。
短期TODO


[*]支持复杂类型(UObject,容器和Delegate)
[*]完善UFunction调用流程
[*]解决Proxy模式继承问题(C#是单继承,当前设计存在问题)
[*]支持静态绑定
[*]完善Unreal和C#两侧GC管理
[*]支持Windows平台(鉴于Editor和Windows类似,应该会比较快)
[*]划分多个DLL(如Engine和Game)
[*]PIE下进行隔离(可能是多Mono完全隔离,也可能是单Mono,然后Mono内部隔离)
[*]自动化生成Proxy
[*]Editor下自动化编译,热重载
[*]。。。
以上内容预期个人3个月,基本上会按照以上顺序来进行开发,也会进行一些合理调整,如果加入的小伙伴人数多是可以并行完成的,完善以上的一些功能之后,UnrealCSharp能够在Windows下正常运行,能够应付大部分业务需求。
中长期TODO


[*]支持Mac Editor运行
[*]支持移动端(Android和IOS),Mac端,以及PS4/5等平台
[*]C#热更新
[*]Mixed模式(通过C#反射标记生成Unreal反射,动态添加UProperty和UFunction已经踩过坑,会比较快)
[*]同时支持Mono和CoreCLR
[*]性能优化
[*]。。。
以上内容暂时还没预计时间,也会根据情况来加入一些新的功能。
第一版体验


[*]安装mono-6.12.0.182-x64-0.msi
[*]UnrealCSharpDemo,插件在submodule中,更新的时候记得拉取
[*]新建C# Class library项目,项目名为Script,利用Demo根目录Script中C#文件,生成Script.dll
[*]修改FCSharpEnvironment.cpp::64,FMonoDomain构造函数第二个参数为Script.dll绝对路径
完成以上流程后,进入游戏,点击Play,应该就能看到输出,如果有步骤遗漏我会及时更新同步。
诚心寻找小伙伴共建

对于UnrealCSharp,个人会投入比较多的工作之外的时间来完善。从目前规划的TODO,以及能够预想到的更多的挑战的来看,单枪匹马很难去完成,所以写这篇文章目的是寻找志同道合的小伙伴一起来共建这个项目。对于有心加入的小伙伴,希望的是学习性强,主动性强,当前在这方面的技能掌握不重要,只要有心,我会尽力帮你前期学习相关的知识,然后大家一起共同学习,共同完成项目。
“画饼”

通过参加这个项目,最直观收获的是知识技能,然后我个人也会一定程度上考略一些礼品和资金投入,后续会考略申请Epic的MegaGrants。

zifa2003293 发表于 2022-10-26 11:59

期待

jquave 发表于 2022-10-26 12:00

大佬!我来当第一个评论! 后边有啥事就喊

zt3ff3n 发表于 2022-10-26 12:00

你为什么不使用神奇的魔法TypeScript呢?[可怜][可怜][可怜]蛮好用的

Zephus 发表于 2022-10-26 12:05

因为最适合游戏的语言还是c#吧

Zephus 发表于 2022-10-26 12:15

nb

jquave 发表于 2022-10-26 12:24

你好,我也很感兴趣但是

RedZero9 发表于 2022-10-26 12:25

好像在群里见过你[大笑]
页: [1]
查看完整版本: UnrealCSharp,诚心找小伙伴一起挖新坑