带有结束回合按钮的棋盘游戏桌

dooooit_4000007
转载
发布时间: 2025-06-14 16:53:57 | 阅读数 0收藏数 0评论数 0
封面
我热爱桌游,也喜欢借此机会和那些见不着面的朋友聚聚。我们一起玩游戏,聊聊天,难免会遇到一些小插曲。有人开始讲一个个引人入胜的故事,等他们讲完,我们可能已经忘了游戏的进度。我们可能会忘记轮到谁了,哪些维持行动已经完成,或者谁拿到了首发玩家标记。

准备工作:

材料:

电子产品

  1. 12 个GoldLeaf RGB 发光按钮,来自 Ultimarc link
  2. 来自 Ultimarc link的 I-PAC Ultimate I/O 控制板
  3. Ultimarc link的 I-PAC Ultimate I/O 控制板安装套件
  4. 树莓派 2
  5. 监控链接
  6. Wifi 客户端桥接链接

我刚好有一台 Raspberry Pi 2、这款微型显示器和一个 WIFI 客户端桥接器,它们都放在一堆零件里。任何电视/显示器都可以满足需求,如果可以的话,我推荐你买一台内置 WIFI 的新款 Raspberry Pi。WIFI 桥接器只是因为我之前用的是老款 Raspberry Pi。你也可以用老款 Raspberry Pi,然后把桌子插到网络里就可以访问了。


材料

  1. 4x8 3/4英寸胶合板
  2. 2块1x3板
  3. 2x 2x4 板
  4. 凝胶木材着色剂
  5. 便宜的 Costco 折叠桌
  6. 杯架链接
  7. L 型支架
  8. 角括号
  9. 木胶
  10. 魔术贴
  11. 电缆扎带安装座链接
  12. 拉链带
  13. RJ45 分支链路

几个月前我的车库里已经有一些2x4的木板,是做演示项目用的,还有桌子和木材着色剂。我建议用你手边现有的任何着色剂,或者买一罐你喜欢的。我用的是凝胶,因为我手边只有它。桌子也可以是其他尺寸,只要它能塞进胶合板下面,并且在边缘留出一些空间来放置按钮/杯架/电子设备就行。


工具:

  1. 烙铁
  2. 孔锯(杯架用 3.25 英寸,纽扣用 1.25 英寸)
  3. 钻头和螺丝刀、各种钻头和螺丝刀
  4. 剥线钳
  5. 胶枪

可能还有很多其他的小玩意儿。可惜的是,我选择在完成大部分工作后才创建这个Instructable,所以很可能已经记不清所有用过的东西了。我记得我曾经几乎把所有工具都放在桌子底下的地板上。

1

设计

因为我还不知道自己到底想做什么,而且木材太贵,不能一下子搞砸,所以我选择用 Sketchup 设计桌子。我以前从未用过任何绘图软件,但在 YouTube 上看了半个小时后,我掌握了足够的知识,可以画出一个方案了。

我对自己的木工技术没有足够的信心,无法从头开始打造一张完整的桌子(同样,木材价格也很高),所以我决定做一个盖子,放在我们已经用来玩棋盘游戏的廉价折叠桌上。

组装完成后,我对软件和电子设备非常满意,但桌子的整体结构有点摇晃。如果你直接跳到这个 Instructable 的最后一步,你会看到我正在计划做一个底座,可以把它连接到这个盖子上,这样可以增加稳定性和收纳空间。

SKP
Gaming+Table+Cover.skp
873.33KB
2

切割胶合板并与折叠桌对齐

我让Lowes的工人根据我画的图纸把胶合板切割成4英尺 x 6英尺8英寸的尺寸。这样桌子就能正好放在胶合板的正中央,而且桌子本身也能放进我规划的空间里。

如果您要使用一张胶合板,我建议您让商店帮您切割,而不是使用技能锯来处理。

然后,我只需将桌子放在床单上,将其与中间对齐,然后随意将 2X4 拧在周围,使桌子尽可能紧贴。

3

制作桌裙

回到楼上带有盖子的车库,我将 1X3 木板切割成合适的长度,并将边缘斜接。

然后我把边缘粘在一起,用L形支架和角支架把整个部件固定在一起。我等了一天,然后把整个裙边好好打磨了一下,尤其是斜接处。由于它们之间有足够的木胶,它们变得非常坚固,这意味着我可以把斜接处修整一下,使表面更加光滑。

4

染色、玩游戏、钻孔、再次染色、钻更多孔、再次染色

接下来是犹豫不决的染色。

我涂了一层我随手扔掉的一罐凝胶染色剂,第二天就感染了新冠,在地下室隔离了五天。我感觉没法再继续建造了,但为了保持理智,我还是独自玩了大约40局《火星改造》。即使没有电子设备,能有更大的桌面来玩,我已经非常开心了。

