生命游戏应该都知道, 我这边是改了一下设定的规则, 然后在有限的格子上生成图案.
先上图:
具体的用法可以看录的介绍
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
对应 false
和 true
.
然后对应九宫格的选中点, 从左往右, 从上到下的话, 以此取 2^(8-n)
之和, 从 0 开始计数.
这个和就是 2^9 的字符串上的坐标值, 然后就可以查询到 Bool 值. 按说是可以沿用我的规则编辑器, 然后另外用 WebGL 写个高性能版本的.
看下有没人有兴趣再弄点有意思的图案出来..
1
rbw 2021-03-28 17:13:07 +08:00
诶 这个不错 话说老哥你知道有木有人做这种动态壁纸?
|
2
jiyinyiyong OP @rbw 木有诶.. 静态壁纸倒是可以改改代码画一个, 动态的不清楚怎么实现了.
|
3
lindongwu11 208 天前
可以把 HTML 发布到壁纸引擎的 steam 创业工坊
|