游戏开发者必备:JetBrains Rider 跨平台.NET IDE 工具评测

昵称 6个月前 84浏览 0评论

作为一名从业多年的游戏开发者,尤其是虚幻引擎的重度用户,除了 Visual Studio 之外,选择其他 IDE 工具对我来说确实有点困难。不过从 2017 年 JetBrains Rider 推出之后,这种被 VS 垄断的局面正在逐渐改变,身边越来越多的朋友推荐我使用它。

Rider 简介

Rider 诞生于 2016 年,是 JetBrains 旗下非常年轻的跨平台 .NET IDE,目前支持包括 .NET 桌面应用、服务和库、Unity 和 Unreal Engine 游戏、Xamarin、ASP.NET 和 ASP.NET Core Web 等多种应用的开发,凭借强大的代码检查和快速响应能力,目前已经成为可以与 VS 相媲美的明星产品。

熟悉 JetBrains 产品的朋友应该知道,他们的 IDE 工具(IntelliJ IDEA、PyCharm)基本都是基于 JVM 构建的,因此大部分语言支持插件以及相关产品也都是基于 Java 开发的。不过这些产品中却有一个例外,那就是基于 .Net 架构的插件——ReSharper。

ReSharper 是 VisualStudio 的一个扩展插件。由于 VS 长期存在的搜索速度慢、跳转不准等问题,Reshaper、VA 等能够提高开发效率的插件一直有着广泛的市场和用户,受到了众多开发者的好评和青睐。今天文章的主角 Rider 是一款以 Resharper 为后端、IntelliJ 为前端构建的全新 IDE 产品(但 ReSharper 无法托管在 JVM 上)。

据说 JetBrains 早就计划开发 .Net IDE,但由于微软长期垄断 Windows 开发环境(并力推 VisualStudio 作为官方 IDE),很多相关底层技术一直没有开源游戏开发,只能靠开发 ReSharper 插件来跟上 .Net 的发展。如今,微软收购了 Mono,整合了 .NetFrameWork,并将其升级为新开源的 .Net core。或许正是这些足以表明其开放态度的动作,才让 JetBrains 重新开始了 .Net IDE 的开发。

游戏开发环境及常用IDE

古代的游戏开发非常复杂,没有成熟的图形硬件设计思路,没有标准的图形API,当然也没有配套的IDE产品,几十KB的内存就要几百块钱,开发者需要小心翼翼地处理每一点,绞尽脑汁为硬件编写各种汇编代码。

>>游戏中的物体需要用精确的字节来表示

但随着计算机技术的发展和个人PC的普及,游戏主机的硬件架构逐渐清晰起来(PS、Xbox、PC、Switch),相关图形API如OpenGL、DirectX等也日趋完善。我们甚至可以通过交叉编译在Windows平台上完成跨平台游戏的开发(如IOS、Android、Xbox)。同时随着游戏引擎的诞生和发展,游戏的分层架构也越来越成熟,游戏开发者也可以将更多的精力放在游戏玩法设计上,而不必担心那些繁琐的硬件细节。

>>雅达利时代的电子束扫描绘图

Unity和Unreal作为目前主流的商业引擎,都拥有极其强大的功能和支撑工具,但开发一个数十万甚至数百万行代码的项目时,编码工作还是非常复杂且具有挑战性的。

目前主流的开发语言都是C#或者C++,到了具体岗位开发环境会有所不同,比如TA可能需要经常写Shader,UI可能需要经常写脚本语言。作为客户端开发者,以下是我平时常用的一些开发环境和常用的工具:

当然还有很多项目内部工具,比如WEB工单管理系统,Build工具,日志分析工具等等,这里就不一一列举了。总的来说,虽然内容看似杂七杂八的不少,但其实我大部分时间都在和Visual Studio打交道(编码和调试Bug),IDE自然对个人工作效率影响很大。

前面提到,由于PC游戏的火爆,以及Windows在图形技术上的推广,我们通常选择Windows作为主要的开发环境,因此微软官方的Visual Studio早已成为主流的开发IDE。但是VS过于强大甚至过于复杂,集成了一堆我们可能并不需要的工具和环境,造成了一定的效率损失。另外由于它没有针对游戏引擎进行专门的定制和优化,因此会存在很多不便,甚至有很多的bug。

