开拓C#可能性的专业公司“Cysharp”所追求的目标

为了向大众传递C#(※1)的优势,Cygames旗下的“Cysharp”是以编程语言C#为中心进行游戏技术研发的公司。“Cysharp”公开了数十个C#的OSS资源库,为游戏行业做出了贡献,并获得“CEDEC AWARDS 2022 工程部门优秀奖”,登上国际性游戏开发者大会“GDC2022”发言,从而逐渐被大众所熟知。本次我们请到了“Cysharp”的代表董事,来谈一谈“Cysharp”成立的过程以及对未来的展望。

※1:C#……由Microsoft开发的适用于.NET Framework的编程语言,被用于游戏引擎Unity等各种领域。在服务器开发中,也经常被利用于全球程序员都会使用的开发人员技术问答网站“Stack Overflow”或搜索引擎“Microsoft Bing”等大规模服务中。

Cysharp, Inc. 代表董事YOSHIFUMI
gutenberg-examples
和Cygames携手成立了专注于C#的研发公司Cysharp, Inc.。主张“C#大统一理论”,研发并构建出服务器和客户端(Unity)都使用C#实装的框架和体系结构,还开发出以“Message Pack for C#”为代表的、在全球范围内被广泛使用的多个C#开源软件库。从2011年到2022年连续11年都在Microsoft表彰全球杰出技术社区领袖的Microsoft MVP Award中被授予“Microsoft MVP”(Microsoft MVP for Developer Technologies),一直领导着日本的C#技术研发。

成为代表董事的经历和Cysharp成立的过程

首先,请介绍一下Cysharp。

致力于“追求编程语言C#的极致,向世界传递C#的优势”的Cysharp是一家专注于C#研究的公司,成立于2018年9月。游戏行业说起C#的话,大多会联想到客户端(Unity),而Cysharp则是主张服务器和客户端都使用C#的“C#大统一理论”,以实现开发效率最大化。一般来说,Unity客户端和服务器都会使用不同的语言进行开发,需要分别管理代码并实装,如果统一成一种语言,就能够解决很多传统问题。

这是一种新的开发方式,所以Cysharp会提供参考架构的构建、高效连接服务器和客户端的OSS等等,努力把这种方式推广到整个游戏行业。

Cysharp成立之前,YOSHIFUMI都有过怎样的经历呢?

高中的时候,我看了《未来时速》(作者:比尔·盖茨),对Microsoft产生了兴趣,在第一代Xbox和Xbox 360上玩了很多游戏。我觉得比尔·盖茨的原点就在于编写并卖出了BASIC解释器(※2),要真的熟练掌握电脑就必须学会编程,于是就尝试着去学习,这就是我程序员生涯的起点。不过当时也没有做出什么成绩,在编程上一直都很受挫。

※2:BASIC解释器……通过BASIC语言编写程序并运行的方法之一。

▲比尔·盖茨《未来时速》

事情出现转机是在我遇见“C# 3.0”的时候。“LINQ”创新性地融合了面向对象语言和函数式语言,而2008年发行的“C# 3.0”是第一个搭载了“LINQ”的开发语言。实际体验过后,我就发现它和Visual Studio适配性很高,编写起来非常舒适,而且很适合我。我从中感受到一种命运的指引,从那以后就埋头精进这一个语言,积极地投稿、参与到社区中去。与此同时,也开始以OSS来发表自己的成果。

之后,我个人研发出的OSS受到好评,在2011年被授予“Microsoft MVP”。获奖后,我了解到有家公司使用C#开发游戏,发展得非常迅速,于是就进入了那家公司。经过多个游戏的研发之后,我加入的研发团队在2012年独立出来,成立了Grani, Inc.,从Grani创立初期就加入公司的我也担任了CTO。后来在经手了各种作品之后,我加入了Cygames,一直持续到今天。

您在加入Cygames之前还有过这样的经历呢!加入Cygames之后,又是如何成立了Cysharp呢?

在Grani的时候,我就一直在推行“把C#在全球范围内活跃起来”“制作并投稿C#的OSS”的活动。现在被广泛使用的“UniRx”“MessagePack for C#”这些C#的OSS资源库也是那个时候诞生的。从Grani退任后,我在辅助其他公司的研发的过程中,“希望专注于C#并实现巨大成就”“希望能面向全球发布成果”的想法越来越强烈。Cysharp发行的OSS中最受支持的“UniTask”就是在这个时期制作出来的。可是个人能够做到的事情有限,当时会觉得给世界带来巨大的影响和价值这个想法是不是太困难了。

就是在这样的情况下,Cygames的CTO室对我发出邀请,希望可以“一起来做些什么吧”。我从Grani的时候开始就有关注Cygames,印象中做出来的游戏质量都非常高。在跟他们谈话的过程中,我了解到他们能做到这样是因为公司整体都抱着“做出全球意义上最棒的作品”的热情,这与我心中“用C#做出最棒的作品”的想法一致,所以我产生了很大的兴趣。

另外,Cygames还拥有独立的游戏引擎制作部门“Cyllista Game Engine”,用于研发3A游戏,也有像Cygames Research这种偏学术研究的研发部门。在这样的多样性发展中,我觉得如果再加上“专注于C#的研发公司”,一定会产生很有趣的化学反应,所以就下定决心要在Cygames中成立Cysharp。

在全球逐渐被熟知的Cysharp的技术
研发《公主连结 Grandmasters》时的创新架构

请详细介绍一下Cysharp的发展举措和成绩。

为了“开拓C#的可能性”,Cysharp现在在做的事情主要分为两部分。一个是“在软件开发的平台GitHub上发布C#的OSS”。现在我们已经公开了25个OSS,GitHub上用于评判人气程度的Star数共计超过1万。在C#领域,这已经是全球顶尖水平了。Cysharp的OSS也确实被大家广泛使用,大多数日本Unity手游都有用到Cysharp制作的某种OSS。也是因为有了这些成绩,今年我们有幸获得了“CEDEC AWARDS 2022 工程部门优秀奖”,也受邀参加“2022 Game Developers Conference(GDC2022)”,在线进行了演讲。

▲已公开的OSS

另一点则是“增加在服务器中使用C#的高质量游戏”。用Unity做的游戏虽然会使用C#,但是用在服务器研发上的案例并不是很多。我认为服务器使用C#的成果越多,想要尝试的人就越多。和Cygames一起研发出高质量游戏、拿出更多的成果就是最好的宣传。

我们最近的成果就是《公主连结 Grandmasters》。这个作品正是“C#大统一理论”的理想形式,实时通信部分以及从API服务器到对手匹配、服务器架构的基盘制作,所有的构成要素都使用了C#制作。其中,Cysharp主要负责的是服务器端的基盘设计、研发辅助工具和基础架构。

您在开发《公主连结 Grandmasters》的时候有什么特别注意的方面吗?

我认为要做出让Cygames的成员觉得“用了C#真好”的东西。Cygames也是第一次尝试用C#实装服务器,所以我特别注意避免让大家觉得用C#研发很不方便。在研发过程中,营造一个能像空气一样自然流畅工作的氛围,并且让大家感受到有很多C#独有的研发支持。Cysharp为了《公主连结 Grandmasters》而开发出来的辅助工具就很好地应用了C#的优点。

具体是怎样的研发辅助工具呢?

游戏逻辑一般存在于客户端,而《公主连结 Grandmasters》则是活用了服务器使用C#这一点,用服务器端运行逻辑。这样,Web浏览器可以实时连接服务器,从而实现了实时掌握并更新战斗信息。Web浏览器的实时显示和编辑也通过C#的新框架“Blazor Server”,实现了在浏览器·服务器·Unity整个范围内共享C#代码。

这个研发辅助工具受到了Cygames的程序员和策划的一致好评,使我们形成了良好又密切的合作关系。关于《公主连结!Grandmasters》的具体情况,Cygames在CEDEC 2022的演讲“使用C#统一客户端和服务器的开发语言,实现高效研发体制——公主连结 Grandmasters的研发案例”中有详细解说。

▲什么是MagicOnion?
使用C#定义通信类型的单向/双向RPC
以自然的书写风格实现类型安全的RPC(Remote Procedure Call)
通过C#的async/await结构,实现自然的非实时通信

向Cygames以外的企业传递C#优势的意义

我们听说YOSHIFUMI先生也在进行一些对外活动。

在游戏行业里,C#在Unity研发以外并不是主流的编程语言,除Cygames之外,我认为把C#的优势推广到其他企业也是很有必要的。不仅是“GDC”“CEDEC”、Unity主办的“Unite”等大型会议上,我也会在社区等比较小型的地方开展演讲。另外也会以顾问的形式参与辅助其他公司的作品研发,最近比较大型的就是给《NieR Re[in]carnation》(运营:SQUARE ENIX)提供了很多Cysharp的OSS导入和技术支持。

然后我也有参与技术书籍的翻译监修,去年就担任了《.NET设计规范》的监修(作者:Krzysztof Cwalina,Jeremy Barton,BradAbrams)。我非常推荐大家去读一读这本书,特别是使用C#的程序员们一定要读一下。里面详细地描写了作为C#中最常用和最大的框架——C#自身的核心资源库“.NET Framework”是以怎样的思考方式设计出来的,非常实用又很深入。从C#的基础到应用都写得都非常全面,我觉得大家读了以后一定会有很大的收获。

▲《.NET设计规范》

Cysharp的展望
希望全世界都能“说到C#就想到Cysharp”

那么最后,请说一下Cysharp对未来的展望吧。

要让全世界都能“说到C#就想到Cysharp”,今后我想投入更多的精力到进军全球上。除了会继续积极发布OSS,最重要的是跟Cygames一起制作出最棒的游戏,继《公主连结 Grandmasters》之后,协助Cygames推出更为出色作品。另外我们也在考虑让发挥C#特长的开发辅助工具更普遍化,做成不论公司内外都能广泛使用的形式。希望通过这些努力,能让大家感受到C#就在我们身边。