一款好的遊戲開發IDE是什麼樣子?Rider使用體驗和建議

遊戲陀螺 發佈 2024-04-30T08:07:55.640096+00:00

Rider誕生於2016年,是JetBrains旗下一款非常年輕的跨平台 .NET IDE。目前支持包括.NET 桌面應用、服務和庫、Unity 和 Unreal Engine 遊戲、Xamarin 、ASP.NET 和 ASP.NET Core web 等多種應用程式的開發,配合其強大代碼檢查和快速的響應能力,如今已經是可以與VS媲美競爭的明星產品了。

作為一名入行多年的遊戲開發者,尤其是虛幻引擎的重度用戶,我在IDE工具的選擇上真的很難有VisualStudio以外的其他選項。不過自從 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為前端 (但ReSharper無法寄宿在JVM上)構建的一款新的IDE產品。

網傳JetBrains很早就有開發.Net IDE的打算,但由於微軟長期保持著對Windows開發環境的壟斷(並強推VisualStudio作為官方的IDE),很多相關底層技術並沒有開源,導致他們只能先開發ReSharper插件來緊跟.Net的發展。如今,微軟已經收購了Mono,整合.NetFrameWork並升級為全新開源的.Net core。也許正是這些足以表明其開放態度的行為,才讓JetBrains又重拾.Net的IDE開發。

遊戲開發環境與常用IDE

上古時代的遊戲開發非常繁瑣,那時既沒有成熟的圖形硬體設計思路,也沒有標準的圖形API,當然更不可能存在配套的IDE產品了。幾十K的內存就動輒上百美元,開發者需要慎重處理每一個bit,並且絞盡腦汁地去針對硬體去寫各種彙編代碼。

>>遊戲中的對象需要精確劃分字節來表示

不過隨著計算機技術的發展以及個人PC的普及,遊戲主機的硬體架構逐步清晰(PS、Xbox、PC、Switch),相關的圖形API OpenGL、DirectX等也趨於完善,甚至我們已經可以在Windows平台通過交叉編譯來完成跨平台遊戲的開發(比如IOS、Andriod、Xbox)。同時,隨著遊戲引擎的誕生以及發展,遊戲的分層架構越來越成熟,遊戲開發者也可以把更多的精力放在遊戲的玩法設計上而無需關心那些繁瑣的硬體細節。

>>雅達利時期的電子束掃描繪製

Unity和Unreal作為目前主流的商業引擎,都有著極為強大的功能和配套工具。但在一個數十萬甚至上百萬行代碼的工程里進行開發,編碼工作仍然非常複雜且充滿了挑戰。

目前主流的開發語言為C#或者C++,細化到具體的崗位後開發環境會有一定差異,比如TA可能需要經常編寫Shader、UI需要經常編寫腳本語言等。作為一名客戶端開發,下面列舉了一些我平時的開發環境和常用工具:

開發平台:Windows

核心開發工具:IDE Visual Studio + VA助手 開發C++

資料庫:Redis MySQL等

腳本開發:VSCode開發Lua,日常的各種腳本編輯

遊戲引擎以及相關工具:Unreal Engine。Unreal Insight做Profile RenderDoc截幀 PVD輔助調試物理

遠程:electerm連結遠端Linux伺服器,會偶爾用Vim寫一些代碼。VSCode SSH插件偶爾遠程寫一些PHP Python等

日誌搜索:Nodepad++,WSL/PowerShell cat grep指令收集信息 跑跑批處理

全局文件搜索:EveryThing/Listary

資源管理:Perforce P4V

代碼管理:Git GitLab

畫圖:ProcessedOn/ Drawio VSCode插件

當然還有很多項目內部的工具,比如WEB端的工單管理系統等、Build工具、日誌分析工具等等,這裡並沒有列出來。總的來說,雖然內容看起來很多很雜,但實際上我大部分的時間都在與Visual Studio打交道(編碼和調試Bug),IDE自然就會對個人工作效率有著非常大的影響。

前面其實提過,由於PC遊戲的流行以及Windows在圖形技術方面的推動等原因,通常我們會選擇Windows作為主要開發環境。因此,微軟官方的Visual Studio長期以來都是主流的開發IDE。但是VS功能太過強大甚至過於複雜,所以集成了一堆我們可能不需要的工具和環境並造成了一些效率上的缺失。此外,由於其對遊戲引擎沒有專門的定製和優化,所以會有很多不太方便的地方,甚至有很多Bug。