就我个人而言,使用 VS 进行日常编码有几个痛点:

如果你在日常开发中也遇到类似的问题,不妨像我一样尝试一下Rider。

乘客用户体验

安装和基本使用:

其实VS升级到2022之后,体验确实比以前好了很多,但是有些卡顿、跳动等问题并没有得到很好的解决,在朋友的强烈推荐下,我转而尝试了Rider这个广受好评的编辑器。

为了节省大家的时间,我直接把安装,配置,打开和运行步骤粘贴到下面的截图中。

(由于Rider是和Unity捆绑在一起的,所以Unity用户不需要手动下载,我们可以直接在窗口->包管理器->中搜索“Rider”集成包。)

(下载链接)https://www.jetbrains.com.cn/rider/download/download-thanks.html

整个 Rider 只有 1G,下载安装过程非常流畅。考虑到从其他 IDE 迁移过来的用户,Rider 非常贴心,打开后会提示你导入其他编辑器中的热键,并自动帮你安装相应的插件。另外 Rider 可以像 VS 一样直接打开 sln 项目,无需其他设置。

提高效率的配置建议:

使用 Rider 打开项目之后,我们可以直接在项目根目录看到 ReadMe.md 文件。整个编辑器的布局非常清晰,顶部是全局菜单栏,旁边是一排 Run/Debug 相关按钮。中间的主要查看区域是资源目录和代码窗口,最下面一排是日志、编译信息、Git、Debug 等多个可折叠窗口。

在正式使用之前,建议您先进行一些设置。

1.设置快捷键。【“Ctrl + Alt + S”】打开设置界面,然后找到【KeyMap】进行设置。刚才安装的时候会默认读取你本地的环境,并推荐你对应的“KeyMap”。在这里我们可以找到你习惯的快捷键设置,并应用。

同时对于其他功能,大家可以直接按键搜索,或者点击后面的放大镜直接使用快捷键找到对应的设置。网上有些教程给的快捷键可能和你本地的不一样(包括我们后面的快捷键介绍),原因是不同的人使用配置不一样,如果实在找不到可以先切换到别人的配置,再按快捷键找到这个功能。或者去官网下载快捷键PDF参考(注:这里需要提醒大家,有些快捷键可能会被其他软件占用而失效,比如输入法里的Ctrl+Shift+F)

https://www.jetbrains.com.cn/rider/documentation/#keyboardShortcut

2.插件:默认情况下,在安装过程中,Rider 会根据您的选择帮助您安装相关的插件,比如支持 C++ 和 .NET、支持 JavaScript 和 CSS 等。

另外,建议你手动安装Key Promoter X插件,当你使用非快捷键(点击鼠标)时,右下角会弹出窗口提示你对应的快捷键,有效巩固你对快捷键的记忆。

3.代码主题:不同的用户有不同的主题使用习惯,比如我一般在VS上开发都是使用VA,为了无缝切换到Rider,可以在编辑器右侧的设置按钮中找到Theme,选择Visual Assist Dark即可完成设置。

功能推荐

完成配置之后就可以开心的开始开发了。当然Rider不仅仅只有这些功能,还有一些重要的功能推荐大家使用。

1、搜索:对于一个复杂的项目来说,搜索当然是最重要的,最方便快捷的就是【Shift+Shift】进行快速全局搜索,类似VS里的【Ctrl+T】,可以搜索类型、文件、文本字符串等,支持首字母搜索,速度很快。如果忘记了某个快捷键,还可以通过Actions标签页搜索关键字,非常方便实用。

另外一个很重要的快捷键是【“Alt+Enter”】,可以调出悬浮窗来处理一系列相关逻辑,包括自动代码插入、导航定位、变量重命名、定义结构分离、一键注释等相关功能。

[“Alt + G”] 或 [“Ctrl + 鼠标左键”] 可以快速切换类的函数和定义,没有任何延迟,非常准确。[“Alt + O”] 可以轻松切换类的头文件和 CPP 文件。(这些在 VA Assistant 中也有,但 Rider 确实快得多)

【“Alt+Shift+F”】(VA KeyMap)可以触发FindUsages函数全局搜索函数引用,如果只有一个引用,则会跳转到相应位置。

【“Ctrl+Shift+F”】可以全局搜索某个字符串,并在几秒内打开一个窗口显示结果,点击结果还可以快速切换不同的窗口,预览起来非常方便。

【Ctrl+F2】或【Alt+Home】可直接显示当前文件所在目录,并可在当前目录前后快速跳转、搜索。

您还可以设置更多快捷键来快速打开当前文件夹或控制台等。

此外Rider对Shader代码提示和搜索也提供了优秀的支持,编写HLSL基本上和编写C++C#一样流畅。

2、编码:在头文件中声明类之后,我们可以使用[“Alt + Insert”]来自动插入常见的构造函数、getter、setter等,声明函数之后,也可以转到CPP中,直接使用[“Alt + Insert”]来插入所有未实现的函数代码段。

[“Ctrl E”]或[“Ctrl Comma”]可以快速打开最近查看的文件列表。

[“Alt + ↑或 ↓”] 在当前文件的功能间切换。 [“Ctrl + End/Home”] 在当前文件的开头和结尾间切换。

Rider 的提示功能也很强大,可以快速提示你在编码时可能想要使用的类型,还支持显示宏定义的参数名称。

我们还可以在编辑器中设置常用的“代码模板”,以便快速输入自定义格式的代码片段。例如UE中打印Log的界面相对复杂,所以我们可以自定义“小写不同版本的代码模板”,快速输出我们想要的格式。

很多Linux用户可能更习惯Vim操作,在Rider中还可以一键设置按键习惯,安装IdeaVim插件后,就可以轻松在Vim和Intelj之间来回切换。

3、Git相关:默认安装了Git相关插件(如果没有游戏开发,可以在Plugin配置下搜索)。【Alt 9】打开Git窗口,我们可以轻松进行Push、Fetch Commit、Blame、View Diff、View History等操作。习惯之后,就可以在Rider中完全进行Git相关的操作,大大提高效率。

4.调试:Rider 可以自动查找并加载 UE4.natvis,但是它的调试流程比较特殊,需要在特殊的调试模式下运行才能调试。(不能直接点击运行)常见的调用堆栈、变量监控、函数断点(条件断点)、内存数据断点、立即窗口、单步调试都支持,但是很多窗口不支持折叠或者更多设置,内存断点比较麻烦,地址断点不能自定义,不支持调试变量的字符串匹配搜索,有待改进。

5、数据库:Rider 自带了数据库可视化工具,可以在软件中直接操作数据库,而且我们平时用的 SQL Server、MySQL、Apache、Oracle 都支持,使用起来非常方便。

6.全栈开发:Rider 本身其实对全栈 WEB 还是比较友好的,支持所有常见的 JavaScript、TypeScript、HTML、CSS、JSON、SQL 等。在游戏开发中,除了 C++、C#,我们还可能需要编写 Lua、Python 等脚本代码,所以我们经常会用到 VS、VSCode 来编写不同语言的代码。有了 Rider,再结合一些插件,我们就可以在一个 IDE 中完成所有的操作。另外 Rider 还支持 SSH,对于同时兼职客户端和服务端的同学来说,用 Rider 做前端,然后直接 SSH 到远程端写服务端代码,还是很舒服的。

7、其他功能:还有一些比较人性化的功能,使用起来也很方便。

8. 关于中文本地化:Rider 在 2 月初刚刚推出了简体中文本地化的抢先体验计划,目前体验还不错,预计很快就会正式发布。

https://blog.jetbrains.com/zh-hans/dotnet/2023/02/07/introducing-the-rider-localization-eap-for-chinese-japanese-and-korean/

骑手和游戏开发

作为一款进军游戏开发领域的 IDE,Rider 为 Unity 和 Unreal 做了很多定制开发,提升了效率。早在 Rider 问世之初,就已经为 Unity 做了很多功能,并得到了 Unity 官方的推荐。Epic 今年年初官方发布的 Matrix Demo 也是使用 Rider 开发的,这也间接证明了 Rider 对 Unreal Engine 的支持以及 Epic 官方对它的信任。

Rider 针对游戏开发的定制优化:

