Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

blog.codingnow.com

云风的 BLOG

Get the latest updates from 云风的 BLOG directly as they happen.

Follow now 89 followers

Latest posts

Last updated 7 days ago

育儿的一些日常

7 days ago

以下从我最近两个月发的推文中整理。 可可 晚上可可读着书在床上睡着了。我没叫醒她,给她盖了被子就睡了。早上醒来时她跟我说,完蛋了,昨天晚上我没有洗澡。我说没关系,别被妈妈发现就好了。然后她蹑手蹑脚的偷偷起来换了身衣服,然后又躺回来睡觉。 可可的同学喊她联机 minecraft ,我在隔壁看书,听她们在微信上聊了半天硬是鸡对鸭讲。我过去跟她说,你把电脑屏幕拍个照片给她看不就好了。结果对面喊了句:你怎么玩国际版啊,我玩的是网易中国版,然后安慰可可说,你自己玩也是可以的。我想:到底谁是正版受害者? 可可最近在读的一本小说突然就找不到了,她怎么都想不起来在哪里。我花了许多时间引导她回忆,终于想起是周三的课外班落在隔壁班的教室里了。如果缺乏引导,她的记忆是绝对不可能打开的。周五家长会,我特地提前了 5 分钟到学校,和隔壁班主任解释了一番,在教室仔细搜寻了一番,果然找到了。可可很开心。 可可最近读书挺认真的,问了好多问题。前几天问了好几个成语的意思,又比问了什么时候用——(破折号),还讨论了为什么小说里要写那么多她觉得并不精彩的情节。 可可二年级,我最近发现她数学是真的不行 :(...

电梯的交互和调度

13 days ago

今天在网上和人闲扯,说到电梯的交互设计或许是有问题的。一般在楼宇的电梯区,会设置上下两个按钮,让乘客表达自己是要上行还是下行。如果在电梯区显示电梯当前所在楼层的话,就会有人理解为:上是指让电梯轿厢向上运行,下是指让其向下。一旦这样理解,就会输入错误的指令。 几乎每个有过在高层办公室上班经历的程序员都参与过电梯调度算法的讨论。看来,在饭点挤电梯是程序员们的共同记忆。(另一个永恒话题是怎样提高厕所的使用效率)我也不例外,20 多年里,我曾经反反复复和人讨论过这个问题。现在再也不用挤电梯了,似乎可以把过去考虑过的方案记录一下。 先说说现实存在过的方案: 大多数方案都是为了提高电梯的运营效率。要么为了节能,要么为了更快的满足乘客需求,要么为了提高高峰时的吞吐量。 大部分高层建筑都把多部电梯按楼层分区。有些电梯只服务低层,有些服务高层。如果楼层更多时可能还会分出更多区间。对于超高层建筑,也有把顶楼超高区单独分割出来,需要转电梯的。 这个设计显然是因为对于高层建筑,电梯的需求按楼层分布是金字塔型的。乘客永远都需要从地面进入,越往上,乘客越少,而路程越长。乘客的目的地却是接近均匀分布的,如果让乘客随机进入任意轿厢,最终电梯会在更多楼层停留开门,将乘客预先分组就显得很有必要。 另外,为了解决繁忙时段的吞吐量问题,电梯也可能按单双层分组。这样可以把一部分运力转嫁到楼梯上,减少每部电梯的停留时间。类似的方案还有针对乘客类型设置专用电梯,比如让饭点运输食物的乘客走专用梯,而减少乘客使用电梯的需求量;让领导们使用专门电梯,提高他们的幸福指数以获得重要工作上的效能增益,等等。 也有一些办公楼会让乘客预先输入自己的目的地,而不是简单的选择上行还是下行。这样,系统理论上可以统筹安排。我也使用过这样的系统,效果嘛,一言难尽。只能说理想很丰满,现实很骨感。电梯公司想乘着软件系统升级多赚点钱无可厚非,但复杂系统就是这样:很难把它实现得正确。 回到文章开头的话题,我的观点是,与其做一个交互更复杂的系统妄想提高效率,还不如进一步简化它。 其实,电梯的外部控制按钮或许并不需要上下两个?只要一个召唤按钮就够了。 首先,这样的交互设计是没有歧义的:我需要使用电梯,就召唤它过来。...

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

about 1 month ago

我需要一个接口简单的寻路模块,所以今天写了一个 。其实之前也写过很多版本,在我上传代码时就发现我自己的 github 账号下早有同名仓库。不过,之前的版本的接口设计不太满意,直接删掉了,用这次的新版本复用老的仓库名字。 我希望达到的目标是,C 接口简单易用,且和地图本身的数据结构无关,只提供寻路功能。这样容易拓展到不同应用场景。 数据结构简单,内存开销固定,在算法执行过程中不额外分配内存。这可以方便的在多线程环境运行。 我不需要处理特别复杂和规模巨大的地图,那种场景应该额外做一些预处理。但在起点和终点的路线结果不长时(即使在大规模地图上),应该有较好的性能。 原始的 A star 算法实现最为简单,在大多数情况下有不错的表现,所以我选择了它。我知道算法可以有很多改进方法,但我觉得代码简单最为重要。...

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

about 2 months ago

纯单人游戏在桌面游戏中不太多见,但我很喜欢这种。毕竟,找人一起玩桌游太不容易,虽然多人协作桌游总可以一个人操控多方进行 solo ,但终究不是为单人游戏设计的。今天介绍的两款单人卡牌游戏,我没买到实体版,都只是在桌游模拟器上玩过几盘。 第一款是 Legacy of Yu (2023) 大禹治水。老实说,这不是一款卡牌“构筑”游戏。虽然在游戏过程中玩家还是需要从市场列“购买”新卡片,但游戏过程并不是围绕构筑进行的。这些卡牌更像是消耗品。 游戏中的工人卡有三种用法: 打出后获得卡片上标注的资源,然后进入弃牌堆。 销毁一张工人卡,获得卡片上额外标注的一次性资源,卡片将移出游戏。这样获得的资源一定比前一种方法获得的多。...

对数和自然对数的底

2 months ago

最近读了一本书:《数学的雨伞下》。阅读体验非常好,这本书用浅显的语言,科普了许多深刻的道理。这本书所介绍的知识结构比较类似我挺喜欢的另一本《从一到无穷大》,但讲解更为细致一些,以至于如果事先明白这些知识,甚至会觉得有些冗长。但细细品味,会觉得理解能更深一层。 我在通读完一遍之后,这几天带着儿子精读。重读第一章中“对数之桥”一节时,我思考了一个问题:当年纳皮尔 Napier 到底出于什么动机制作一张高精度对数表,他制表的计算思路是怎样的。书中并没有答案,所以我又在互联网上翻看了当年 Napier 原著 Mirifici Logarithmorum Canonis Descriptio 的介绍,感觉收获颇丰。 制作对数表的直接原因当然是为了简化大数乘除法的计算。对数概念的提出在幂概念建立之前,而现在的数学教学中,一般却是从幂自然推导到对数的。似乎后者才是自然而然的。这应该是因为,古人研究数学,最初是为了解决现实中的问题。所以,乘法必须有对应的几何意义。比如,计算正方形面积需要把计算边长的平方;立方体的体积需要计算边长的立方。更高次的幂却难有对应的几何意义,有理数幂则更为抽象。...

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

3 months ago

这次介绍两款在国内人气不高的卡牌构筑类桌游。游戏都还不错,可能是因为没有中文版,所以身边没见什么朋友玩。 首先是 XenoShyft 。它的最初版全名为 XenoShyft: Onslaught (2015) ,后来又出了一个可以独立玩的扩展 XenoShyft: Dreadmire (2017) 。...

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

3 months ago

最近的兴趣重心转移,没怎么研究桌游。不过前几个月的笔记还有一点,今天继续整理一下。继续谈谈 PvE 向的卡牌构筑类桌游。 Aeon's End (2016) 末日决战是一款偏传统卡牌对战规则的游戏:一开始手牌中只有水晶 (gem) 和基础法术 (spell) 卡。游戏过程中,在一个固定市场(9 种)用水晶购买更强力的卡片升级自己的卡组。游戏的目标是合作(或...

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

3 months ago

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

2D 渲染管线的一点优化

4 months ago

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

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

4 months ago

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

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

5 months ago

这一篇,我想先谈一个在中文社区比较小众(没有出中文版),但我个人非常喜欢的卡牌构筑游戏:核心世界 Core Worlds (2011) 。 相对 Dominion 来说,它的规则和体验已经非常不同了。 它的单位牌需要先部署到桌面(战区),而后在从桌面打出,用于征服星球(用于增强能力)。这可以促使玩家做更多跨回合的规划。而不是仅考虑当前回合的手牌怎样打出漂亮的 Combo 。每个回合,玩家可以在回合结束时保留一张手牌(同时也会减少抽牌数量),这点也是为了促进玩家更多的考虑回合间的联系。 游戏采用固定轮数,一共...

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

5 months ago

上篇提到的 Dominion 和 Ascension 都没有使用传统 TCG 中打出卡片的费用设定。TCG 游戏中给卡片设定不同的费用很好理解:在游戏前自由组卡的游戏,如果不给卡片设定打出限制,玩家只需要尽可能的选择强力卡片放在卡组里,游戏过程中先抽到的人就会占据优势,这就变成了一种运气游戏。 卡牌构筑游戏更多的是用购买卡牌的费用来做限制,让强力牌是逐步加入战场的。玩家不能一开始就购入强力卡片,即使到可以购买的中期,卡片也会先进入弃牌堆,相当于等待一段 CD 时间才能抽回手上。但只有这还不够,必须考虑游戏中后期的平衡:在牌组构筑成型后,一套强力组合若能轻易打出,也会让游戏一边倒。所以,还是需要对打出功能卡做出一些限制。 Dominion...