對於我個人,使用VS日常編碼時有以下幾個痛點:

搜索不方便:老生常談但是卻非常影響體驗的問題了,早期VS內置的功能對於Unreal這樣的大項目完全不夠用,比如文件跳轉、定義跳轉、聲明跳轉都支持的很差,按一下F12可能就得卡半天(如下圖),最後還可能跳到一個錯誤的地方,也因此大部分人都會配合VA助手插件來輔助開發。好在現在VS也支持Ctrl+T全局搜索,雖然一定程度上解決了這個問題,但卡頓的問題仍然存在。而且這個窗口比較小不方便查看還需要全局搜索(Ctrl Shift T)來輔助。

VA的問題:早期的VA問題非常多,經常用著用著卡死,導致不得不重啟。現在官方修了一些Bug,目前對於一些重名的經常跳轉不準確,另外就是每次重啟IDE後需要花費很長的時間掃描。

Git相關的操作不方便:雖然VS目前對Git的支持已經很全面了,但是一些細節上總是做的差點意思,比如沒有對ignore文件的列表展示和摺疊等,Blame很卡頓等,所以通常情況下提交、查看、查詢等操作我還是習慣使用Git Bash或者TortoiseGit來處理。

VS下搜索和過濾UE的Log不太方便:雖然在編輯器裡面可以過濾,但是一般比較卡,往往只能另開一個文本編輯器查看

多窗口切換:平時VS基本上只用來開發C++,其他的腳本語言、PowerShell、遠程Linux、查看日誌等操作都需要切換不同的窗口,用起來就會增加時間成本、降低效率。

如果你平時開發也有類似的問題,不如和我一樣試試Rider。

Rider使用體驗

安裝與基礎使用:

其實VS升級到2022以後,體驗確實已經比之前好了很多,但是一些卡頓、跳轉的問題還是沒能很好的解決。在身邊朋友的強力推薦下,我轉去嘗試Rider這款廣受好評的編輯器。

為了節省大家的時間,關於安裝、配置、打開、運行步驟我直接貼到了下面的截圖裡面。如下:

(由於Rider已經與Unity捆綁在一起,所以Unity用戶並不需要手動下載。我們可以直接在Window-> Package Manager -> 搜索到"Rider"的整合包 。)

(下載連結)https://www.jetbrains.com.cn/rider/download/download-thanks.HTML

整個Rider只要1個G,下載安裝的過程非常流暢。考慮到從其他IDE遷移過來的用戶,Rider很貼心的在打開後提示你導入其他編輯器裡面的熱鍵,並自動幫你安裝對應的插件。此外,Rider可以直接像VS那樣打開sln工程不需要任何其他設置。

提高效率的配置建議:

在用Rider打開項目之後,我們可以直接看到工程根目錄下的ReadMe.md文件。整個編輯器的布局很清晰,上面的全局的菜單欄,緊挨著下面有一排Run/Debug相關的按鈕。中間主視野區是資源目錄和代碼窗口,最下面一排是日誌、編譯信息、Git、Debug等多個可摺疊窗口。

在正式使用前,推薦大家先去做一些設置。

1.快捷鍵設置。【「Ctrl + Alt +S」】打開setting界面,然後找到【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助手裡面也有,但是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 逗號」】可以快速的打開最近查看過的文件列表。

【「Alt + ↑ 或 ↓」】在當前文件的函數間進行切換。【「Ctrl + End/Home」】在當前文件的首尾進行切換。

Rider的提示功能也很強,編碼時可以快速的提示你可能想使用的類型,另外還支持顯示宏定義的參數名稱。

我們還可以在Editor裡面設置常用的「代碼模板」,用於快速輸入自定義格式的代碼片段。比如UE裡面列印Log的接口比較複雜,我們就可以自定義設置「小寫的不同版本的代碼模板」來快速的輸出我們想要的格式。

很多使用Linux的朋友可能比較習慣Vim的操作,Rider里也可以直接一鍵設置按鍵習慣。安裝IdeaVim插件後就可以方便的在Vim和Intelj來回切換。

3.Git相關:Git相關的插件是直接默認安裝的(如果沒有可以到Plugin配置下面搜索),【Alt 9】打開Git的窗口我們就可以很方便的進行Push、Fetch Commit 、Blame、 View Diff、View Histoty等操作。習慣後就可以完全在Rider裡面進行Git相關的操作了,大大地提高效率。

4.Debug:Rider可以自動查找並加載 UE4.natvis,不過他的Debug流程比較特別,需要用專門的Debug模式運行才可以調試。(不能直接點擊Run)常見的調用堆棧、變量監聽、函數斷點(條件斷點)、內存數據斷點、即時窗口、單步調試都支持,不過很多窗口都不支持摺疊或者更多設置,內存斷點比較麻煩,不能自定義寫地址斷點,不支持Debug變量的字符串匹配搜索,感覺還有待完善。

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.其他功能:還有一些比較人性化的功能,使用起來也很方便

內置控制台,解決運行批處理來回切窗口的問題。

ToDolist預覽,寫複雜功能的時候就不怕臨時忘掉了

數字BookMark,更方便的進行跳轉和記錄

LocalHistory,相當於一個本地自動的版本管理記錄,可以右鍵查看和對比,即使電腦突然死機也可以找到你最近修改過的記錄。

顏色選取,對Color定義使用【Alt Enter】可以直接呼出顏色面板進行選色替換(Unity可用)

8.關於漢化:Rider於2月初剛剛推出針對簡體中文本地化的搶先體驗計劃,目前體驗下來還不錯,預計很快就會就能正式進入官方版本。

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

Rider與遊戲開發

作為一款進軍遊戲開發領域的IDE,Rider針對Unity和Unreal的做了很多定製的開發來提高效率。早在Rider問世時,就已經針對Unity做了很多功能並且被Unity官方所推薦。而今年初Epic官方發布發布的黑客帝國Demo也是使用Rider所開發,側面證明Rider了對虛幻引擎的支持力度和Epic官方對其的信任程度。

Rider對遊戲開發的定製優化:

定製化的代碼檢查與提示:針對不同的遊戲引擎提供非常完善的代碼檢查以及智能修復功能(一鍵生成#include缺失文件等)。比如針對Unreal,可以自動顯示反射相關的所有提示,包括UPROPERTY、UFUNCTION、UCLASS宏裡面的參數。還可以檢查RPC、屬性回調函數等相關的參數設置是否正確。

資源索引和定位:對於Unity,能夠在代碼里直接看到是哪些物體使用了這個腳本以及相關引用,還可以非常智能的進行反彙編來跳轉到指定的源碼。對於Unreal,可以直接在代碼上浮窗顯示藍圖資源的引用數量和位置,支持藍圖的讀取和搜索。

特定類型腳本和文件的構建模板:比如UnityScript、Unity Shader、Unreal UObject/Actor Class等

完美兼容Shader編寫:所有的IDE快捷鍵都可以使用

支持與引擎的雙向通信:即可以在IDE裡面直接操作引擎編輯器的Play等操作

日誌共享:可以直接在IDE裡面查看搜索遊戲日誌,Unity還可以通過點擊日誌直接定位到對應代碼

斷點暫停:Unity支持在斷點的同時,暫停整個遊戲,恢復斷點後仍然維持暫停狀態

單元測試:可以在IDE裡面配置多個單元測試,一鍵執行並返回所有結果

配置文件:支持Unreal在IDE中讀取配置文件內容並顯示

為了讓Unreal開發更加流暢,我們還需要做一些設置來提高使用體驗:

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

1.安裝Riderlink:如果你是使用虛幻引擎進行開發,打開工程後就會推薦你按照RiderLink。這是官方專門為UE開發的插件,提供了Rider Blueprints、GameControl、Logging、ShaderInfo四個子功能,會直接按照到對應工程或者引擎對應的Plugin的目錄下。

按照後我們可以直接在編輯器裡面創建Unreal裡面常見的類型。

直接在IDE裡面設置UE編輯器裡面的啟動參數

可以直接在IDE的窗口裡面查看UE編輯器的日誌,可以直接使用Log的層級過濾功能,速度很快且方便。

2.安裝EzArgs插件:通常來說,如果想要在啟動的時候加命令行參數(比如想運行一個純客戶端而非Editor),需要打開項目設置,然後在項目命令函參數裡面添加。

安裝插件後,我們就可以直接在這裡添加參數。有一個技巧就是平時把參數都填進去保持,如果想讓其失效,就在「-」和字符串中間加一個空格,用到的時候再把空格刪掉。

Unity由於Rider很早就支持,所以幾乎不需要下載額外的插件就可以享受前面提到的各種功能。 有一點補充一下,

我們第一次使用時,需要在Unity編輯器裡面設置IDE為 Rider 「Edit -> Preferences -> External Tools -> External Tools「 。後面就可以直接在編輯器裡面雙擊腳本在Rider裡面打開了。

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

結語

通過這段時間對Rider的體驗,我感受到了JetBrains對產品的用心以及其未來的發展潛力(尤其是在遊戲開發的環境上)。雖然VS依舊有著無法被撼動的地位以及優勢,但是在很多方面,Rider已經與VS平分秋色甚至超過VS。單從遊戲開發的角度而言,Rider確實在整體的體驗上要勝過VS一些。

最後,再將Rider與VS做一個相對全面的比較:

總體對比

Rider是64位 / VS在2022版本後才升級為64位【64位意味著更大的內存空間使用和運行時性能的提升。】

Rider是跨平台的,支持Windows/Linux/MacOS / VS只支持Windows平台【可以在Mac上使用Unity】

Rider前後端異構,前端IntelliJ Platform基於JVM,後端Resharper基於.Net / VS完全基於.Net框架實現

Rider 對 .Net 平台語言支持雖然完整,但在可視化編輯器方便以及部分微軟的商業產品上支持不足 / VS功能非常豐富,除了常見的WEB開發、C++桌面應用開發,還完整的支持Azure、SQL Server、TFS、Office、WPF、UWP等

Rider對遊戲引擎的支持更加友好和完善 / VS 沒有針對遊戲引擎做過多的定製化

Rider漢化剛剛推出體驗版,還在完善 / VS自帶漢化版本

Rider占用體積小,安裝迅速,不容易出現軟體依賴和卸載的難題 / VS占用體積非常大,安裝比較耗時

Rider需要.NET來構建相關產品 / VS installer在構建.NET產品以及 處理VS安裝修改、庫組件升級等方面更詳細和方便

Rider是商業產品 需要收費 / VS 有免費的社區版

使用體驗差異

搜索:Rider解析速度略快,搜索非常快,跳轉非常準確。不需要長時間的掃描來占用CPU,基本上不會出現卡死的情況 / VS 除了兩個全局搜索的功能外,其他搜索效率和準確度都不太友好,而且經常容易卡

調試:Rider支持VS的大部分功能,但是在數據斷點、即時窗口、變量搜索等方便不夠完善 / VS調試功能更全面,體驗要更好一些

單元測試:Rider對Unity單元測試支持比較好 / VS沒有針對遊戲引擎定製的單元測試

引擎操作:Rider可以在IDE裡面直接運行的遊戲實例 / VS目前還需要切換到編輯器窗口來進行操作

編碼:Rider的代碼生成很智能且迅速 / VS的往往不夠準確

資料庫:Rider默認支持多種資料庫可視化功能(包括MongoDB,SQlite, Sybase, DB2, Derby等)/ VS默認只支持SQL Server, Azure SQL, Oracle等幾款常見資料庫

全棧開發:Rider可以在很少的配置下就支持多種語言的開發和搜索 / VS做全棧開發感覺還是過於厚重

提示/檢查:Rider的提示更完整更準確(甚至詳細到編碼風格以及性能使用建議)/ VS 基本上只有常規的檢查,偶爾會出現錯誤的代碼提示

Git:Rider對Git的展示和處理更友好/ VS從功能上來說支持也很完整,但是體驗稍差

資源占用:Rider的內存占用看起來是比較高的(估計是因為他做了很多解析與緩存),編譯CPU吃滿 / VS內存占用比Rider少30%左右,編譯CPU吃滿

反編譯:Rider的反編譯很完善準確 / VS偶爾會出現反編譯失敗無法調試的情況

Dump:Rider無法直接打開Dump文件,需要在IDE裡面使用特定的指令 / VS對 Dump的支持要更加友好一點

當然除此之外,官方也給過更為完整詳細的對比。大家可以自行查閱

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

Rider是一款年輕且優秀的IDE,在搜索與提示方面做到了極致,用戶熟悉之後就可以大大地提高開發效率。同時,考慮到其針對Unity和Unreal的定製,Rider絕對可以說是目前最適合遊戲開發的IDE之一了。如果非要說缺點的話,那可能就是Ride並非一款免費的IDE產品,首年使用就需要花費149刀來進行購買(次年119,第三年89)。從個人角度來講這個價格著實不算便宜,但對於公司來說依然要比採購VA要更為划算。學生和教師是可以申請免費使用的,非學生黨且感興趣的朋友也可以免費試用一個月再決定是否購買。

關鍵字: