sashi portfolio
ゲーム開発をしています
sashi
ゲーム自体が好きなのはもちろんのこと、ゲーム開発関連の技術に強い興味関心があります。イラストやピクセルアートも描いています。
- 2025年4月 - 現在: 京都大学大学院 情報学研究科 通信情報システムコース 修士課程
- 2021年4月 - 2025年3月: 京都大学 工学部情報学科


SHIBUYA PIXEL ART 2024 にて 「Limited Pixel Art 16×16」 を受賞しました。
習得済みの分野
Projects
99 人対戦の反重力レースゲーム
自作エンジンで開発した 99 人対戦の反重力レースゲームです。 自作エンジンのグラフィクスは DirectX 12 をバックエンドとし、レンダリング、物理、ゲーム AI といったインゲーム要素、他にもレベルエディタなども含めて自作しました。
このゲームでは、ラスタライズ方式のディファードレンダリングにレイマーチングを組み合わせた独自のグラフィック表現を採用しています。レイトレーシングと異なり、レイマーチングは GPU によるハードウェアサポートが存在しないため処理負荷が高く、一般的なゲームで採用されることはほとんどありません。 それでも本作では、ポリゴンでは表現が難しいフラクタル的な地形を SDF として定義し、これをレイマーチングで描画することで、従来手法では実現しにくい独創的なシーン表現を可能にしています。 このレンダリング手法の詳細については、文末の「レンダリング部分の記事」で解説しています。
実装において、物理部分は特に苦労しました。衝突処理の解決といったものは、意外とインターネット上に参考情報が少なく、試行錯誤の連続でした。三角形関連のプリミティブな衝突処理の実装から始まり、BVH の構築、衝突時の押し戻し処理など地道に実装を行いました。特に苦労したのは、地面上をスムーズに移動する処理です。ここでは、大学の講義で学んだガウス・ニュートン法が思いがけず役に立ちました。
対戦相手となるゲーム AI に関しては、スクエア・エニックスの三宅陽一郎さんの著書などで紹介されている「MCS-AI 動的連携モデル」を参考にしました。
Mutable 50
C++ / Siv3D で開発した 2D アクションゲームです。グラフィックやプログラムを自作しています。このゲームは Siv3D バンダイナムコスタジオ杯 2023 で作成し、最優秀賞 を受賞しました。アイテムを駆使しながら自動生成されるダンジョンの第 50 層を目指すゲームです。
今では当たり前のようにシェーダーを書いていますが、当時 (大学三回生の頃) はシェーダーを書いた経験が少なく、 HLSL を用いた躍動的なエフェクト表現などの実装に苦労しました。
開発では boost::coroutine2 を試験的に導入し、コルーチンベースのアニメーションやイベント制御を取り入れてみました。C++ 20 で標準化されたコルーチンはスタックレスですが、それとは対照的に boost::coroutine2 はスタックフルのコルーチンであり、使い勝手やデバッグのしやすさ、また移植性の面で優れていると感じました。現在のプロジェクトでも活用しています。
ゲームジャムの終了後、発展させたバージョンを開発し、その作品は Steam にリリースしています。
angel-lsp
この OSS プロジェクトは AngelScript 汎用 LSP サーバーであり、多くのゲーム開発者に使用されています。AngelScript は Lua と同様にゲーム開発の現場で用いられる静的型付けスクリプト言語です。 このソフトウェアは、実際のゲーム会社でも使用されている他、OSS で開発されている人気ゲームエンジン ezEngine で公式サポートされている といった実績があります。更に詳しい詳細は文末リンクの開発記事で紹介しています。
私がこのソフトウェアを開発する前、AngelScript の IDE サポートは非常に貧弱であり、テキストファイル同然の編集作業を強いられていました。そこで、AngelScript を使ったゲーム開発をより快適に行うため、自分自身の開発環境を整える目的でこのプロジェクトを始めました。 高性能な解析を行うために、解析に使用するコンパイラのフロントエンド部分は TypeScript で一から実装しました。
VSCode などのクライアントで動作し、コーディングに欠かせない多くの機能が利用できます。例えば、シンボル定義へのジャンプや参照検索、コード補完に加えて、型チェックや関数呼び出し時の引数チェックなども行えます。


Monad Tachyon
かなり気合を入れて鋭意開発している 2D 探索型アクションゲームです。「世界最速メトロイドヴァニア」をコンセプトに、爽快でスピーディーなアクションが楽しめます。プレイ動画は一見難しそうに見えるかも知れませんが、基本的にプレイに必要なボタンは十字ボタンと A, B ボタンだけで誰でも簡単に遊ぶことができる工夫をしています。
このゲームは F-ZERO を 2D に落とし込もうという発想から始まりました。まず、単純にマリオのような 2D 横スクロールで F-ZERO マシンを走らせることを考えてみましょう。そのゲームは恐らく酷いものになりそうです。カメラがマシンに追従しきれず、マシンを操縦しきれずに F-ZERO 特有の爽快感が損なわれてしまいます。そこで思いついたのが、ボタン一つで F-ZERO を演出出来ないか、というアイデアです。移動そのものは自動で行い、プレイヤーはタイミングよくボタンを押して大ジャンプを発生させる。そうすることで、シンプル操作でも疾走感を味わえるゲームになると考えました。実際に作って他の人に遊んでもらったところ、ゲームに不慣れなお爺さんであっても楽しそうにされていたので、このコンセプトは良いものであると自負しています。
未だ開発途中ですが、独自に構築したレベルエディタをはじめとするミドルウェアを整備し、生産性を高めつつ小規模な体制でも最大限の成果を挙げられるシステムを構築しています。
Steam ストアページ用のトレーラー動画。
自作レベルエディタのデモ動画。ブラシやスポイトの他にも Undo / Redo なども実装してあり、多機能で使いやすいエディタとなっています。
研究内容: 境界要素法 (BEM) の高速化
大学院では、「境界要素法(BEM)の高速化」を研究テーマとして扱っています。BEMは、解析対象の境界部分のみを離散化することで計算領域を簡略化できる一方、境界上の全点同士が相互作用するため、非常に大きな密行列の連立一次方程式を解く必要があるという特徴があります。そこで、私はこの計算を GPUで高速に解く手法について研究をしました。
具体的には、BEM で得られる密行列に対して CUDA を用いて BiCGStab 法の GPU 実装を行い、その性能評価と高速化手法の比較を行いました。特に、実応用では多数の解析モデルを解く場合が多いことに着目し、複数のモデルを一括して取り扱うことで、行列・行列積演算に基づく実装を可能とし、GPUが有する高い演算性能を効率的に利用することを可能としました。また、NVIDIA GPUに搭載されたTensorコアを用いた行列演算の高速化や、Tensorコアに適したメモリレイアウトの設計にも取り組み、性能測定を行いました。結果として、多右辺化で十数〜数十倍、Tensorコア利用でさらに数倍の高速化を確認しました。
なお、研究で用いる可視化ツールの開発にも DirectX 12 の自作エンジンを活用しています。

Other Projects
上記で取り上げなかったプロジェクトのうち代表していくつかを以下に記載します。
クリックすると展開されます。