Four to five years of backend work, mainly in C# / .NET and Rust. For each system below I've written down the trade-offs I made and the numbers I actually measured. 約 4–5 年的後端開發經驗,主要使用 C# / .NET 與 Rust。以下每一套系統,我都寫下了當時的取捨與實際量到的數字。 C# / .NET と Rust を中心に、約4〜5年のバックエンド開発経験があります。以下の各システムについて、その時の判断と実際に計測した数字を書き残しています。
ArcadeGalaxy is a multiplayer party game on Steam. I owned the entire backend as the only server engineer on the team — every game system the designers specced, I designed, built, deployed, and kept running. They ranged from gameplay and player-made maps to Web3 features and the community data APIs behind the Creator Center website, and the game server is covered by 152 integration tests. ArcadeGalaxy 是 Steam 上的多人派對遊戲。我是團隊裡唯一的伺服器工程師——企劃規格書上的每一個遊戲系統,都由我設計、實作、部署並持續維運。範圍從遊戲玩法、玩家自製地圖,到 Web3 功能與創作者中心網站的社群資料 API;遊戲伺服器並有 152 個整合測試把關。 ArcadeGalaxy は Steam のマルチプレイパーティーゲームです。サーバーエンジニアは私1名で、企画が仕様化したすべてのゲームシステムを、設計から実装、デプロイ、運用まで担当しました。対象はゲームプレイやユーザー作成マップから、Web3 機能、クリエイターセンター(Web サイト)向けのコミュニティデータ API まで多岐にわたり、ゲームサーバーは152件の結合テストでカバーしています。
OpenDAL gives applications one API for many storage services — S3, GCS, Azure Blob, local filesystems, and dozens more. The core is Rust; my work is the layer that makes it feel native to .NET developers, which means everything that lives on the boundary between the two runtimes. OpenDAL 讓應用程式用同一套 API 存取多種儲存服務——S3、GCS、Azure Blob、本地檔案系統等數十種。核心是 Rust;我的工作是讓它對 .NET 開發者來說像原生套件一樣自然,也就是兩個 runtime 邊界上的所有事情。 OpenDAL は S3、GCS、Azure Blob、ローカルファイルシステムなど数十種類のストレージを単一の API で扱えるライブラリです。コアは Rust 製。私の仕事は、それを .NET 開発者にとってネイティブに感じられるものにすること、つまり2つのランタイムの境界に存在するすべてです。
MacacaViewSystem is my former employer's open-source Unity UI system — views are composed from reusable elements, and the framework decides what to show and when. It loaded every view asset directly, which meant all of them shipped inside the build. I added Addressables as a second loading mode, so views can be packed into bundles and fetched on demand instead. In the game I was working on at the time, that moved UI assets out of the install and cut the base package by about 80 MB — enough to fit within the platform's APK size limit. MacacaViewSystem 是前公司開源的 Unity UI 系統——畫面由可重用的元件組成,框架負責決定何時顯示什麼。它原本每個 view 資產都直接載入,等於全部打進 build 裡。我加上 Addressables 作為第二種載入模式,讓 view 改成打包成 bundle、需要時再抓。在當時負責的遊戲裡,這讓 UI 資源從安裝包移到隨選載入的 bundle,主包體縮減約 80MB,符合平台 APK 大小限制。 MacacaViewSystem は前職の会社が公開している Unity の UI システムです。画面は再利用可能な要素から構成され、何をいつ表示するかはフレームワークが決めます。従来は view のアセットを直接読み込む方式で、すべてがビルドに同梱されていました。そこへ Addressables を第二の読み込みモードとして追加し、view をバンドル化して必要時に取得できるようにしました。当時担当していたタイトルでは、これにより UI リソースをインストールパッケージからオンデマンド読み込みのバンドルへ移し、アプリ本体を約80MB削減して、プラットフォームの APK サイズ制限をクリアしました。
These commits are under rin-macaca, the account I used at MacacaGames — my personal work is under Fatorin. 這些 commit 掛在 rin-macaca 名下,那是我在 MacacaGames 使用的帳號;個人專案則在 Fatorin。 これらのコミットは MacacaGames 在籍時に使用していた rin-macaca 名義です。個人の作業は Fatorin にあります。
Warcraft III custom-map communities survive on infrastructure nobody is paid to run: a Battle.net-compatible realm, a bot that hosts the games, an account system, a ladder. When the software that does this is fifteen years old and unmaintained, somebody has to keep it working. For this community, that has been me — and over six years the work grew from patching the original C++ to owning every piece of the stack. Warcraft III 自訂地圖社群靠的是一套沒人付錢維護的基礎設施:一台相容 Battle.net 的伺服器、一個負責開房的機器人、一套帳號系統、一套積分系統。當這些軟體已經十五年沒人維護,總得有人讓它繼續動。這個社群的那個人是我——六年下來,工作從替原本的 C++ 打補丁,長成了掌握整條技術棧的每一塊。 Warcraft III のカスタムマップコミュニティは、誰も対価を受け取っていないインフラの上に成り立っています。Battle.net 互換のレルム、ゲームを立てるボット、アカウント基盤、レーティング。それらのソフトウェアが15年放置されていれば、誰かが動かし続けるしかありません。このコミュニティではそれが私でした。6年かけて、仕事は元の C++ にパッチを当てることから、スタックのすべてを自分で持つことへと育ちました。
I'm a software engineer who loves games. My career started in QA, testing games other people had made — and it was there that I started wanting to build the one I had in my head, which is what moved me into development. 一個熱愛遊戲的軟體工程師。我的職涯從 QA 開始,測試別人做出來的遊戲——也是在那段時間裡,我開始想做出心目中的那一款,於是走向開發。 ゲームが好きなソフトウェアエンジニアです。キャリアは QA から始まり、他の人が作ったゲームをテストしていました。その日々のなかで、自分の思い描く一本を作りたいと思うようになり、開発の側へ移りました。
From QA to engineering and on to today, I've kept learning and kept sharpening what I can build. 從 QA 到 RD 到現在,我持續不斷學習並加強自己的技術。 QA から開発へ、そして今に至るまで、学び続け、技術を磨き続けてきました。
What I'm working towards is specific: a game tens of thousands of people can play at the same time, and the high-concurrency, high-traffic systems that hold it up. 我想做到的事很具體:做出能讓數萬人同時遊玩的遊戲,以及撐得住它的高併發、高流量系統。 目指しているものははっきりしています。数万人が同時に遊べるゲームと、それを支える高負荷・大規模トラフィックに強いシステムです。