恢复后,我为杯架钻了四组孔,然后涂了第二层,然后我意识到我想要更多的杯架,所以我钻了更多的孔,然后很快就用完了污渍。

我买了第二罐同样的东西并修补了剩余的洞。

杯架需要一把 3.25 英寸的孔锯,但我从别人那里借到的最接近的尺寸是 3.5 英寸。这个方法可行,但是杯架放进去后会变得很松,下一步看看我的解决办法吧。

5

安装按钮和杯架

这一步我只是把所有按钮和杯托都塞进了上一步钻好的孔里。不出所料,杯托还是有点松。我试了好几种方法让它们更紧,最后发现在杯托靠近顶部(从底部)的地方安装三个等距的线缆固定座,就能很好地固定它们。

这不是最优雅的解决方案,但它有效并且一切都隐藏在桌子底下。

6

安装Raspberry Pi和其他组件

我在桌子下面安装了树莓派和 WIFI 桥接器、Ultimarc 控制板以及所有相关的线缆。我选择把所有主要部件都安装在我经常坐的桌子旁边。我想这样可以防止其他玩家不小心用膝盖撞到设备。

树莓派运行的是 Ubuntu 服务器,但任何操作系统都可以。由于这台电脑基本上是无头的,用户只会与我为其编写的软件交互,所以我觉得没必要搭建桌面环境。我可以随时通过 SSH 连接到这台机器,如果情况紧急,还可以随时连接屏幕和键盘。我正好有一个装这台树莓派的盒子,所以很容易就把它装在了胶合板桌子的底部。

我在树莓派上连接了一个小型 TP-Link WIFI 网桥(同样,是从我已有的零件箱里拿来的)。这样,没有 WIFI 功能的树莓派就可以连接到我的 WIFI 网络了。当然,我也可以用网线连接,不过我反正有这个网桥,干嘛不用呢?如果有人想自己制作,我建议你用一台新款的、自带 WIFI 功能的树莓派。这个网桥没有任何安装硬件,不过用一点魔术贴就搞定了。

Ultimarc 控制板只需插入树莓派的 USB 端口即可。控制板将街机按键的按下动作转换为树莓派能够识别的按键操作,并根据树莓派发送的消息来打开/关闭街机按键上的 LED 灯。它还附带一系列便捷的 Windows 实用程序,用于配置和测试控制板。使用我随附的安装脚,将 Ultimarc 控制板安装在树莓派旁边非常轻松。

此外,我还添加了一个大型 110V 开关(同样来自那个神奇的零件桶)、几个 USB 电源块来运行 Pi、控制板和 WIFI 桥,以及一堆电缆扎带支架/扎带,以保持电缆整洁。

7

使按钮工作

桌子下方的每个按钮总共有 6 根导线,其中 4 根用于 RGB LED 灯,2 根用于实际的按钮连接。考虑到会用到大量的线缆,我选择使用以太网线连接按钮中的 RGB LED 灯。每个玩家的杯架旁边都有两个按钮,所以一根以太网线就可以连接所有的 RGB 信号线。

我买了一些用于墙上插座的以太网分线器,并将两端连接到控制板的导线上。方便的是,控制板在插入电源时会运行一个演示程序,这样测试灯光就变得很容易了。一开始我遇到了一些连接问题,有了它,我很快就找到了问题所在。

对于剩余的按钮连接,我为每个按钮额外布线了两条线,总共72条线,低音。控制板支持X-input或键盘模拟。为了简单起见,我将其设置为键盘模拟,并为每个按钮设置不同的按键,此时整张桌子就像一个巨大的12键键盘。

8

与 Node 绑定

现在所有导线都连接到控制板并记录按键动作,控制按键亮起时间的程序应该很简单。我们的想法是先点亮其中一个按钮,然后当按下该按钮时,点亮左边的按钮,以此类推。可惜,这并不容易。

那么,回合顺序会根据游戏状态变化的游戏呢?或者,如果玩家完成所有能做的动作后就可以过关,那该怎么办?我开始为每个游戏硬编码一套独特的规则,但玩过几次之后,我发现大多数游戏似乎都是由相同的阶段组成的。可能还有更多类似的游戏,但根据我拥有的游戏,这些阶段涵盖了我遇到的所有情况:

  1. 维护:为下一轮做准备,给玩家钱,重置游戏组件等等。“管理员玩家”按下按钮,告知桌号何时完成。大多数游戏都有某种维护,即使只是在游戏刚开始时。
  2. 无限回合:第一位玩家的按钮亮起,轮到他了。轮到他了之后,按下自己的按钮。轮到他了之后,下一位玩家的按钮亮起,轮到他了。无限循环。此阶段适用于卡坦岛、大富翁、卡牌游戏等简单游戏。
  3. 有限回合:此阶段与无限回合相同,但每位玩家都拥有第二个按钮,可以按下该按钮来“过关”。过关玩家将被淘汰出局,并被跳过。所有玩家过关后,此阶段结束。此阶段常用于《火星改造》、《复仇女神》等游戏。
  4. 一击:所有玩家的按钮亮起,然后玩家按任意顺序轮流行动。每次轮到一位玩家行动时,他们的按钮都会熄灭。所有玩家都行动完毕(并按下按钮)后,该阶段结束。此阶段适用于回合顺序可变的游戏。此阶段在《Brass Birmingham》、《Who Goes There》、《Power Grid》等游戏中使用。
  5. 回合顺序单回合:此阶段本质上是一个有限回合,但没有过牌按钮。先手玩家先进行一回合,然后是下一位玩家,直到所有玩家都进行完一回合后,阶段结束。目前为止,我唯一使用过此机制的游戏是《阿卡姆恐怖》。

此外,有时使用的阶段会根据玩家数量或已进行的回合数而变化。所以,这需要额外编写一些逻辑代码。最终,我编写了一个解析器,它可以读取每个游戏的配置文件,然后处理游戏的阶段顺序。

这是“通用”游戏的配置,可用于纸牌或卡坦岛等简单游戏:

"sequence": [
{"mode": "infinite-round"}
]

这是伯明翰铜管乐器的配置,它要复杂得多。

  1. 游戏开始时会显示一次说明
  2. 然后,第一轮会显示具体的回合说明(其他所有回合开始时都会显示不同的说明)
  3. 然后根据玩家数量,在游戏进行到一半时显示特殊指示(运河时代的结束)
  4. 然后根据玩家数量,游戏将在一定数量的玩家之后结束
“sequence”:[

{“only_on_rounds”:[1],“mode”:“upkeep”,“image”:“setup_instructions.png”,},

{“only_on_rounds”:[1],“mode”:“one-shot”,“image”:“actions_first_turn.png”},
{“not_on_rounds”:[1],“mode”:“one-shot”,“image”:“actions.png”},
{“only_with_player_counts”:[4],“only_on_rounds”:[8],“mode”:“upkeep”,“image”:“end-of-canal.png”},
{“only_with_player_counts”:[3],“only_on_rounds”:[9],“mode”:“upkeep”,“image”:“end-of-canal.png”},
{“only_with_player_counts”:[2],“only_on_rounds”:[10],“mode”:维持费、图像:"end-of-canal.png"},

{"only_with_player_counts": [4], "only_on_rounds": [16], "mode": "end", "image": "end.png"},
{"only_with_player_counts": [3], "only_on_rounds": [18], "mode": "end", "image": "end.png"},
{"only_with_player_counts": [2], "only_on_rounds": [20], "mode": "end", "image": "end.png"}

]
  1. 还有一些特殊阶段,例如移动首位玩家令牌、结束游戏以及其他一些边缘情况。所有代码可在此处找到:https://gitlab.com/jason.watson/board-game-table
9

添加屏幕

你可能在上一节中注意到,游戏配置文件中有很多图片。大约在我意识到必须为每个游戏编写不同的配置的同时,我也意识到我也可以为每个游戏显示具体的说明。

为了实现这个功能,我连接了一个屏幕,用 Photoshop 制作了一堆图片,并想出了如何将它们加载到树莓派的帧缓冲区中,以便在需要时显示出来。这样我就可以显示启动画面、加入游戏的说明以及游戏各个阶段的说明。

这还有一个额外的好处,那就是提醒新玩家(或健忘的玩家)游戏规则,并且是以上下文敏感的方式实现的。

10

游戏时间

这样,桌子就可以准备好了!


总的来说,它在游戏群体中很受欢迎。它能记录玩家的回合,还能在我们沉迷于长达数小时的桌游时提醒我们规则。哦,对了,氯丁橡胶垫和杯架简直是锦上添花 :)


11

进一步扩大范围

但这张桌子还有更多功能!在撰写本文时,这些最后的部分还在进行中,所以我把它们留到最后再说。

首先,我最近添加了一个更大的屏幕,并编写了一个 React 前端来显示游戏状态。这比一些简单的图像能够提供更多信息。大屏幕会显示轮到谁了(与按钮操作一致)、已进行回合数以及本轮的说明。

大屏幕还可以播放视频,而且,只要稍微调整一下时间,这些视频就可以同步到我的智能灯和插座上。观看 YouTube 视频,了解演示。

最后要说的是关于桌子本身。用了几个月后,这张折叠桌摇晃得有点厉害。我设计了一个底座,可以存放游戏,而且稳定性更高,但实际动工还没开始。

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载