作品紹介

Ryze

Idomi Games · Steamでプレイテスト公開中

概要
自分自身を「投げて」登っていく2Dプレシジョンプラットフォーマー。溜めて投げたパールの着地点へワープしながら、二つの次元を行き来する足場を登っていきます。
期間
2022年 — 現在。Global Game Jamの作品から始まり、製品版の開発へと発展しました。
担当
  • プログラマー・共同創業者
  • ゲームの手触りを決めるキャラクターコントローラーと「投げてワープする」移動
  • 動く足場、崩れる足場、ピストン、ベルトコンベアなどのレベルギミックと、それらをすべて検証できるテストレベル
  • NPC、歩いて近づくカットシーン、多言語対応を備えた再利用可能な会話システム
使用技術
Unity 6, C#, Input System, Odin Inspector, Ripple

専用の内視鏡コントローラーで操作する粘膜下層剥離(Lumen)

Lumen

XR Japan · 内視鏡シミュレーター

概要
医師が専用の内視鏡コントローラーとフットペダルを使い、動きのあるリアルな食道で内視鏡的粘膜下層剥離術(ESD)を練習できるバーチャルトレーニングプラットフォーム。第一線の内視鏡医の監修のもと開発され、現在ベータ版です。
期間
開発中(リードプログラマー)
担当
  • リードプログラマーとして設計・規約の策定、クライアントやパートナーとの技術的な打ち合わせ
  • 手技に応じた組織の挙動(Burstで高速化したソルバー)
  • 病変のマーキングと専用内視鏡コントローラーの入力処理
  • 読み込み時間とフレームタイムの最適化
使用技術
Unity、C#、URP、Burst/Jobs、専用ハードウェア入力

Ripple

オープンソースのUnityフレームワーク

概要
共有変数、型付きイベント、ランタイムセットをアセットとして持つScriptableObjectフレームワーク。システム同士が直接参照し合うのではなく、データを介してやり取りします。他の同種の仕組みと違い、「誰が何を変えたか」が見えるのが特長です。
期間
2024年 — 現在
特徴
  • すべてのアセットに「Invoked by」表:呼び出し元、呼び出し回数、最後の値
  • ワンクリックでコード・シーン・プレハブ中のすべてのリスナーを検索
  • 全アセットを一覧できるウィザードと、リアルタイムのイベントロガー
  • Ryzeをはじめ、最近の自分のゲームすべてで使用
使用技術
Unity、C#、Odin Inspector、UltEvents、リフレクション、UPM

BotBandJazz

HTC Vive · Dutch Game Gardenで展示

概要
古い劇場を舞台にしたVRゲーム。劇場内のミニゲームをクリアして、ロボットのジャズバンドを再びステージに呼び戻します。Dutch Game Gardenで展示され、Dutch Game Awards 2017にも出品しました。
期間
2017年・10週間・6人チーム
担当
  • テレポート移動:放物線を描き、着地できる場所を判定
  • デザイナー向けトリガーシステム:ドロップダウンから関数を選び、パラメーターを入力するだけ
  • リズムミニゲーム用の、BPMに基づくUnity内レベルエディター
  • Viveコントローラーによる物理インタラクション
使用技術
Unity, C#, SteamVR, HTC Vive

Tristeon 3D editor with scene view, hierarchy, inspector and asset browser

Tristeon

C++ゲームエンジン · Leon Brandsと共同開発

概要
学生2人が5か月でゼロから作った3Dエンジン。VulkanレンダラーとUnityのようなエディターを備え、GitHubで70以上のスターを獲得しています。
期間
2017年
担当
  • エディター全体:シーンビュー、ヒエラルキー、インスペクター、アセットブラウザー
  • リフレクションとシリアライズ:シーンとプレハブをJSONで保存し、型名からオブジェクトを復元
  • 専用UIを書かずにあらゆるコンポーネントを編集できるインスペクター
使用技術
C++, Vulkan, ImGui, GLFW, Assimp, GLM, CMake

Shroomer

GMTK Game Jam 2026 · テーマ「Countdown」

概要
夢の中を舞台にしたサイケデリックなムーブメントシューター。目覚まし時計のカウントダウンが進む中、敵を倒すことでしか眠り続ける時間を延ばせません。
期間
4日間・4人チーム
担当
  • プログラミング全般
  • 慣性を活かしたコントローラー:エアストレイフ、ウォールラン、スライディング、ダッシュ、よじ登り
  • 組み合わせ式の敵システム:一つのコンポーネントで、移動と攻撃をドロップダウンから選択
  • 射撃、カウントダウンのゲームループ、メニューと設定
使用技術
Unity 6, C#, Ripple, FMOD, Feel

正確なタイミングのヒットサウンドで譜面を編集(音声あり)

osu!catch レベルエディター

コミュニティ向けツール

概要
数百万人のプレイヤーがいるリズムゲーム「osu!」ですが、catchモードには専用のエディターがありませんでした。そこで、拍に正確なタイムライン、編集ツール、譜面をすぐに試せるプレイモードを備えた専用エディターを作りました。
期間
2018年 — 2019年・個人開発
特徴
  • どの拡大率・BPMでも正確なままの、シェーダーで描画するビートグリッド
  • すべての編集に対応したアンドゥ/リドゥ、osu!譜面のインポートとエクスポート
  • オーディオクロック基準の再生で、タイミングがずれない
  • プレイヤーコミュニティからのフィードバックを受けながら開発
使用技術
Unity, C#, ShaderLab, NAudio

This Side Up

Mini Jam 188 · 制約「All in a box」

概要
荷物を届けるピクセルアートのプラットフォーマー。ただしジャンプはできず、ボクシンググローブのパンチで飛んでいきます。
期間
72時間・5人チーム
担当
  • All programming
  • マウスまたはゲームパッドで狙う、空中二段パンチ付きのグローブ推進
  • トリガーで90度回転する重力と、向きに合わせて変わる音楽
  • 粘着する壁、動く足場、ベルトコンベア、会話、FMODによるサウンド
使用技術
Unity, C#, FMOD, Ripple

その他のゲームジャム

Hako: the player next to a box with a door

Hako

Mini Jam 154 · プログラミング

入れ子になった箱の中の部屋を行き来するパズルプラットフォーマー。

itch.io
Island Revolution title screen

Island Revolution

Kenney Jam 2024 · MindNoMoreと共同制作

不満が反乱に変わる前に、街を周りの島とつないで資源を確保しましょう。

itch.io
Consumption key art

Consumption

Ludum Dare 52 · プログラミング

敵を「収穫」して生き延び、鉱石を収穫して強くなるアクションゲーム。

itch.io
Equilibrium title screen

Equilibrium

Global Game Jam 2022

48時間で作った二つの世界を行き来するプラットフォーマー。のちのRyzeの原点です。

itch.io
Rock the Boat: pirate ships on the waves

Rock the Boat

Global Game Jam 2017 · 浮力の物理とUI

揺れる海賊船のバトル。初めてのゲームジャムです。

itch.io

その他の作品

Orb: a level built in Unity running in our own C++ engine

Orb

自作C++エンジン · 2017年

初めて作ったエンジンで動く一人称パズルゲーム。物理エンジンとシリアライズを書き、Unityをレベルエディターとして使えるようにしました。

詳しく見る
Benchmark chart comparing C# and Wren

C# vs. Wren

研究 · C++エンジンのスクリプト言語

C++エンジンに組み込むべきスクリプト言語はどれか。実行速度、コンパイル時間、C++呼び出しのコストを計測しました。

詳しく見る
Ghostebash: the haunted museum level

Ghostebash

VR Amsterdam · フリーロームVR · 2021年 — 2022年

一つの部屋をグループで歩き回るVRアーケード向けのマルチプレイ・ゴースト退治ゲーム。プログラマーは私一人で、Mirrorによるローカルマルチプレイ、全身IK、物理インタラクションを実装しました。

Abyss: a forest level layout in the Unity editor

Abyss

2Dメトロイドヴァニア · 唯一のプログラマー · 2018年 — 2019年

奈落の底に封印された悪魔を描く手描きのメトロイドヴァニア。唯一のプログラマーとして、戦闘、敵、回復、パララックス、床の材質に応じた足音、アーティスト向けの奥行きレイヤーエディターを作りました。

Back to Bed!: a bedroom in VR

Back to Bed!

VR · 3週間 · プログラマー2人 · 2016年

一般向けVRが登場したばかりの頃に作った、初めてのVRゲーム。VRプレイヤーコントローラー、メニュー、イベントシステム、デザイナー向けのノード型会話エディターを担当しました。

大学の課題

サクシオン応用科学大学のゲームエンジニアリング課程で取り組んだ小さめの課題。どれも授業用のフレームワークの上に作りました。

ゲーム物理

C# · GXPEngine

速度、円運動、線分との衝突と反射など、ボールの物理を基礎から実装。

SATによる衝突判定

C# · Unity

Unity標準の物理を使わず、独自のリジッドボディと分離軸定理による衝突判定をもつ小さな物理マネージャー。

八分木によるブロードフェーズ

C++ · 初の自作エンジン

自作エンジンの物理で、近くのオブジェクト同士だけを衝突判定する八分木。ランダムに動くコライダーによる負荷テストシーン付き。

ゲームAI

C#

有限状態機械で動くエージェント、ノードグラフ上の経路探索、四目並べとDomineeringのミニマックスAI。

ネットワーク

C# · Unity

複数クライアントを同時に扱うTCPチャットサーバーと、独自のパケットシリアライズを備えたUnityクライアント。

オーディオプログラミング

C#

ポリフォニー対応のシンセサイザー、ビットクラッシャー・ローパスフィルター・ディレイなどのエフェクト、MIDI再生。

3Dレンダリング

C++ · OpenGL

小さなOpenGLフレームワーク上でのマテリアル、テクスチャ、ライト、GLSLシェーダー。

Luaスクリプト

C++ · Lua

C++へのLuaの組み込み。最終的に初の自作エンジンにLuaバインディングを実装。

プロシージャルメッシュ

C# · Unity

コードで生成するメッシュ:メッシュビルダー、部屋、曲線を回転体メッシュにするスプラインエディター。

Tiledレベルの読み込み

C# · GXPEngine

Tiled(TMX)で作ったレベルをゲームに読み込む仕組みを、MVCで構成。

ゲームアーキテクチャ

C#

グラフィックス・入力・物理のマネージャーを分けた、コンポーネントベースのエンジンの中核部分。

エディターの研究

C++ · ImGui

エンジンのエディターの作り方の研究:即時モードと保持モードのUIの比較、アセットブラウザーとJSONシーンの試作。Tristeonのエディターにつながりました。


GitHubのその他のリポジトリ