基于生命游戏(game of life)衍生的一个图形玩具

2021-03-28 12:09:51 +08:00
 jiyinyiyong

生命游戏应该都知道, 我这边是改了一下设定的规则, 然后在有限的格子上生成图案.

先上图:

具体的用法可以看录的介绍

https://www.bilibili.com/video/BV1xN411X7zh/

对应地址

大体的介绍的话, 就是通过九宫格的 2^9 种状态, 来迭代中心的格子下一时刻的状态(0 或 1), 因为九宫格的可能性有 2^9 种, 这样再排列组合的话, 可能性就非常多了. 为了生成图案方便, 规则应该是对称的, 那么总体数量可以去掉一些重复... 按照生命游戏的设定, 直接按照个数来决定了.. 然而不对称也能运行, 只是特别容易乱. 我这边只是探索了一下简单的一些情况, 生成了上边的图.

3x3 的格子, 对应的就是 3x1 的二维的版本了. 而一维的版本, 听说已经研究比较透了, 也比较有意思 https://en.wikipedia.org/wiki/Elementary_cellular_automaton 现在这个版本, 也有受到上边这个自动机的启发. 不过我也不是搞数学的, 加上 3x3 排列出来的可能性非常多, 也就只能生成图案当做玩具了.

另外渲染器基于 PIXI 的 virtual DOM 方案实现的, 性能比较差. 理论上讲可以直接 WebGL 底层玩法的改成高性能的版本, 不过写起来就没这么省事了. 具体到我这边生成的规则是这样的... 比如:

_______1__11111_1_11_1111111111__111_11_111_1___1111111_111_1__1__11_11__11_1____111111_111_1___111_1___1_______111_1___1________111111_111_1___1111111_111_1___111_1___1_______111_1___1_1______11_1___1_______111_1___1__1____1_______________1_________________11_11_111_1____111111_111_1____11_1___1_______111_1___1________11_1___1_______111_1___1_______1_______________1________________11_1___1_______111_1___1_______1_______________1_____1_________1_______________1_______________________________________1_______

它的长度是 2^9 , 然后每一个位置的 _ 或者 1 对应 falsetrue. 然后对应九宫格的选中点, 从左往右, 从上到下的话, 以此取 2^(8-n) 之和, 从 0 开始计数.

这个和就是 2^9 的字符串上的坐标值, 然后就可以查询到 Bool 值. 按说是可以沿用我的规则编辑器, 然后另外用 WebGL 写个高性能版本的.

看下有没人有兴趣再弄点有意思的图案出来..

1708 次点击
所在节点    分享创造
2 条回复
rbw
2021-03-28 17:13:07 +08:00
诶 这个不错 话说老哥你知道有木有人做这种动态壁纸?
jiyinyiyong
2021-03-28 19:36:25 +08:00
@rbw 木有诶.. 静态壁纸倒是可以改改代码画一个, 动态的不清楚怎么实现了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/765837

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX