Blog
随笔与项目记录。新文章会发在这里;更早的技术笔记归档在 /legacy(不再主动维护)。
用 Rust + AI 几天重造 Office?ArtCraft 的技术架构与开发速度
从 WordCraft、GridCraft、DeckCraft 出发,研究 Rust + egui 办公软件的实现、几天内集中发布的公开时间线、并行 AI Agent 的工程方法,以及距真正替代 Office 还有多远。
为什么要自己写游戏引擎?
从 C++ 自研引擎到 Rust/Bevy 的再次尝试,思考技术自主权的价值、重复造轮子的代价,以及 AI 时代真正稀缺的迭代能力。
把 Minecraft 塞进另一款游戏:Passthrough Mod 的原理
当 Minecraft 的红石、背包与生物走进 Skyrim 和 GTA V,究竟是重新制作了一套游戏,还是让两个真实游戏同时运行?从跨进程通信、世界与碰撞映射,到原版 UI、渲染合成和玩法事件桥接,拆解 Passthrough Mod 的实现思路。
为什么我又离开了 Rust 与 Bevy
PhotoCraft 让我重新燃起对 Rust 的热情,AI 编程也让我想拾起搁置两年的 Ethertum。但十个小时后,我再次停了下来:问题不在于能不能写出来,而在于多久才能看到结果。
从机械动力到航空学:Minecraft 的动态结构与物理模组
从 Create 的机械传动,到 Valkyrien Skies 与 Sable 的动态方块世界,再到 Clockwork、Trackwork 和 Aeronautics:理解 Minecraft 物理模组的技术路线与生态。
用 Rust 和 egui 重造 Adobe 全家桶?
从几十 MB、一秒多就安装好的 PhotoCraft 和 FilmCraft 出发,聊聊 AI 重造创作软件的惊讶、egui 即时模式 GUI 的性能与开发体验,以及原生 UI 与 Web UI 的取舍。
别替别人拒绝自己
一次 Undertale 音乐会后的拍摄遗憾,让我重新思考害怕打扰别人、提前放弃愿望的习惯,以及如何更从容地记录珍贵瞬间。
三天像三年:Meta Horizon Worlds Creator Academy Seoul 2025 回顾
一次只有三天的 Creator Academy 与 Hackathon,却集中暴露了工程、产品、展示、合作与沟通中的许多问题。这是 Ducky Bumpy Arena 的开发回顾,也是一次关于“做出来之后还缺什么”的复盘。
我没有玩完 Undertale,为什么仍然被它深深打动?
因为一场音乐会,我第一次真正打开 Undertale。它的 PC 体验甚至有些原始,战斗也把我劝退;可 Toriel、一次误杀和一次回档,却比后来完整看完的剧情解说更难忘。
游戏设计理论简介
按谱系介绍 MDA、元素四元组、Rational Game Design、心流、技能原子等常用框架:各自说什么、从哪来、适合用来想哪类问题。
Unity SRP:从 Camera 到 GPU 理解渲染管线架构
从 RenderPipeline、Camera、Culling、RendererList、CommandBuffer 到 Render Graph,沿着一帧的真实路径理解 Unity Scriptable Render Pipeline 的架构、核心组件与设计动机。
这些年:从抓住机会,到重新思考什么才稀缺
从 2024 年毕业、实习与进入游戏行业,到 2026 年 AI Agent 改变开发方式。回头看这几年,我真正重新理解的,是机会、工程、产品,以及什么能力仍然值得长期投入。
Render Graph:从 Render Pass 到资源依赖与调度
从 Why 出发理解 Render Graph:它如何把 Render Pass、纹理与缓冲区组织成依赖图,如何管理资源生命周期、同步和调度,以及 Unity Render Graph、Unreal RDG 与 Bevy 渲染架构的异同。
Unity 自定义渲染:Renderer Feature、Custom Pass 与 Render Graph
从 Render Pass 的基本概念出发,理解 URP 的 Renderer Feature / ScriptableRenderPass、HDRP 的 Custom Pass,以及它们与 SRP、Render Graph 之间真正的层级关系。
感谢那些没有打开的门
我们总是知道一扇门关上时失去了什么,却不知道它让我们避开了什么。
当“做出来”不再稀缺:AI 时代,游戏开发者的价值正在转移
当 AI 快速降低知识获取与执行成本,游戏开发者的核心价值会消失,还是迁移?从 Agent、游戏开发基准、可验证性与系统设计出发,重新理解 AI 时代的专业能力。
理解先于自动化:AI 工作流真正解决什么问题?
当 AI 可以自动规划、编码、测试甚至连续工作数小时,真正的瓶颈为什么仍然是理解、判断与验收?从 Agent、Workflow、AI Slop 到 Intent-first,重新思考什么才值得自动化。
Active Ragdoll:从动画角色到物理角色
从动画与物理的根本矛盾出发,理解 Active Ragdoll 如何借助刚体、关节与反馈控制构造真正存在于物理世界中的角色,并系统讨论 PD Controller、平衡、行走、受击、抓取、Get Up 与 Unity 实现中的稳定性问题。
《TENET》:发生的已经发生,但这不是无所作为的借口
从暮光暗号、无知原则、Sator Square、Algorithm 与 Neil 的最后选择出发,理解《TENET》如何把时间逆转变成关于知识、行动、责任与牺牲的哲学命题。
这个中秋,我没有拆开那盒月饼
2026 年中秋假期的记录:写作、学习、个人网站,以及一盒始终没有拆开的月饼。
人生的复利:那些越早知道越好的事
人生中有些东西会复利,有些东西会折旧,有些错误可以重来,有些代价却会延迟结算。与其寻找一份成功清单,不如建立一套关于健康、财富、职业、时间、机会与判断的人生操作系统。
为什么短段落更容易读?——写给屏幕时代的文章排版与节奏
为什么同样的内容,拆成短段落后就更容易读下去?从 AI 文本中的两种写作风格出发,讨论屏幕阅读中的文字墙、段落节奏、语义边界,以及短段落为什么也不能无限拆分。
《以太效应》:我们想创造一个怎样的沙盒世界?
从可编辑的体素世界、物理模拟和机械装置,到 UGC、Mod、AI 干员与动态叙事:《以太效应》试图构建的不是一份越来越长的功能清单,而是一个能够被玩家、创作者、程序与 AI 共同理解和改变的沙盒世界。
傅里叶变换:游戏开发中的频域思维
从 Waveform 与 Spectrum 出发,理解傅里叶变换为什么把时域问题转换到频域,以及 FFT、采样、窗口、STFT、卷积和频域海洋在游戏开发中的意义。
VaM 角色管线解析:从资产文件到渲染与物理交互
从 Genesis 2 人体、VAR 与人物预设出发,梳理 VaM 1.x 的角色加载、Morph、蒙皮、关节驱动、软组织、衣发模拟和皮肤渲染,理解可交互人物的制作与交付流程。
解剖《Enshrouded》的体素世界:从创作工具到渲染与碰撞
结合 Keen Games 的世界设计资料和本机版本的资源反射、体素 tile 与机器码证据,追踪可编辑世界从创作到存储、Mesh、渲染和物理的路径。
Minecraft 地形生成解析:从密度场到完整世界
面向游戏程序开发者,解析 Minecraft Java 26.2 主世界如何用密度场、噪声与样条塑造山川,协调洞穴、含水层和生物群系,并以可重复的区块流水线生成世界。
Teardown 的体素物理:碰撞、破坏与动态结构
Teardown 为什么能让任意形状的体素实时碰撞、穿透、破坏并重新成为刚体?从 Voxel Volume、碰撞检测、材料破坏、Connectivity 到 Joint 与约束求解,拆解其完全可破坏世界背后的物理架构。
拆解 Voxy:Minecraft 远景渲染背后的数据系统
从一块方块的变化出发,读懂 Voxy 如何用多级体素、增量更新、8 字节四边形、GPU 层级遍历和任务反压维持远景。
从提问到知识库:我的 AI 辅助学习与知识沉淀工作流
AI 让答案变得廉价之后,学习真正困难的部分变成了提出问题、验证理解、建立知识结构,并把一次性的对话沉淀成可以长期维护的知识。
《金字塔原理》:先说结论,不等于只说结论
芭芭拉·明托如何用结论先行、纵向问答、横向归类与 SCQA,把写作从堆砌信息变成组织思考;以及这套方法什么时候好用、什么时候不该硬套。
理解 ECS:从对象到数据的游戏架构
ECS 不只是 Entity、Component 和 System 三个概念,而是一种围绕数据访问模式组织游戏世界的方法。本文从现代 CPU 与数据导向设计出发,再通过 Unity DOTS、Bevy 以及其他 ECS 实现理解它的优势、代价与适用边界。
Notch、Jeb 与 Mojang:一个方块世界如何离开它的创造者
从 2009 年的 Cave Game、厨房里的 Mojang,到 Jeb 接棒与微软收购:Minecraft 不只是天才程序员的神话,更是一场关于创造、交接和共同所有感的实验。
Java 的三十年:从 Oak、JVM 到 Kotlin
从嵌入式设备上的 Oak 到企业后端与 Android:梳理 Java 的由来、主要版本语言特性、JVM 执行模型,以及 Kotlin 为什么能在 Java 生态中成长。
理解 Kotlin:一门现代工程语言是如何设计的
从 Null Safety、Nothing、Lambda、Receiver、Extension、Delegation 到 DSL、Compose 与 Coroutine,理解 Kotlin 如何用少数可组合的语言机制构造安全而富有表达力的工程 API。
理解 Kotlin:一门现代工程语言是如何设计的
从类型安全、Lambda、Receiver、Delegation 到 DSL 与 Coroutine,理解 Kotlin 如何用少数可组合的语言机制,构造简洁而富有表达力的工程 API。
Kotlin:一门现代工程语言是如何设计的
从 Null Safety、Nothing、Lambda、Receiver、Extension、Delegation 到 DSL、Compose 与 Coroutine,理解 Kotlin 如何用少数可组合机制构造安全而富有表达力的工程 API。
Rust 宏如何创造 DSL:从 TokenStream 到自定义语法
Rust Procedural Macro 为什么能接受不像 Rust 的语法?从一个 routes! 示例出发,理解 TokenStream、Parser、AST 与代码生成之间的关系。
稳定的代价:房子、婚姻与现代人的选择权
从铁饭碗、买房、婚姻到生育:当传统人生脚本不再理所当然,我们究竟是在逃避承诺,还是开始重新计算稳定的代价?
3D 碰撞检测:从海量物体到一组接触数据
碰撞检测不是「判断是否相撞」这么简单——它要在可接受的代价下,为求解器稳定地交付接触点、法线与深度。本文按管线分层讲清宽相、窄相、流形与 CCD。
3D 物理引擎核心概念:碰撞、分离、约束与并行
从刚体与形状出发,沿一次物理更新的管线理解碰撞检测、接触分离、约束求解、休眠、岛屿划分与多线程——不绑定具体引擎实现,建立可迁移的 mental model。
游戏物理引擎横评:PhysX、Jolt、Havok、Bullet、Box2D 与 Rapier
面向游戏开发者的六款主流物理引擎对比:特性、授权、引擎集成与代表作,帮你判断该用商业中间件、老牌开源库,还是新一代方案。
域名在哪里买最靠谱?注册商价格、后缀与避坑指南(2026)
横评 Cloudflare、Porkbun、Dynadot、Spaceship、Gandi 与国内云厂商:不只看首年低价,更看续费、转出、DNS、安全与长期总成本。
MDX 组件展示:从提示框到可播放的五线谱
一页看完本站已接入的 Fumadocs 组件、Mermaid、KaTeX、ABCJS 谱面和交互式图表,并附可复用的 MDX 写法。
索引
把博客文章按 Git、Unity、编程语言、游戏开发数学、物理引擎、影视解析、读书分享、游戏思考、AI、网站与生活话题整理在一起,方便从感兴趣的方向开始阅读。
《原子习惯》:小得不起眼,却改得了人生
詹姆斯·克利尔用 1% 复利、身份认同与行为四定律,把「养成习惯」从意志力鸡汤,变成一套可设计、可迭代的系统——和《七个习惯》搭着读,一个管方向,一个管落地。
《烟花》:如果人生可以重来,我们真的能抵达幸福吗?
《烟花,应该和谁看?从侧面看还是从下面看?》并不只是一个关于时间重来的青春爱情故事。它真正讨论的,是后悔、选择、逃离、成长,以及那些永远无法同时拥有的人生。
朝花夕誓:在离别之朝,约定之花究竟束给了谁
冈田麿里导演处女作——当不老之民拾起人类婴孩,一段跨越世代的「非血缘母子」如何在约定、错位与放手之间,长成一部关于母性与离别的童话悲剧。
游戏开发中的叉积:方向、面积与法线从哪里来?
从二维左右转判断,到三维三角形法线、面积与局部坐标轴,用可拖动的图理解叉积的方向、大小和参数顺序。
一个点积,为什么能回答这么多游戏问题?
从夹角、前后判断和视野检测,到 Lambert 光照、斜坡、碰撞响应与向量投影:理解游戏开发中最常用也最值得理解的数学工具之一——点积。
为什么游戏里的“积分”不是高中数学那个积分?
从高中微积分,到 Euler、半隐式 Euler、Verlet 与 RK4:理解游戏物理如何把连续世界离散成一帧一帧的计算。
奶娃与豆包:当古典油画悲剧遇上 AI 与人鱼的眼泪
B 站上一种 AI 短视频把预拉斐尔派与丁托列托的史诗悲剧,换成萌物主角,再配 EXO《Baby Don't Cry》——为何又深沉、又戏谑,还让人停不下来?
《高效能人士的七个习惯》:为什么改变要从自己开始?
从性格伦理到 P/PC 平衡,从积极主动到不断更新——斯蒂芬·柯维这本 1989 年的书,为什么在我读完很多年后仍然觉得值得反复翻开。
《人性的弱点》:让人愿意听你的,从来不是道理
戴尔·卡耐基 1936 年的人际关系经典——不批评、真诚欣赏、先看见对方:为什么九十年过去了,这套「旧道理」仍然管用。
《非暴力沟通》:多听需要,少说评判
观察、感受、需要、请求——马歇尔·卢森堡这套四步框架,如何帮我把「好好说话」从技巧,变成真正听见彼此的需要。
Git 客户端与工具推荐
CLI 仍是根基,但 GUI、TUI、IDE 集成与 diff 工具能显著降低日常摩擦。按平台与使用场景整理 Git 客户端、终端增强、合并工具与协作 CLI 的选型建议。
Git 核心概念与实用技巧
从 Commit、Branch 和 HEAD 开始理解 Git 的工作模型,并介绍 Merge、Rebase、Cherry-pick、Reflog、Worktree 等日常开发中真正实用的技巧。
Git 托管与备份:GitHub、自建 Gitea、NAS 与其他方案
远程仓库不只是 push 的目标——它决定协作、CI、权限与灾备边界。从 GitHub 到自建 Gitea、NAS 与 Codeberg 等替代方案,再到多 remote 镜像与 git bundle,一文理清 Git 托管选型与备份策略。
Git 大文件、Git LFS 与 Perforce
Git 擅长管理文本与源代码,却在大二进制资产上容易失控。从 Git 为何「胖」、Git LFS 如何分流大文件,到 Perforce 为何长期占据游戏与影视管线,一文理清选型与落地要点。
RADWIMPS《Date》:简约表面下的「心不在焉」
《你的名字。》里泷与奥寺前辈约会时那首钢琴曲——为何听起来单纯,却像有人替你把说不出口的心事按在了琴键上。
Unity Editor 是怎么做出来的:界面、框架,以及和 Godot / Unreal 的根本差别
从窗口栈、IMGUI 与 UI Toolkit,到 Yoga、序列化与程序集隔离:剖析 Unity 6 Editor 的构成。游戏引擎工具开发者能借鉴什么,它和 Godot、Unreal 编辑器差在哪,以及 Editor 界面能不能塞进游戏里。
拍了很多,却说不清摄影是什么
从 2020 年第一台相机到几个 TB 的素材——设备、快门声、学院活动、手动对焦,以及一个至今空着的作品集。关于「决定性瞬间」和「把人拍美」,我慢慢想明白了一点。
我为什么选 Android(小米 14),而不是 iPhone
二手 ¥1200 的小米 14 1TB——主力在 PC,手机负责日常,但不想在存储和接口上将就。对比 iPhone 16 / 17 标准版的 USB、充电与存储加价。
C418《Sweden》:一首方块世界里的帕萨卡利亚
从创作背景、游戏内播放机制到 D 大调与 B 多利亚的色彩——拆解 Minecraft 最受欢迎配乐为何听起来像一段记忆,而不是一首「游戏主题曲」。
Unity 的 AI 大转弯:从 Muse 订阅到 CLI 开放
几年前 Unity Muse 卖资产生成和聊天,贵且难用;如今 Unite 2026 推出 Unity CLI 与 Pipeline,第三方 Agent 免费接入。这不是突发善心,而是战略、管理层与开发者生态共同推动的结果。
Unity 的 C# 运行时:从 Mono、IL2CPP 到 CoreCLR
Unity 为什么用了二十年的 Mono,又为何创造 IL2CPP,最终却选择拥抱 CoreCLR?从 JIT、AOT、性能与编译时间,到热重载、Mod 与 iOS 平台限制。
Unity 的二十年:从降低游戏开发门槛,到重建开发者信任
从 GooBall 与移动游戏浪潮,到 Runtime Fee、管理层更替和业务收缩,再到 CoreCLR 与渲染管线的收敛:回看 Unity 如何改变游戏开发,又为何需要重新赢得开发者信任。
Unity 渲染管线全解:从 BRP 到 SRP,再到 URP、HDRP 与 Unified Rendering
Built-in、SRP、LWRP、URP、HDRP 各自是什么、解决了什么问题、代价在哪里;2026 年渲染战略与 Unified Rendering 的真实含义;以及不同管线之间如何迁移、迁移要花多少成本。
C# 的委托与事件:Delegate、Action、Func 与 event 是什么关系?
从 delegate 到 Action/Func,再到 event 的访问限制——并拆开 Func 的源码定义、16 个参数重载,以及泛型类型参数上的 in/out 变型。
C# 版本史:从 1.0 到 14,语言特性如何演进
梳理 C# 自 2002 年以来的版本脉络——从传统 OO 到泛型、LINQ、async/await、模式匹配、record 与 Span,再到 C# 14 的 extension members 与 C# 15 预览。
知道是 AI 做的,为什么感觉就不一样了?
同样一件作品,贴上 AI 标签,你的感受可能就会变——这不只是挑剔,而是人类评价时一直捆绑在一起的几件事,被 AI 拆开了。
三个游戏引擎到底有多胖?Godot、Unity 与 Unreal 的重量级对比
同样都是游戏引擎,为什么 Godot 只有几百 MB,Unity 要装好几个 GB,Unreal 更是几十 GB?从编辑器体积、开发环境到最终打包,对比三者的设计哲学与数量级差异。
.NET 的平台弯路:闭源锁 Windows,开源来得偏晚
CLI 早就能跨平台,微软却把 .NET 锁在 Windows。闭源守城、被 Java 占先、Mono 先行开路——2014 年才转向开源跨平台,产品路线绕了二十年。
节省是一种策略,但不应该成为一种本能
四百块生活费、140 块的 CPU、二手镜头和三百块的 4K 屏——当一天收入抵两个月生活费之后,我才明白:穷的时候更要物尽其用,不穷了之后更要警惕:过度节省省不出财富,只会把人生省得太便宜。
很多桌面应用为何自带浏览器引擎?从 Electron 到 WebView2 的二十年轮回
Electron 为何给每个应用塞一份 Chromium?WebView2、Tauri 在解决什么问题?IE 时代又告诉我们共享 Runtime 为何曾经是一场灾难。
Voxel Playground:玩法、版本演进与开发回顾
从体素破坏、物理枪械和工程机械,到早期 XR 原型与第一人称转型:一位参与开发者的回顾,附 Mod 系统的技术取舍。
从 VitePress 到 Fumadocs
记录用 Fumadocs、Next.js 和 Cloudflare Workers 搭建三个内容站的经验,以及我为什么从 Vue 转到 React。
静态站与 Next.js 部署平台免费版横评(2026)
Vercel、Cloudflare、Netlify、GitHub Pages 等平台的免费额度、流量与请求限制对照,以及文档站选型建议。
健康:人生所有目标的基础设施
拥有时几乎感觉不到,失去后瞬间成为最重要的事——从塞内卡《论人生短暂》到 AI 时代的熬夜冲动,谈为什么照顾身体是在保存未来的选择权。
Skill + CLI 优先,MCP 按需:2026 年的 Agent 工具分层
Skill 定义工作流,CLI 执行本机操作,MCP 连接外部系统——三者分工不同,不应混为一谈。
Life
关于人生、时间与选择的随笔。
模组系统对照:创作者在哪一层
强弱不看能改多少,看作者席开在哪一层。资产、数据、沙箱、API、注入、服务端立法是六种合同;把它们收成名单,会看丢能抄走的东西。
从渲染方程到路径追踪:现代真实感渲染的统一框架
从 Rendering Equation 出发,理解 Path Tracing 如何统一阴影、全局光照、反射与折射,以及 SSAO、SSR、大气散射、体积云、相机效果和风格化渲染在整个渲染体系中的位置。