青山軒

倉經所閒虛言

Unity

UE

  • UE5 下的 TUIO 简单框架

    TUI,即有形交互界面,通过可触摸的 (tangible) 元件进行人机交互。TUIO 是一套用于多点触控屏幕的通用通信协议,本工程在该协议的支持下,实现了多点触屏令牌对场景的基本操控。

HTML

  • 复合节奏示范 有声

    训练对复合节奏型的乐感(类比《节奏医生》的举重小游戏)。

  • DTMF 拨号键盘 有声

    模拟固话键盘的双音多频拨号音,在某些环境可以直接用于电话拨号。

  • 李萨如图形模拟器 Vibe Coding 有声

    可视化探索纯律与十二平均律在音程上的差别。

  • 猜汉字 Vibe Coding

    谜底是一个一级字,每次猜一个汉字,显示该字与谜底在楷体渲染下的重叠部分。

WebGL

  • 扫雷

    用 Unity 还原了简单的扫雷,可以调地图尺寸和雷数。

  • 流程图画板

    可以用来画文字冒险游戏之类的流程图,本意是记录游戏存档的层级。

  • 橡皮泥流水线

其他作品

糊着玩的世界观


更多内容敬请探索网页的其他板块。

实机画面
实机画面

《LEBOT》是一款利用 AI 实时生成模型,来让玩家的形象出现在游戏中并且能被操控的动作游戏。游戏策划案是由费月桐同学提出的,我在项目中的职责是程序,同时参与策划案的讨论。

这个作品经历过一次翻新重做,我们把它们称作 1.0 和 2.0 版。这两版最主要的区别就是从一个横板格斗游戏改成了第三人称视角格斗游戏。

1.0 版旧场景
1.0 版旧场景

1.0 版新场景
1.0 版新场景

最开始的场景非常粗糙,后来由同学微调场景模型,由我修正贴图并应用卡通渲染之后,得到了呈现效果不错的场景。

横版操作
横版操作

在 1.0 版本中,玩家上传图片或者拍照,然后得到属于自己的角色,AI 会根据这个角色的主题色来赋予它相应的技能(比如红色对应火焰技能)。玩家会控制角色来打倒一波又一波的机器人,就像上图一样。

拉镜慢放增加反馈
拉镜慢放增加反馈

为了增加游戏过程中的反馈,我在致命一击时为镜头调度增加了拉镜、摇臂和慢放效果,使得画面更有打击感、电影感,同时也可以让玩家喘息片刻。

2.0 版教学场景
2.0 版教学场景

至于为什么要从 1.0 的横板改为 2.0 的第三人称视角,最主要的原因是横板控制相比之下缺少了一些临场感和代入感。我们想让游戏变得更有趣一些,于是从对抗敌潮改为一对一格斗,格斗的对象是上一个玩家,这也可以充分利用引以为“卖点”的 AI 资产来。此外,改成第三人称视角也更有利于格斗题材的发挥。

实际游玩时,等待 AI 生成资产的时间较长。我利用起了这段时间作为新手教程,让 API 调用在后台进行。这样玩家不会在等待生成时感到无聊,也可以提前熟悉格斗的招式。

镜头锁定功能
镜头锁定功能

键鼠 / 手柄无缝切换
键鼠 / 手柄无缝切换

我还为游戏增加了一些重要的功能,比如镜头的锁定以及输入设备的切换,这些都让整个游戏更完整、更“专业”,能够在国际电玩展上稳定地展示。

1.0 版在东京电玩展
1.0 版在东京电玩展

2.0 版在 GDC 游戏展
2.0 版在 GDC 游戏展

w^=arg minw^(yXw^)T(yXw^).(1)\hat{\bm{w}}^* = \argmin_{\hat{\bm{w}}}(\bm{y} - \mathbf{X}\hat{\bm{w}})^\mathrm{T} (\bm{y} - \mathbf{X}\hat{\bm{w}}). \tag{1}

J(w^):=(yXw^)T(yXw^),(2)J(\hat{\bm{w}}) := (\bm{y} - \mathbf{X}\hat{\bm{w}})^\mathrm{T} (\bm{y} - \mathbf{X}\hat{\bm{w}}), \tag{2}

展开得到

J(w^)=yTy2w^TXTy+w^TXTXw^.(3)J(\hat{\bm{w}}) = \bm{y}^\mathrm{T}\bm{y} - 2\hat{\bm{w}}^\mathrm{T}\mathbf{X}^\mathrm{T}\bm{y} + \hat{\bm{w}}^\mathrm{T}\mathbf{X}^\mathrm{T}\mathbf{X}\hat{\bm{w}}. \tag{3}

w^\hat{\bm{w}} 求导:

J(w^)w^=2XTy+2XTXw^,(4)\frac{\partial J(\hat{\bm{w}})}{\partial \hat{\bm{w}}} = -2\mathbf{X}^\mathrm{T}\bm{y} + 2\mathbf{X}^\mathrm{T}\mathbf{X}\hat{\bm{w}}, \tag{4}

令梯度为 0,得

XTXw^=XTy.(5)\mathbf{X}^\mathrm{T}\mathbf{X}\hat{\bm{w}} = \mathbf{X}^\mathrm{T}\bm{y}. \tag{5}

XTX\mathbf{X}^\mathrm{T}\mathbf{X} 可逆,即 XTX\mathbf{X}^\mathrm{T}\mathbf{X} 是满秩矩阵或正定矩阵时,

w^=(XTX)1XTy.(6)\boxed{ \hat{\bm{w}}^* = (\mathbf{X}^\mathrm{T}\mathbf{X})^{-1}\mathbf{X}^\mathrm{T}\bm{y}. } \tag{6}

死去的排列组合、数理统计、线性代数回忆正在攻击我.

绪论

“奥卡姆剃刀” (Occam’s razor) 是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观察一致,则选最简单的那个”.……然而,奥卡姆剃刀并非唯一可行的原则.

对于一个学习算法 La\mathfrak{L}_a,若它在某些问题上比学习算法 Lb\mathfrak{L}_b 好,则必然存在另一些问题,在那里 Lb\mathfrak{L}_bLa\mathfrak{L}_a 好.

“没有免费的午餐”定理,简称 NFL 定理。
如果不假设训练数据和测试数据之间有某种共同规律,那么学习是不可能的。
机器学习的关键不是找到“万能模型”,而是找到适合当前问题结构的模型、假设和归纳偏置。

阅读全文 »
0%