<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Virok · 数字空间</title><description>Virok 的个人数字空间。记录游戏开发、系统架构与工程实践 —— 用 Unity 做 Roguelike，用确定性模拟对抗不确定性。</description><link>https://wkwunchun.top/</link><language>zh-CN</language><atom:link href="https://wkwunchun.top/rss.xml" rel="self" type="application/rss+xml"/><managingEditor>Virok</managingEditor><webMaster>Virok</webMaster><item><title>30Hz 插值里那些不明显的坑</title><link>https://wkwunchun.top/notes/interpolation-traps/</link><guid isPermaLink="true">https://wkwunchun.top/notes/interpolation-traps/</guid><description>插值只在表现层是前提，但光有这条规则不够——旋转插值、传送、以及 alpha 超过 1 的情况都得单独处理。</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>Unity</category><category>游戏开发</category><category>插值</category><author>Virok (Virok)</author></item><item><title>Unity asmdef 与编辑器脚本：Player 构建失败的经典原因</title><link>https://wkwunchun.top/notes/unity-asmdef-editor-scripts/</link><guid isPermaLink="true">https://wkwunchun.top/notes/unity-asmdef-editor-scripts/</guid><description>ScriptsGameCore/Level/ 没有 asmdef 时，任何引用 UnityEditor 的脚本都会被打进 Player，导致构建报错。</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><category>Unity</category><category>构建</category><category>踩坑</category><author>Virok (Virok)</author></item><item><title>内容资产要握在自己手里：我怎么搭这个数字空间</title><link>https://wkwunchun.top/blog/own-your-content-assets/</link><guid isPermaLink="true">https://wkwunchun.top/blog/own-your-content-assets/</guid><description>一个要维护 5~10 年的个人站，真正的资产是 Git 里的 Markdown、标准 SQL 和 S3 里的对象。平台只是当前的运行环境。</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>架构</category><category>架构</category><category>Web</category><category>Astro</category><category>数据主权</category><author>Virok (Virok)</author></item><item><title>D1 导出成 SQLite：备份链路怎么走通</title><link>https://wkwunchun.top/notes/d1-export-to-sqlite/</link><guid isPermaLink="true">https://wkwunchun.top/notes/d1-export-to-sqlite/</guid><description>wrangler d1 export 拿到的 SQL 能直接喂给 sqlite3，这是 Cloudflare 体系里最容易迁移的一环。</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><category>Cloudflare</category><category>D1</category><category>备份</category><author>Virok (Virok)</author></item><item><title>只存 object key，不存 URL</title><link>https://wkwunchun.top/notes/store-object-keys-not-urls/</link><guid isPermaLink="true">https://wkwunchun.top/notes/store-object-keys-not-urls/</guid><description>把 CDN 地址写进内容，等于给未来的自己埋一颗定时炸弹。这条规则简单，但破起来非常容易。</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>架构</category><category>对象存储</category><category>数据主权</category><author>Virok (Virok)</author></item><item><title>确定性模拟：我为什么把游戏逻辑从 MonoBehaviour 里全部抽出来</title><link>https://wkwunchun.top/blog/deterministic-simulation-core/</link><guid isPermaLink="true">https://wkwunchun.top/blog/deterministic-simulation-core/</guid><description>把战斗逻辑从 MonoBehaviour 搬到纯 C# Sim 层，换来的是 bug 可复现、可重放、可测试。代价是前期多写一层，以及必须放弃一些 Unity 的便利。</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>架构</category><category>架构</category><category>Unity</category><category>游戏开发</category><category>确定性</category><author>Virok (Virok)</author></item><item><title>配置管线的现状：Excel 表有了，运行时还没有</title><link>https://wkwunchun.top/notes/config-pipeline-status/</link><guid isPermaLink="true">https://wkwunchun.top/notes/config-pipeline-status/</guid><description>Excel/ 下 18 张表是空模板，ConfigTools 到 CombatCatalog 的路径还没打通。记录一下卡在哪。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>配置管线</category><category>工具链</category><category>WOTW3D</category><author>Virok (Virok)</author></item><item><title>固定步长 30Hz：一个让 bug 可复现的决定</title><link>https://wkwunchun.top/blog/fixed-timestep-30hz/</link><guid isPermaLink="true">https://wkwunchun.top/blog/fixed-timestep-30hz/</guid><description>为什么选 30Hz 而不是 60Hz，累加器怎么写才不会死亡螺旋，以及插值为什么只能发生在表现层。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>架构</category><category>Unity</category><category>游戏开发</category><category>架构</category><author>Virok (Virok)</author></item></channel></rss>