持續開創C#可能性的專門公司「Cysharp」所放眼的目標

「Cysharp」是以程式語言C#為中心進行遊戲技術的開發,並為了向世人推廣C#(※1)的優點而成立的Cygames旗下公司。他們為了替遊戲業界盡一份心力展開各種行動,像是公開數十個適用於C#的OSS函式庫等等,而獲得「CEDEC AWARDS 2022工程部門優秀獎」,還登上國際級遊戲創作者祭典「GDC2022」的舞台,持續嶄露頭角。我們請到了「Cysharp」的常務董事,來為大家分享公司的成立經過及今後願景。

※1 C#:由Microsoft開發,適用於.NET平台的程式語言。不但在許多領域中受到廣泛的使用,連遊戲引擎Unity也有採用。在伺服器端開發方面,為了開發者所設計且全世界工程師都在使用的問答網站「Stack Overflow」或是搜尋引擎「Microsoft Bing」之類的大規模服務中,也有非常多運用到C#的案例。

Cysharp, Inc. 常務董事Yoshifumi
gutenberg-examples
與Cygames共同成立了Cysharp, Inc.這間C#專門的開發公司。標榜著「C#大一統理論」,進行伺服器與用戶端(Unity)皆使用C#實行的框架(Framework)開發並建構架構(architecture)。甚至開發出多款全世界都在使用的C#開源軟體函式庫(Library),像是「Message Pack for C#」,而在Microsoft MVP獎計劃──Microsoft為了表彰全世界技術社群領導者的活躍表現所設置的獎項中,從2011~2022年的現在(指日文版發表時間)連續11年獲得「Microsoft MVP」(Microsoft MVP for Developer Technologies)的獎項。持續引領著日本對於C#技術方面的開發。

常務董事的過往經歷與
Cysharp的成立經過

首先,請為我們介紹Cysharp。

Cysharp是以「徹底鑽研程式語言C#,來向世人推廣C#優點」為動力的C#專門集團,成立於2018年9月。說到在遊戲公司使用C#這件事,通常都是用戶端(Unity)的印象比較強烈,但在Cysharp,我們是提倡「C#大一統理論」的建構方法,仰賴伺服器與用戶端兩者皆以C#製作的做法,使開發產值達到最大化。由於Unity用戶端與伺服器的開發,通常都是分別使用不同語言進行開發的,所以勢必得進行多重安裝,像這類必須個別管理程式碼的情況就會發生,但只要將程式語言統一成一個之後,就能解決掉以往那些複數的問題了。

由於這是一種全新的開發手段,所以我們在Cysharp為此做出許多努力,像是建構出參考架構,還研發出用來連結用戶端與伺服器的效率化函式庫,並以OSS的方式提供等等,致力於讓整個遊戲業界接納這套做法。

請告訴我們Yoshifumi先生您在Cysharp成立前的經歷。

我在高中時代因為與《思考スピードの経営: デジタル経営教本(英文原名:Business @ the Speed of Thought: Using a Digital Nervous System)》(比爾‧蓋茲著作)這本書相遇,而對Microsoft產生興趣,經常遊玩初代Xbox跟Xbox 360。我認為比爾‧蓋茲的原點是開發出BASIC直譯器(※2)而加以販賣,所以要真正使用電腦,就必須學會寫程式才行……帶著這個想法嘗試寫程式,就是我身為工程師的起點。然而,當時並沒有留下什麼明顯的成果,身為程式設計師只有不停感受到挫折而已。

※2 BASIC直譯器(interpreter):能夠讓使用者運用BASIC語言輸入並執行程式的方法之一。

比爾‧蓋茲著作《Business @ the Speed of Thought: Using a Digital Nervous System》的日文翻譯版

在我遇到「C# 3.0」時才出現轉機。在2008年發布的「C# 3.0」一開始被稱為「LINQ」,是一款搭載了革命性功能──將基於對象語言及函式語言融合在一起的開發語言。實際接觸後,操作起來跟Visual Studio很搭,總之寫起來的感覺真的很棒,跟我的想法非常合拍。我從這段經驗中感受到命運,接著便想說「希望能專心探究這個語言」,而開始積極分享相關資訊或是參與程式語言社群。另外,我也開始將自己的成果以OSS形式發表出去。

後來,我個人所開發的OSS獲得好評,並在2011年獲得「Microsoft MVP」的獎項。得獎後,我得知有一間使用C#進行遊戲開發且急速成長的公司存在,便進入該公司任職。開發過幾款遊戲後,我們的開發團隊於2012年獨立,成立了Grani, Inc.。我從Grani的草創時期就是其中的一員,並擔任CTO一職。我在參與過許多形形色色的作品開發工作後,加入Cygames的行列直到現在。

原來您在加入以前有這樣的經驗呢!請告訴我們在加入Cygames行列後,Cysharp的成立經過吧。

在Grani的時期,我也曾進行「讓全世界的C#更加熱鬧」、「製作並推行C#的OSS」這類活動,目前還在世界各地廣泛使用中的「UniRx」、「MessagePack for C#」這類C#的OSS函式庫,都是在那段時期誕生的。從Grani退職後,我在協助其他公司開發的同時,更加深了自己「想要聚焦在C#達成一些大事」、「希望能向世人展現出成果」這樣的想法。以Cysharp名義公開的OSS之中,得到最多支持的「UniTask」就是在這段期間製作出來的。然而,以個人層級行動,能夠做到的事情實在相當有限,我認為要對世界產生巨大的影響或帶來什麼價值應該都很困難。

在那個時候,我從Cygames的CTO室收到「要不要一起做什麼事呢?」的邀請。我從Grani時期就相當注意Cygames的存在了,我對Cygames的印象是遊戲品質非常好的一間公司。我在談話中理解到,他們能做出那些遊戲的能量來源是來自於「要做出這世上最高品質的內容」這股熱情,這跟我「要用C#做出全世界最高品質的內容」的想法也有部分相似,所以引起了我相當大的興趣。

而且,不但有能夠製作出「Cyllista Game Engine」這種以AAA遊戲開發為目標的自家遊戲引擎的部門,也有像是Cygames Research(本網頁為日文版)那種類似於學術理論的研究開發部門。這讓我覺得要是在這麼豐富的環境內出現「C#專門的開發公司」的話,應該會產生一些有趣的化學變化吧,於是我才下定決心要以Cygames旗下公司的名義成立Cysharp。

揚名世界的Cysharp技術
用於《公主連結!Grand Masters》開發的革命性架構

請告訴我們更多Cysharp從事的內容與成果。

為了「持續開創出C#的可能性」,Cysharp正在進行的活動大致上可分為兩種。其中一種是「在軟體開發平台GitHub上公開C#的OSS」。我們現在一共公開了25個OSS,GitHub用來衡量人氣的指標──星星數量共計已超過一萬個。以C#相關內容來說,就算放眼世界也算是排在相當前面的數據了。事實上Cysharp的OSS正廣泛地受到使用,而日本Unity的行動裝置遊戲大多都有使用到一些Cysharp所製作的OSS。因為有這些成果,讓我們今年(2022年)榮獲「CEDEC AWARDS 2022工程部門(本網站為日文)」的獎項,還受到集結世界知名技術人員的「2022 Game Developers Conference(GDC2022)」邀請,在線上進行演講。

已經公開的OSS

另一種則是「增加在伺服器端使用C#的高品質遊戲的業績」。以Unity製作的遊戲當然有使用C#,但我覺得在伺服器開發採取C#語言的遊戲還不夠多。只要採取C#語言的業績夠多,一定也會有更多人想要嘗試這個做法,所以我認為和Cygames一起開發高品質的遊戲,讓業績持續增長,將會成為我們最有利的宣傳。

說到近期的成果的話,可以舉《公主連結!Grand Masters》(※3)為例子。這個作品簡直就是「C#大一統理論」的理想形式,像是即時通訊的部分,還有從API伺服器到對局配對、伺服器基礎架構的基盤製作為止,構成這個遊戲的一切元素都是用C#做成的。Cysharp最主要是負責伺服器端的基盤設計、開發輔助工具以及基礎架構等等。

※3 《公主連結!Grand Masters》是作為《超異域公主連結!Re:Dive》的愚人節企劃,於2022年4月1日〜8日期間公開的app。

在開發《公主連結!Grand Masters》的時候有什麼特別注重的事情嗎?

我很注重於要讓Cygames的員工認為「還好有使用C#」。Cygames是第一次嘗試以C#安裝伺服器,所以我很小心不讓大家在使用C#開發時感到不方便。我在開發時所思考的是,從正面意義上來說,要讓作業過程「如同空氣般」自然的進行,並且,希望能營造出C#擁有豐富的開發輔助資源的工作氛圍。Cysharp這邊開發出來的《公主連結!Grand Masters》專屬開發輔助工具,我覺得有適度地活用了C#的優勢。

那是什麼樣的輔助工具呢?

《公主連結!Grand Masters》是將過去存在於用戶端的遊戲邏輯模組,設計成活用C#撰寫,並在伺服器端改動邏輯的專案。因此,從網頁瀏覽器即時連接伺服器後,就可以即時掌握到戰鬥中的內容,或是從瀏覽器上改寫檔案。在網頁瀏覽器上的即時顯示及編輯,都是仰賴我們使用了一種叫做「Blazor Server」的全新C#框架,才能在瀏覽器、伺服器、Unity以及所有範圍內共享C#的程式碼。

這個開發輔助工具在Cygames的工程師與企劃人員中也得到了相當好的評價,我們成功地建立起緊密且良好的合作關係。關於《公主連結!Grand Masters》的整體細節,Cygames員工有在CEDEC 2022的演講「運用C#統一用戶端/伺服器的開發語言所帶來的高效率開發體制~公主連結!Grand Masters的開發案例~」中發表更詳盡的內容。(該網站為日文版。)

MagicOnion為何?
將C#的型別視為通訊定義的單向/雙向RPC

綠色文字內容為:
//運用自然流暢的書寫方式,在型別安全的情況下實現RPC(Remote Procedure Call)
//C# async/await的句子結構,使非同步通訊也能自然呈現出來

將C#的優點推廣給
Cygames以外企業的意義

聽說Yoshifumi先生您也有從事一些對外的活動。

由於在遊戲業界裡,撇除掉Unity開發的情況後,C#並不能算是主流的程式語言,所以我認為也必須將C#的優點推廣給Cygames以外的企業。在「GDC」、「CEDEC」及Unity舉辦的「Unite」這種大型會議,還有社群學習會的那種小型活動之中,我都會積極地演講C#主題的內容。另外,我也有以顧問的形式,協助其他公司的作品開發。近期比較大的案件就是在《NieR Re [in] carnation》(營運:SQUARE ENIX)的開發上,引進許多Cysharp的OSS並進行技術支援。(連結為日本遊戲官網。)

另外,我也有參與技術類書籍的編譯,去年(2021年)我負責擔任《Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .Net Libraries》(Krzysztof Cwalina、Jeremy Barton、BradAbrams著作)的編譯。我非常推薦這本書,希望以C#撰寫程式的工程師們都能夠讀到這些內容。裡面對於C#最常被使用、最重量級的框架──C#本身的核心函式庫「.Net Framework」是基於什麼思想而設計出來的一事,記載得非常詳盡,所以不但實用,也有非常多的學問。我想關於C#的內容,從基礎到應用方面全都有涵蓋進去了,請大家務必去翻閱看看。

《Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .Net Libraries》的日文翻譯版

Cysharp的願景
希望「說到C#就想到Cysharp」能成為全球共識

那麼在最後,請告訴我們Cysharp今後的願景。

為了讓「說到C#就想到Cysharp」能成為全球共識,我今後想要努力進軍國際。以OSS積極推行C#的活動當然會持續進行,但我覺得最重要的還是要和Cygames一同製作出最高品質的遊戲。繼《公主連結!Grand Masters》之後,我們會繼續協助Cygames發表最高品質的內容。此外,我們也有在考慮將活用C#特性的開發輔助工具普及化,以不論公司內外皆能廣泛使用的型態提供出去。希望這樣的做法,能讓大家對C#抱持親近感。