June 15, 2025

育儿的一些日常

以下从我最近两个月发的推文中整理。

可可

  1. 晚上可可读着书在床上睡着了。我没叫醒她,给她盖了被子就睡了。早上醒来时她跟我说,完蛋了,昨天晚上我没有洗澡。我说没关系,别被妈妈发现就好了。然后她蹑手蹑脚的偷偷起来换了身衣服,然后又躺回来睡觉。

  2. 可可的同学喊她联机 minecraft ,我在隔壁看书,听她们在微信上聊了半天硬是鸡对鸭讲。我过去跟她说,你把电脑屏幕拍个照片给她看不就好了。结果对面喊了句:你怎么玩国际版啊,我玩的是网易中国版,然后安慰可可说,你自己玩也是可以的。我想:到底谁是正版受害者?

  3. 可可最近在读的一本小说突然就找不到了,她怎么都想不起来在哪里。我花了许多时间引导她回忆,终于想起是周三的课外班落在隔壁班的教室里了。如果缺乏引导,她的记忆是绝对不可能打开的。周五家长会,我特地提前了 5 分钟到学校,和隔壁班主任解释了一番,在教室仔细搜寻,果然找到了。可可很开心。

  4. 可可最近读书挺认真的,问了好多问题。前几天问了好几个成语的意思,又比问了什么时候用——(破折号),还讨论了为什么小说里要写那么多她觉得并不精彩的情节。

  5. 可可二年级,我最近发现她数学是真的不行 :( 今天检查作业错了一道题,引导了半天才发现她对 100 以上的数字概念都没建立起来。比如知道 10 个 100 是 1000 ,但她觉得 20 个 100 是一万,而且讲了一个小时才纠正过来。果然,人类天生的感知就是对数的么?本福特定理诚不我欺。

  6. 我觉得文字阅读能力对人的一生非常重要,而现在的小孩娃很难自发练习了 :( 试过很多方法培养兴趣,还是很难。最近一个月试着强制每天半小时文字阅读。两个娃都还听话,虽然觉得是个负担,但也认了这个任务。但经过一段事件,感觉阅读能力真的有提高(从阅读速度判断)。

  7. 可可看了几部关于老鼠的小说后,已经开始跟同学说地球上最聪明的动物是老鼠,地球就是老鼠造的计算机了。

  8. 可可迷上和我一起玩 rimworld 。假期跟妈妈出去旅行,回到家第一件事就是让我打开电脑继续抓一只豚鼠当宠物。知道游戏可以通过存档回退时间后,她让我试了一下在婚礼上把除新娘之外的人全部杀掉。等她长大,我一定推荐她看一遍杀死比尔。

  9. 可可说看到短视频中说 switch 的卡带是苦的。我说你要不要试试,她挑了一张舔了一下说好苦啊。云豆说我也试试。过了一会,可可又换了一张再舔了一下,这下她相信每张 switch 卡带都非常苦了。

  10. 可可说,我们玩个游戏,我问你问题,你必须马上回答。我说好。可可问:你最喜欢哥哥还是我?看我没说话,她说,算了,这个问题不好,下一个问题……

  11. 应朋友邀请去扬州玩。在扬泰机场跟可可讲李白的诗,我说古时候送别朋友远行,可能就一辈子不会再见了。可可问,不能打电话吗?

阅读全文 "育儿的一些日常" »

June 09, 2025

电梯的交互和调度

今天在网上和人闲扯,说到电梯的交互设计或许是有问题的。一般在楼宇的电梯区,会设置上下两个按钮,让乘客表达自己是要上行还是下行。如果在电梯区显示电梯当前所在楼层的话,就会有人理解为:上是指让电梯轿厢向上运行,下是指让其向下。一旦这样理解,就会输入错误的指令。

几乎每个有过在高层办公室上班经历的程序员都参与过电梯调度算法的讨论。看来,在饭点挤电梯是程序员们的共同记忆。(另一个永恒话题是怎样提高厕所的使用效率)我也不例外,20 多年里,我曾经反反复复和人讨论过这个问题。现在再也不用挤电梯了,似乎可以把过去考虑过的方案记录一下。

阅读全文 "电梯的交互和调度" »

May 14, 2025

一个简单的 A star 寻路算法实现

我需要一个接口简单的寻路模块,所以今天写了一个 。其实之前也写过很多版本,在我上传代码时就发现我自己的 github 账号下早有同名仓库。不过,之前的版本的接口设计不太满意,直接删掉了,用这次的新版本复用老的仓库名字。

我希望达到的目标是,C 接口简单易用,且和地图本身的数据结构无关,只提供寻路功能。这样容易拓展到不同应用场景。

数据结构简单,内存开销固定,在算法执行过程中不额外分配内存。这可以方便的在多线程环境运行。

我不需要处理特别复杂和规模巨大的地图,那种场景应该额外做一些预处理。但在起点和终点的路线结果不长时(即使在大规模地图上),应该有较好的性能。

阅读全文 "一个简单的 A star 寻路算法实现" »

May 08, 2025

卡牌构筑类桌游核心规则之七

纯单人游戏在桌面游戏中不太多见,但我很喜欢这种。毕竟,找人一起玩桌游太不容易,虽然多人协作桌游总可以一个人操控多方进行 solo ,但终究不是为单人游戏设计的。今天介绍的两款单人卡牌游戏,我没买到实体版,都只是在桌游模拟器上玩过几盘。

第一款是 Legacy of Yu (2023) 大禹治水。老实说,这不是一款卡牌“构筑”游戏。虽然在游戏过程中玩家还是需要从市场列“购买”新卡片,但游戏过程并不是围绕构筑进行的。这些卡牌更像是消耗品。

阅读全文 "卡牌构筑类桌游核心规则之七" »

April 10, 2025

对数和自然对数的底

最近读了一本书:《数学的雨伞下》。阅读体验非常好,这本书用浅显的语言,科普了许多深刻的道理。这本书所介绍的知识结构比较类似我挺喜欢的另一本《从一到无穷大》,但讲解更为细致一些,以至于如果事先明白这些知识,甚至会觉得有些冗长。但细细品味,会觉得理解能更深一层。

我在通读完一遍之后,这几天带着儿子精读。重读第一章中“对数之桥”一节时,我思考了一个问题:当年纳皮尔 Napier 到底出于什么动机制作一张高精度对数表,他制表的计算思路是怎样的。书中并没有答案,所以我又在互联网上翻看了当年 Napier 原著 Mirifici Logarithmorum Canonis Descriptio 的介绍,感觉收获颇丰。

阅读全文 "对数和自然对数的底" »

April 08, 2025

卡牌构筑类桌游核心规则之六

这次介绍两款在国内人气不高的卡牌构筑类桌游。游戏都还不错,可能是因为没有中文版,所以身边没见什么朋友玩。

首先是 XenoShyft 。它的最初版全名为 XenoShyft: Onslaught (2015) ,后来又出了一个可以独立玩的扩展 XenoShyft: Dreadmire (2017) 。

故事背景有点像星河舰队:由人类军士抵抗虫子大军。简单说,这是一个塔防游戏:游戏分为三个波次,每个波次三轮,一共要面对九轮虫群的冲锋。

阅读全文 "卡牌构筑类桌游核心规则之六" »

March 12, 2025

卡牌构筑类桌游核心规则之五

最近的兴趣重心转移,没怎么研究桌游。不过前几个月的笔记还有一点,今天继续整理一下。继续谈谈 PvE 向的卡牌构筑类桌游。

Aeon's End (2016) 末日决战是一款偏传统卡牌对战规则的游戏:一开始手牌中只有水晶 (gem) 和基础法术 (spell) 卡。游戏过程中,在一个固定市场(9 种)用水晶购买更强力的卡片升级自己的卡组。游戏的目标是合作(或 solo)击败 boss 或 boss 的仆从。如果被敌人攻击太多次,自己的 HP 减到 0 就失败了。

法术卡其实更像是炉石/万智牌中的玩家仆从,只不过是一次性消耗品。需要先部署在桌面,然后才可以攻击。而玩家卡组内的第三种遗物卡(relic)则更像是一般意义的法术:可以即时产生效果。

阅读全文 "卡牌构筑类桌游核心规则之五" »

March 11, 2025

Windows 10 如何把文件关联到 Store App 上

我在 Windows 10 下倾向于通过 store 安装 app ,而不是使用独立的软件安装包。这样安装的 app 会比较安全。但正因为这些额外的安全措施,有些过去很容易做的事情却变得麻烦了。比如,把一个特定类型的文件关联到 app 上。

我习惯用 IrfanView64 查看图片。在游戏开发中常见的 .dds 文件它也可以打开(需要额外安装官方插件)。但 IrfanView64 在提交 store 发布时没有提交 .dds 这个后缀名,这导致 windows 10 无法选择用它打开 .dds 文件。在自选打开特定文件类型文件的设置菜单里(设置-默认应用),你会发现怎么都找不到这个应用。

阅读全文 "Windows 10 如何把文件关联到 Store App 上" »

February 20, 2025

2D 渲染管线的一点优化

考虑到我想做的独立游戏并不需要以画面效果吸引人,游戏是策略向的,所以 2D 表现就足够了。之前几年做的 3d 引擎对这个需求来说太复杂了,而且这次我也不打算主打移动平台,之前为移动平台做的考虑也没太大意义。所以,最近想花个把月重新搭一个 2d 游戏用的框架。当然,最重要的是:我太久没写代码了,而做这个非常有趣。

前天在 github 上开了一个新坑,具体想法写在项目的讨论区了

虽说 2d 游戏在如今的硬件上,性能那是相当富裕。但在具体写代码时,还是忍不住想想怎么设计,性能会比较好。不然总是重复大家都有的东西也是无趣。

阅读全文 "2D 渲染管线的一点优化" »

February 16, 2025

卡牌构筑类桌游核心规则之四

这篇谈谈 PvE (玩家对抗环境)向的卡牌构筑类游戏。

在桌游中,PvP 向(玩家对抗玩家)的游戏数量明显超过 PvE。我认为这是因为桌游需要靠玩家自己驱动游戏规则,扮演环境的同样是玩家,其规则不能设计的太复杂,通常只能靠简单机械的逻辑驱动。或者,起源于桌游的 RPG ,比如 D&D ,则由一个玩家扮演环境(城主),这样就可以增加游戏的深度。但毕竟这种不对称规则下,玩家方和环境方很难调配平衡。RPG 这样的游戏,城主也并非玩家的对立方,大家只是在一起享受游戏过程。而在电脑上,则可以通过程序实现更复杂的环境。所以在电脑游戏中,大量的游戏转向 PvE 。毕竟,找到可以一起玩的游戏搭档并不容易。

所以,对于卡牌构筑这个具体类别,电脑上的游戏几乎一开始就是 PvE 性质的:比如杀戮尖塔,玩家一直在挑战系统而获得乐趣;而桌游中,从领土(Dominion)开始,就是基于玩家对抗设计的规则。

传奇 Legendary 系列是一个比较早的 PvE 向卡牌构筑类桌游系列。最早可以追述到 Legendary: A Marvel Deck Building Game (2012) ,后续几年发布了大量系列作品,并衍生出 Legendary Encounters 系列。关注 Legendary 系列是因为星际孤儿(Stellar Orphans)这个电脑游戏,我特别喜欢。在星际孤儿的玩家社区,有玩家指出这个游戏明显受到了 Legendary 系列桌游的启发。

传奇系列的每个作品都围绕一个题材展开,以最初的漫威系列为例,下面我介绍一下它的核心玩法规则。

阅读全文 "卡牌构筑类桌游核心规则之四" »

February 03, 2025

卡牌构筑类桌游核心规则之三

这一篇,我想先谈一个在中文社区比较小众(没有出中文版),但我个人非常喜欢的卡牌构筑游戏:核心世界 Core Worlds (2011) 。

相对 Dominion 来说,它的规则和体验已经非常不同了。

它的单位牌需要先部署到桌面(战区),而后在从桌面打出,用于征服星球(用于增强能力)。这可以促使玩家做更多跨回合的规划。而不是仅考虑当前回合的手牌怎样打出漂亮的 Combo 。每个回合,玩家可以在回合结束时保留一张手牌(同时也会减少抽牌数量),这点也是为了促进玩家更多的考虑回合间的联系。

游戏采用固定轮数,一共 10 轮 5 个阶段。每个阶段的市场牌堆都是独立的。所以,玩家会在每两轮看到不同的牌进入市场,这样会减少卡组构建的随机性,让强牌逐步出现。游戏节奏被设计的更好。 每个轮次翻到市场的卡很少,只玩一两盘恐怕大多数卡片都不会见到,这加强了重玩性。每局游戏都有不同的变化。虽然游戏有 10 轮,但游戏节奏其实是很快的。尤其是到了终局的第五阶段,节奏被刻意加快了:前 8 轮积累的大量能量,而手牌也增加了。没有新的单位卡,而换成了得分用的声望卡以及核心世界卡需要竞争。终局两轮实际是考验的是玩家前面的组卡和布局成果。

而在前面的回合,玩家每轮可以做的事情并不算太多。市场上的卡片分为星球卡和单位/行动卡。星球卡需要玩家用之前部署的部队去征服,被征服的星球卡直接放到玩家桌面提供永久能力(通常会增加能量点);而单位/行动卡则需要能量点购买,和传统的卡牌构筑规则相同,新购入的卡片需要先进入弃牌堆。市场上的卡片张数是受玩家人数限制的,每轮固定添加新卡片上场。每轮新增加的卡片如果没人搭理,则会增加一点能量奖励下一轮选它的玩家。而两轮不选的卡片则自动弃掉。这样,市场上永远都只有有限几张卡片(根据玩家人数不同而不同),玩家不会陷入选择焦虑。

在战斗征服部分,玩家单位被分为地面战和空中战两种能力。针对不同的星球,需求不同。但这些能力有可以被战术(行动)卡所改变。因为用于征服星球的单位需要花一轮部署在桌面(战区),所以,玩家可以通过观察对手部署的部队,提前了解对手的意图。实际玩的时候,先做什么再做什么,会随着对手的行动而不断变化。加上市场资源(无论是星球还是行动卡)都极为有限,游戏的对抗性就变得很强。

在实际玩游戏的时候,除了自己行动需要决策外,观察对手行动在做什么也相当有意义。这让轮转行动时等待对手行动的时间也不会枯燥。

阅读全文 "卡牌构筑类桌游核心规则之三" »

January 11, 2025

卡牌构筑类桌游核心规则之二

上篇提到的 Dominion 和 Ascension 都没有使用传统 TCG 中打出卡片的费用设定。TCG 游戏中给卡片设定不同的费用很好理解:在游戏前自由组卡的游戏,如果不给卡片设定打出限制,玩家只需要尽可能的选择强力卡片放在卡组里,游戏过程中先抽到的人就会占据优势,这就变成了一种运气游戏。

卡牌构筑游戏更多的是用购买卡牌的费用来做限制,让强力牌是逐步加入战场的。玩家不能一开始就购入强力卡片,即使到可以购买的中期,卡片也会先进入弃牌堆,相当于等待一段 CD 时间才能抽回手上。但只有这还不够,必须考虑游戏中后期的平衡:在牌组构筑成型后,一套强力组合若能轻易打出,也会让游戏一边倒。所以,还是需要对打出功能卡做出一些限制。

Dominion 的做法很简单,默认每个回合,玩家只能打出一张行动卡。如果需要打出多张行动卡,就需要配合加行动次数的行动卡。而且加一行动的卡片只能让自己加入当回合的行动链中,只有加二以上行动的卡片才能拓展行动选择。同时,购买牌的次数也被限制了,必须通过行动卡扩展。

Ascension 不一样,它即不限制每个回合打牌的数量,也不限制购买数量。所以几乎每个回合,玩家都会打出手上的所有牌,变化只在于打牌的次序。那么,平衡是怎样实现的呢?这个游戏我玩的不多,只能谈一下粗浅的理解。

Ascension 提供了两种得分手段:用符文购买牌时,除了新牌加入牌组增强实力外,还额外附带了 VP ;使用力量杀怪,直接获得 VP token 。玩家很难在构筑时同时考虑两方面:增强符文能力(更容易买到新牌)以及增强力量(更容易杀怪)。而中间公共市场列是随机抽出来的,每去掉一张牌,无论是购入私人牌组,还是杀掉怪进入虚空区,都随机出现一张新卡。即使在后期玩家牌组能力够强,同一回合有超强的买牌能力(符文充足),也会造成市场列出现全是怪打不动的情况;反之亦然,怪一下子杀的太多,中间就没有怪了。

所以,即使有强力的手牌组合,也很难全部发挥它们的能力兑换成同价值的 VP 。公共市场区的随机性造成了一定的制约。再者,Ascension 公共市场的竞争远较 Dominion 的市场高,玩家更不容易组出心目中的理想卡组。

我比较关注游戏还会用什么规则去限制手牌打出。毕竟游戏必须给予玩家不同的有意义的选择,如果每次拿到手牌就无脑全部打出也太无趣了。只有在限制下,玩家才需要决策打哪张更好。在传统卡牌战斗游戏中,传统的方案是给行动卡加上费用,强卡费用高一些,弱卡低一些。但大多数 DBG 都没有这个设定。我认为这是因为其成本在购牌时已经区分过一次了。当然也一定有游戏采用这种经典机制,比如我非常喜欢的 Core Worlds (2011) ,后续我会详谈。

卡牌的游戏过程,能够产生的变化(玩家的选择)主要可围绕三个方面:打牌、弃牌、构筑。可以把效果和限制分别加在这些行为之上,让玩家去选择针对哪张卡片实施何种动作,以及这些动作的执行次序就是规则的设计空间。

阅读全文 "卡牌构筑类桌游核心规则之二" »

January 10, 2025

卡牌构筑类桌游核心规则之一

现在有非常多的桌面游戏加入了卡牌(卡池)构筑的游戏机制,用来丰富游戏玩法。我想总结一下以卡牌构筑为核心玩法的若干经典桌面游戏的核心规则。要记录的游戏太多,所以我会分成多篇 Blog 来写一个系列。这是第一篇,从历史最为悠久的经典游戏写起。主要谈以卡牌构筑为核心,而没有混杂太多其它机制的游戏,列出其具体的核心规则方便日后参考。

首先是开山鼻祖 Dominion (2008) ,官方译名皇舆争霸,在出中文版之前我常称之为领土。它奠定了此类桌游的基础模式:从一组功能简单的手牌开始,在游戏中不断购买新卡加入自己的卡组,在后续回合中这些更为强力的卡牌可以完成更多行动或积分,玩家尝试比对手获得更多 VP 取得胜利。

Dominion 起始牌组 10 张,7 张价值 1 的钱币和 3 张 1 VP 积分卡。玩家以 5 张手牌开始,在回合结束弃掉所有未用手牌重新摸 5 张手牌。VP 卡只用于终局计分,在游戏过程中没有用处。钱币卡可以用来购买公共市场中的 10 种每局游戏不同的功能卡以及每局游戏必有的价值分别为 1 2 3 的钱币卡,价值为 1 3 6 VP 的计分卡。每回合未用完钱币同样不累积到下一回合。新购买的卡片置入弃牌堆,不能立刻使用。

玩家在回合中默认可以打出一张功能卡并购买一张新卡。单功能卡的效果可能扩展这个能力,允许玩家在一各回合中打出多张功能卡,或购买更多新卡片。回合中打出的卡片不会立刻进入弃牌堆而是停置在桌面,直到回合结束才进入弃牌堆。所以即使玩家的行动让他能够在回合中不断抽卡,也无法无限循环。

游戏在公开市场的部分卡片或 6 VP 卡片购买完毕后结束。结束后以每个玩家牌库中 VP 数量决定谁是胜利者。

阅读全文 "卡牌构筑类桌游核心规则之一" »

Misc

Categories

Archives

Recent Comments