<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>云风的 BLOG</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/" />
    <link rel="self" type="application/atom+xml" href="https://blog.codingnow.com/atom.xml" />
   <id>tag:blog.codingnow.com,2026://1</id>
    <updated>2026-03-11T10:05:45Z</updated>
    <subtitle>思绪来得快去得也快，偶尔会在这里停留</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2b5</generator>
 
<entry>
    <title>soluna 外挂 C 模块</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/03/soluna_external_lib.html" />
    <id>tag:blog.codingnow.com,2026://1.1328</id>
    
    <published>2026-03-11T06:49:58Z</published>
    <updated>2026-03-11T10:05:45Z</updated>
    
    <summary>soluna 集成了 lua 虚拟机，但默认构建方式是将 lua 库静态链接到唯一的执行文件中。这将导致无法以动态库的形式外挂 Lua 的 C 扩展。 这是因为，如果独立编译 Lua 的 C 扩展库，通常需要链接 Lua 的 C API 。标准的方法是动态链接 lua 实现，如果静态链接 liblua.a ，会导致进程中有多份 lua 的实现。在 Lua 的历史版本中，这将导致运行期错误。 这是因为，Lua 的实现中有一个静态的“空”对象，所有的 nil 都指向这个对象。如果进程空间中有多份 Lua 实现，就会出现多个空对象。运行时的数据结构中会引用这个空对象，而不同副本的实现将“空”和自身保留的“空”对象引用做比较时，就会出现错误的判断。 在更早期的版本，出现这种链接出现的项目，bug 会隐藏得很深。所以后来 Lua 增加了 luaL_checkversion() ，倡议在外部库初始化时调用，除了检查版本号，还会检查当前执行的...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="lua与虚拟机" />
    
    
</entry>
<entry>
    <title>Star Trek : Captain&apos;s Chair 初体验</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/03/star_trek_captains_chair.html" />
    <id>tag:blog.codingnow.com,2026://1.1327</id>
    
    <published>2026-03-01T11:24:54Z</published>
    <updated>2026-03-04T01:53:08Z</updated>
    
    <summary>今年过年，我沉迷于 Star Trek : Captain&apos;s Chair 这款 2025 年的桌游。暂时还没有中文版，如果直译的话，名为《星际迷航：船长之椅》。这是一款以卡牌构筑为核心玩法的桌游，在游戏过程中，不断完善自己的牌堆，构筑一个高效的得分引擎。如果能比对手获得更多的 VP 就可以获得游戏胜利，但也要避免突然死亡。这是一款新游戏，但作者 Nigel Buckle 和 David Turczi 之前已经用类似的系统出过 Imperium （帝国）三部曲。其中《帝国：经典版》和《帝国：传奇版》有中文版，在淘宝上就可以买到。btw, 前段时间我玩过的 VoidFall 也是他们的作品。 这个游戏的规则还是挺复杂的，在 BGG 上的 weight 评级达到了 4.06 。注：游戏的重度（weight）是由玩家评分综合而来，最高为 5 。它指的是规则的繁杂程度，而并非游戏的策略深度（通常有相关性）。例如围棋虽然策略深度几乎达到了桌游的天花板，但它的 weight 就不到 4 。而 bgg 上 weight 超过 4...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="桌面游戏" />
    
    
</entry>
<entry>
    <title>用 AI 辅助读书</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/02/ai_reading.html" />
    <id>tag:blog.codingnow.com,2026://1.1326</id>
    
    <published>2026-02-16T05:23:19Z</published>
    <updated>2026-02-16T05:48:48Z</updated>
    
    <summary>最近一年闲下来，我重新挖掘了读书的乐趣，尤其是读小说。 读小说真的需要时间和心境，因为进入心流状态更慢。如果长时间无法进入状态，很容易就读不下去；但一旦读进去了，比玩游戏（互动形式）或看影视剧（多媒体形式）更让人沉浸和回味。你可以对精彩处反复斟酌体会其中的情感，也更容易停下来脑补作者在情节上的留白。阅读节奏完全由自己控制，可快可慢。鉴于制作成本，小说的多样性远超其它媒介，提供的选择就更为宽泛。 我最近尝试使用 AI 来提升我的阅读体验。首先发现的是 AI 非常适合荐书。我使用的主要是 Gemini ，免费的版本就足够了。我可以先列举一些我很喜欢的书，让它帮我推荐更多。在初选的名单中，再通过对话了解书的特色。为了避免自己总是阅读类似的书，也会让 AI 推荐一些我之前没有尝试过的类型。当然，小说本身还是人创作的，通过推荐作者比推荐书本身更有效率。 这两个月我想读点太空歌剧类的小说，但老一点的名著基本都看过了，所以转向近十年的新作。另一方面的原因是大多数科幻小说本身就有时效性，这些年人类现实中的科技发展很快，文学家的幻想很容易随着时间和现实脱节。 但我很快就发现，想读新一点科幻小说最大的问题是中文版的翻译速度完全跟不上。AI 推荐的书 90% 都没有中译版。即使把时间放宽一点，十年前的长篇，往往也只翻译了开头。这很好理解：如果出版了第一本销量不如意，可想而知后续会更不理想。这在经济上是绝对理性的行为，可对粉丝来说颇有点难受。 题外话，桌游领域也有点类似。桌面游戏通常也是由单个人设计，受者也非大众。即使设计者想好了出一个系列，若前作卖得不够好，扩展包也就难以发行。我最喜欢的桌游设计师 Thomas Lehmann 解释过 Res Arcana 的第三个扩展 Res Arcana Duo 为什么作为一个（看似简化过的）独立游戏发行而不延续扩展包的形式：必须想点办法扩大这个系列的玩家群，否则扩展包的销量只会越来越少。作为中文用户，我对 Res Arcana Duo 至今没能出中文版还是有点伤心的。希望今年的新作 Dark Pact (2026) 黑暗契约可以出中文版。看完介绍，我对这个纯粹的卡牌构筑游戏颇感兴趣。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="读书" />
    
    
</entry>
<entry>
    <title>日常锻炼的一些记录</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/02/physical_training.html" />
    <id>tag:blog.codingnow.com,2026://1.1325</id>
    
    <published>2026-02-11T09:28:25Z</published>
    <updated>2026-02-11T10:46:39Z</updated>
    
    <summary>我大概是去年 4 月左右开始跑步的。离上次的记录已过了半年。 最近坚持的还不错，每周可以保证至少 3 次跑步。现在的心肺能力明显好了很多。去年刚跑步时，每跑 5-10 分钟就需要步行几分钟缓缓，不然心率很容易超过 140 （我给自己定的心率上限）。现在差不多可以保持心率在 140 以下连续跑完 4 km 了。大约花费 30 分钟。这差不多是 8km/h 的平均速度，前半程会更快一点，后半程为了保持心率需要降一点速度。 我觉得另一方面的原因是在冬季，跑起来不那么热。现在会挑选中午有太阳的时候跑，晒晒太阳更舒适。跑完后也没特别累的感觉，只是在最后 10 分钟有一点点难受，希望快点结束。但每次还是坚持跑满 30 分钟。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="育儿" />
    
    
</entry>
<entry>
    <title>介绍几款单人桌游</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/01/solo_boardgame.html" />
    <id>tag:blog.codingnow.com,2026://1.1324</id>
    
    <published>2026-01-24T13:08:25Z</published>
    <updated>2026-01-24T13:12:08Z</updated>
    
    <summary>上个月我花了不少时间在 dotAge 这个游戏中。我很喜欢这种通过精算规划应对确定风险的感觉。由于 dotAge 有很强的欧式桌游的设计感，所以我在桌游中尝试了一些有类似设计元素的单人游戏。 我感觉体验比较接近的有 Voidfall (2023) 和 Spirit Island (2017) 。因为灵魂岛（spirit island ）更早一些，而且 steam 上有官方的电子版，bgg 上总体排名也更高，所以我在上面花的时间最多。 这两个游戏的特点都是确定性战斗机制，即在战斗时完全没有投骰这类随机元素介入。在开战之前，玩家就能完全确定战斗结果。战斗只是规划的一环，考虑的是该支付多少成本或许多大的收益。而且灵魂岛作为一款卡牌驱动的游戏，完全排除了抽牌的随机性，只在从市场上加入新牌（新能力）时有一点随机性。一旦进入玩家牌组，什么时候什么卡牌可以使用，完全是在玩家规划之内的。这非常接近 dotAge 中规划应对危机时的体验。 灵魂岛的背景像极了电影 Avatar ：岛的灵魂通过原住民发挥神力赶走了外来殖民者。每个回合，把神力的成长、发威（玩家行动）和殖民者（系统危机）的入侵、成长和破坏以固定次序循环。其中，殖民者的入侵在版图上的地点有轻微的随机性，但随后的两个回合就在固定规则下，在同一地点地成长和破坏（玩家需要处理的危机）。扮演岛之灵魂的玩家可以选择到破坏之刻去那个地块消除危机，在此之前玩家有两个回合可以准备；也可以提前在殖民者成长之前将其消灭在萌芽之中，但这给玩家的准备时间更少，却往往意味着更小的消耗；还可以暂时承受损失，集中力量于它处或更快的发展神力。游戏提供给玩家的策略选择着实丰富。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="桌面游戏" />
    
    
</entry>
<entry>
    <title>和 AI 聊游戏设计</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2026/01/ai_game_design.html" />
    <id>tag:blog.codingnow.com,2026://1.1323</id>
    
    <published>2026-01-15T08:05:08Z</published>
    <updated>2026-01-15T08:11:12Z</updated>
    
    <summary>最近一段时间和 AI 聊游戏设计比较多。我主要用的是 google 首页上的 AI 模式，也试过 twitter 上的 grok 。 去年也和朋友聊过很多，但对理清楚自己的想法帮助有限。因为和人聊容易陷入不断的细节解释当中，一些天马行空的想法更容易被质疑，一旦陷入辩论就不太容易跳出来。而且每个人的时间并不固定，很容易造成时间和精力的浪费。和 AI 聊要轻松得多，AI 毕竟见多识广，随便提到的点都能接得上话。不想聊下去尽可以中断，不用担心浪费时间。即使怀疑 AI 出现幻觉，也可以随时暂停下来通过搜索核实。 不过，我觉得和 AI 讨论也有另一方面的问题。那就是太容易顺着你的思路夸大其词。它更像是一个貌似领域知识渊博但只是想讨好你的同好，不断的放出一些华丽的辞藻却在逻辑上经不起推敲。分析起游戏来头头是道，直到谈到我真的玩过上百小时的游戏时，对游戏的细节错误百出。如果我没有这些游戏的真实体验，几乎不可能分辨真伪。一开始我还会想和真人讨论时一样指出它的错误，让它修正后重新发表观点。后来就渐渐放弃了从 AI 那里直接获得真知。把它当成一个比搜索引擎更方便的信息获取入口就够了。 但我依然偶尔被 AI 的总结惊艳到。比如说有一场主题为模拟类型游戏的话题，聊到最后 AI 总结：...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="游戏" />
    
    
</entry>
<entry>
    <title>Skynet 升级到 Lua 5.5.0</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/12/skynet_lua_550.html" />
    <id>tag:blog.codingnow.com,2025://1.1322</id>
    
    <published>2025-12-23T02:19:52Z</published>
    <updated>2025-12-23T15:59:23Z</updated>
    
    <summary>Lua 5.5.0 已经正式发布。所以，skynet 的 Lua 版本也随之升级。 skynet 维护了一份修改版的 Lua ，允许在多个虚拟机之间共享函数原型。这可以节省初始化 Lua 服务的时间，减少内存占用。 跨虚拟机共享函数原型最困难的部分是函数原型会引用常量字符串，而 Lua 在处理短字符串时，需要在虚拟机内部做 interning 。所以 skynet 的这个 patch 主要解决的是正确处理被 interning 的短字符串和从外部导入的函数原型中包含的字符串共存的问题。具体方法记录在这篇 blog 中。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="skynet" />
    
    
</entry>
<entry>
    <title>带可可学数学</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/12/coco.html" />
    <id>tag:blog.codingnow.com,2025://1.1321</id>
    
    <published>2025-12-16T01:50:28Z</published>
    <updated>2025-12-16T02:03:48Z</updated>
    
    <summary>可可三年级，前段老师说她数学成绩不好，需要在家加强一下。 这段时间我每天晚上给她讲一点点数学，都是课本上的内容，然后我再稍稍发挥一下。几次之后，我发现最大的问题是她觉得数学很无聊。 她似乎比较抗拒学新的知识，更喜欢用熟悉的方法。去年我发现她计算能力有问题，每天给她做加减法练习，总算不再用更早年我教她的 +1 法算加法了：即计算 7+8 的时候，算 8 次 +1 ，也就是数数。二年级学了乘法，乘法表也背了，但现在做应用题，本该用乘法的场合，她还是习惯连续算加法，一旦乘数太大就会出错。要用除法的时候就更混乱了，并不是用减法，而是靠猜测来试。大脑里完全没有建立乘除的概念。乘法表更像是独立的有背诵任务的诗词，还没古诗那么有趣。 我说：数学其实是这个世界上最有趣的东西。 她说：为什么呢？ 我说：这个世界上有趣的东西很多，但数学是性价比最高的。一本数学书很便宜，但可以让你读很久。从中发现有那么多有趣的事实。原来解决不了的问题，知道方法突然就明白了。如果是自己找到的方法，就更让人兴奋了。 她说：我还是觉得数学没意思。 我说：慢慢来，不着急。首先不要排斥它。学数学其实不需要硬背那么多东西，我小时候最不喜欢背书了，所以才喜欢数学的。因为数学是最不需要背的，只要你从原理出发，一步步理解，最后什么问题都能解决，只是速度慢一点。多练习就快了。那些需要记住的知识，用的多就自动记住了，不需要专门背。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="育儿" />
    
    
</entry>
<entry>
    <title>最近玩的几款卡牌构筑类电子游戏</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/12/deckbuilder_games.html" />
    <id>tag:blog.codingnow.com,2025://1.1320</id>
    
    <published>2025-12-15T08:32:32Z</published>
    <updated>2025-12-15T08:39:20Z</updated>
    
    <summary>最近玩了几个卡牌构筑类的电子游戏，觉得颇为有趣，值得记录一下。 首先是 Decktamer（训牌师）。我玩了十几个小时，把初级难度通关了。 它的新设计是用卡牌构筑的形式重新做了一个宝可梦。和杀戮尖塔开创的战斗结束后抽卡，用战斗胜利的奖励钱买卡、洗卡、升级的模式不同。它的战斗卡是不需要洗的，战斗中死亡就直接消失；新卡片是在战斗中捕获对手获得。加强战斗卡的方式主要是用道具卡杂交战斗卡：从一张战斗卡上抽取需要的技能，加到另一张战斗卡上。 战斗过程更像是万智牌那种更传统的卡牌战斗模式：摆放战斗卡都场上，再由上场的卡片发动能力。这种传统战斗模式不同，发动战斗技能没有额外的资源消耗，而修改成每回合必然从卡片上所有技能中选择一个。这可以避免给同一张卡片合成太多能力造成的不平衡。更多能力往往只是增加了容错性，可以应付更多场景。 玩家卡牌被分成了两个牌堆：战斗卡堆和道具卡堆。这种双卡堆的模式最近的卡牌构筑游戏中比较常见，下面还会再提到。不过这里道具卡堆并不是抽牌堆，更像是一个道具背包，可以随时使用。 我在简单难度通关的感受是：只有最终 boss 有挑战。而这种挑战更像是一个谜题。所以第一次面对最终 boss 我没有一次通过。而是熟悉了它的技能，第二次刻意针对这些技能来升级牌组，这样才通关。整个游戏给我的感觉是，解密成分更重一些，也就是该如何养卡才能解决对手。所以游戏里（简单模式下）有无限次的 undo 。我相信选择更高难度后会有不同的感受。不过暂时没有玩下去。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="游戏" />
    
    
</entry>
<entry>
    <title>欧陆风云5的游玩笔记</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/11/eu5_notes.html" />
    <id>tag:blog.codingnow.com,2025://1.1319</id>
    
    <published>2025-11-28T10:53:55Z</published>
    <updated>2025-11-28T10:55:12Z</updated>
    
    <summary>最近一个月共玩了 270 小时的欧陆风云5 ，这两天打算停下来。最近在游戏后期打大战役时，交互已经卡得不行。我已经是 i9-14900K 的 CPU ，估计升级硬件已经无法解决这个问题，只能等版本更新优化了。 ps. 其实只要把游戏暂停下来立刻就不卡了。虽然我直到这个游戏需要的计算量非常大，但是卡交互操作肯定是实现的不对。因为这并不是因为渲染负荷造成的卡顿，可以让游戏时间流逝更慢一些，也不应该让鼠标点击后的界面弹出时间变长。 在暂置游戏前，我先把一些关于游戏设计上的理解先记录下来。也是对上一篇的补充。 在最初几十小时的游戏时间里，我一直想确认游戏经济系统的基础逻辑。和很多类似策略游戏不同，欧陆风云5 在游戏一开始，展现给玩家的是一个发展过（或者说是设定出来）的经济系统版图。玩家更需要了解的是他选择扮演的国家在当下到底面临什么问题，该怎样解决。这不只是经济，也包括政治、文化和军事。而很多游戏则是设定好规则，让玩家从零开始建设，找到合适的发展路径。 大多数情况下，EU5 玩家一开始考虑的并不是从头发展，所以在游戏新手期也没有强烈的理解游戏底层设计细节的动机。不过游戏也有开荒玩法，在游戏中后期势必会在远方殖民、开拓新大陆；甚至游戏还设计了让玩家直接转换视角以新殖民地为核心来继续游戏。但即使的重新殖民，在四周鸟无人烟的地方开荒，和在已有部分发展的区域附近拓展也完全不同。 我十分好奇这样一个复杂的经济系统是怎样启动起来的，所以仔细做了一点归纳笔记。不一定全对，但很多信息在游戏内的说明和目前的官方 wiki 都不完整，只能自己探索。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="游戏" />
    
    
</entry>
<entry>
    <title>嵌入主线程消息循环的任务调度器</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/11/task_schedule_in_eventloop.html" />
    <id>tag:blog.codingnow.com,2025://1.1318</id>
    
    <published>2025-11-22T05:52:56Z</published>
    <updated>2025-11-22T05:54:16Z</updated>
    
    <summary>最近在网友协助下把 soluna port 到包括 wasm 在内的非 windows 平台。其间遇到很多难题，大多是多线程环境的问题。因为 soluna 的根基就是基于 ltask 的多线程调度器，如果用单线程实现它，整个项目的意义就几乎不存在，所以它是把项目维护下去必须解决的问题。 好在 lua 有优秀的 coroutine 支持，它可以把运行流程抽象成数据，而 Lua 本身并未限制数据的具体储存方式，所以完全可以存在于内存堆中，脱离于 C 栈存在，这为各种在 C 环境下的多线程难题开了后门。C 语言依赖栈运行代码逻辑，而栈绑定于线程，线程调度通常由操作系统完成，所以用常规方式无法让代码跨线程运行：即，无法通过常规手法让一段代码的流程前半段在一个线程运行，而用另一个线程运行后半段；但是，在 C 上建立一个 Lua 层，则很容易绕开这个限制，只用标准方法就可以自由控制程序运行流程。 上一次发现利用一些技巧就可以完成一些看似不可能却的确可行的调度方式是 多线程串行运行 Lua 虚拟机 。 简单复述一下当时的需求：...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="lua与虚拟机" />
            <category term="游戏开发" />
    
    
</entry>
<entry>
    <title>欧陆风云 5 的经济系统</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/11/eu5.html" />
    <id>tag:blog.codingnow.com,2025://1.1317</id>
    
    <published>2025-11-04T22:07:40Z</published>
    <updated>2025-11-09T06:16:51Z</updated>
    
    <summary>很早从“舅舅”那里拿到了《欧陆风云 5》的试玩版。因为开发期的缘故，更新版本后需要重玩，所以一开始只是陆陆续续玩了十几个小时。前段时间从阳朔攀岩回来，据说已经是发售前最后一版了，便投入精力好好玩了 50 小时，感觉非常好。 我没有玩过这个系列的前作，但有 800 小时《群星》的经验，还有维多利亚 2/3 以及十字军之王 2/3 的近百小时游戏时间，对 P 社的大战略游戏的套路还是比较了解的。这一作中有很多似曾相识的机制，但玩进去又颇为新鲜，未曾在其它游戏中体验过。 我特别喜欢 P 社这种在微观上使用简洁公式，宏观展现出深度的游戏设计。我试着对游戏的一小部分设计作一些分析，记录一下它的经济系统是如何构建的。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="游戏" />
    
    
</entry>
<entry>
    <title>关于桌游设计大赛的介绍</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/10/boardgame_design_contest.html" />
    <id>tag:blog.codingnow.com,2025://1.1316</id>
    
    <published>2025-10-12T09:57:22Z</published>
    <updated>2025-10-12T10:06:30Z</updated>
    
    <summary>这一篇是前几个月研究桌游规则期间的另一篇小结。因为最近两个多月都在制作 Deep Future 的数字版，没空整理笔记。现在闲下来，汇总整理这么一篇记录。 今年夏天，我迷上了 DIY 类型的桌游。这类桌游最显设计灵感。商业桌游固然被打磨的更好，但设计/制作周期也更长。通常，规则也更复杂，游戏时间更长。我经常买到喜欢的游戏找不到人开。阅读和理解游戏规则也是颇花精力的事情。所以，我近年更倾向于有单人模式的游戏。这样至少学会了规则就能开始玩。但为单人游玩的商业桌游并不算多（不太好卖），而我对多年前玩过的几款 PnP （打印出来即可玩）类单人桌游印象颇为深刻：比如 Delve 和同期的 Utopia Engine (2010) 。 在 7 月初我逛 bgg 时，一款叫做 Under Falling Skies 的游戏吸引了我。这是一个只需要 9 张自制卡片加几个骰子就可以玩的单人游戏，规则书很短几分钟就理解了游戏机制，但直觉告诉我在这套规则下会有很丰富的变化。我当即用打印机自制了卡片（普通 A4 纸加 9 个卡套）试玩，果然其乐无穷。尤其是高难度模式颇有挑战。进一步探索，我发现这个游戏还有一个商业版本，添加了更长的战役。当即在淘宝上下了单（有中文版本)。 从这个游戏开始，我了解到了 9 卡微型 PnP 游戏设计大赛。从 2008 年开始，在 bgg (boardgamegeek) 上每年都会举办...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="桌面游戏" />
    
    
</entry>
<entry>
    <title>深远未来开发总结</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/10/deepfuture_dev.html" />
    <id>tag:blog.codingnow.com,2025://1.1315</id>
    
    <published>2025-10-05T07:06:12Z</published>
    <updated>2025-10-06T14:24:21Z</updated>
    
    <summary>桌游 Deep Future（深远未来）开发告一段落，我为它创建了一个 itch.io 的页面 发布第一个试玩版本。接下来的 bugfix 会在 github 继续，等积累一定更新后再发布下一个小版本。 这是一个兴趣驱动的项目。正如上一篇 blog 中写到，驱使我写它的一大动力是在实践中探索游戏开发的难题。写这么一篇总结就是非常必要的了。 开发过程 我在 2025 年 7 月底写下了项目的第一行代码。在前三周并没有在实现游戏方面有太多进展。一开始的工作主要在思考实现这么一个游戏，底层需要怎样的支持。我使用的引擎 soluna 也只是一个雏形，只提供非常基础的功能。我想这样一个卡牌向桌游数字化程序，更好的文本排版功能比图形化支持更为迫切。固然，我可以先做一个 UI 编辑器，但那更适合和美术合作使用。而我现在只有一个开发者，应该用更适合自己的开发工具。应该更多考虑自己开发时的顺手，这样才能让开发过程保持好心情，这样项目才可能做完。所以我选择用结构化文本描述界面：容易在文本编辑器内编写，方便修改，易于跟踪变更和版本维护。 在 8 月的前两周，开发工作更多倾向于 soluna ： 维护 yoga 的集成，编写布局模块。 增加文本块的支持，支持简单的文字排版。 增加 icon 的支持，可以和文本混合排版。 增加单色无贴图矩形。这样可以视觉化布局的 box 。 增加嵌套图层，而不是之前的平坦化图元。...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="游戏开发" />
    
    
</entry>
<entry>
    <title>有惊无险的一次网站系统升级</title>
    <link rel="alternate" type="text/html" href="https://blog.codingnow.com/2025/09/update_blog_utf8.html" />
    <id>tag:blog.codingnow.com,2025://1.1314</id>
    
    <published>2025-09-16T05:05:44Z</published>
    <updated>2025-09-16T05:07:22Z</updated>
    
    <summary>好消息是：这个 blog 终于是 UTF-8 编码了。前些年老有人问我能不能把 RSS 输出改成 UTF-8 的，很多 RSS 阅读器不支持 gbk ，这次终于改过来了。 事情源于昨天下午的一次脑抽，我把网站机器的操作系统升级了。上次升级还是十多年前，真的是太老旧了。结果升完级一看，php 被强制升到了 7 ，我自己写的一些 php 程序（主要是留言板）坏掉了。 这些个程序是我在 2004 年重构 2002 年的代码完成的；而 2002 年是从网上随便找来的代码基础上改的。我正儿八经学习 PHP 是在 1997 年，2000 年后就没怎么更新 PHP 的知识了。上次网站升级的时候，PHP 从 4 强制升到 5 ，就乱改了一通，勉强让程序可以运行（开了一些兼容模式）。这次再看代码，简直是惨不忍睹。所以我在本地装了个 PHP8 ，打开...</summary>
    <author>
        <name>云风</name>
        <uri>http://www.codingnow.com</uri>
    </author>
            <category term="我爱折腾" />
    
    
</entry>

</feed> 