自定义代码检查及提示:针对不同游戏引擎提供了非常完善的代码检查和智能修复功能(一键生成#include缺失文件等)。例如针对Unreal,可以自动显示所有反射相关的提示,包括UPROPERTY、UFUNCTION、UCLASS宏中的参数,还可以检查RPC、属性回调函数等的参数是否设置正确。

资源索引与定位:对于 Unity,可以直接在代码中看到哪些物体使用了此脚本及相关引用,还可以智能地进行反汇编跳转到指定源代码。对于 Unreal,可以直接在代码上以浮窗的方式显示蓝图资源的引用编号及位置,并支持阅读和搜索蓝图。

为特定类型的脚本和文件构建模板:例如UnityScript,Unity Shader,Unreal UObject/Actor Class等。

完美兼容Shader编写:所有IDE快捷键均可使用

支持与引擎的双向通信:可以在IDE中直接操作引擎编辑器的Play等操作

日志共享:可以在IDE中直接查看和搜索游戏日志,也可以通过点击日志直接定位到对应的代码。

断点暂停:Unity支持断点同时暂停整个游戏,恢复断点后仍保持暂停状态

单元测试:您可以在 IDE 中配置多个单元测试,一键执行并返回所有结果

配置文件:支持Unreal读取配置文件内容并在IDE中显示

为了让Unreal开发更加顺畅,我们还需要做一些设置来提高用户体验:

https://www.jetbrains.com.cn/lp/rider-unreal/

1.安装Riderlink:如果你使用Unreal Engine进行开发,打开项目后会推荐你安装RiderLink,这是官方专门为UE开发的插件,提供了Rider Blueprints、GameControl、Logging、ShaderInfo四个子功能,会直接安装在对应项目或引擎的Plugin目录下。

按照这个操作之后,我们就可以直接在编辑器中创建Unreal中的常见类型了。

直接在IDE中设置UE编辑器中的启动参数

可以直接在IDE窗口查看UE编辑器日志,直接使用Log分层过滤功能,快捷方便。

2.安装EzArgs插件:一般来说,如果要在启动时添加命令行参数(比如你想运行纯客户端而不是编辑器),那么需要打开项目设置,在项目命令行参数中添加。

安装完插件之后,我们可以直接在这里添加参数,有个技巧就是正常填写所有参数并保留,如果要使其无效,就在“-”和字符串之间加一个空格,使用的时候把空格删掉即可。

由于 Rider 长期以来一直支持 Unity,因此您无需下载其他插件即可享受上述各种功能。需要补充的是,

我们第一次使用的时候需要在Unity编辑器“编辑->首选项->外部工具->外部工具”中将IDE设置为Rider,以后就可以直接在编辑器中双击脚本在Rider中打开了。

https://www.jetbrains.com.cn/lp/dotnet-unity/

结论

通过这段时间对 Rider 的体验,我感受到了 JetBrains 对产品的用心以及未来的发展潜力(特别是在游戏开发环境方面)。虽然 VS 依然有着不可撼动的地位和优势,但在很多方面,Rider 已经和 VS 不相上下甚至超越了 VS。单从游戏开发的角度来说,Rider 在整体体验上确实要优于 VS。

最后我们来对Rider和VS做一个相对全面的比较:

用户体验的差异

当然除此之外官方还给出了更完整更详细的对比,大家可以自己去看看

https://www.jetbrains.com/rider/compare/rider-vs-visual-studio/

Rider 是一款年轻而优秀的 IDE,将搜索和提示做到了极致,一旦用户熟悉了它,可以大大提高开发效率。同时考虑到它针对 Unity 和 Unreal 的定制,Rider 绝对可以说是最适合游戏开发的 IDE 之一。如果非要说一个缺点,那可能就是 Ride 不是一款免费的 IDE 产品,购买使用第一年需要花费 149 美元(第二年 119,第三年 89)。从个人角度来说,这个价格并不便宜,但对于公司来说还是比购买 VA 划算。学生和老师可以申请免费使用,有兴趣的非学生也可以免费试用一个月再决定是否购买。

往期推荐

图片

图片

如需合作请联系


商务合作对接(微信)


西瓜:18659030320

刘威:18948723460

文静:mutou_kiki

图片

点击关闭
  • 客服QQ:

    744926664

    -------------------

分享:

支付宝

微信