前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于基因的生成式设计/艺术,CryptoKitties以太猫研究

基于基因的生成式设计/艺术,CryptoKitties以太猫研究

作者头像
mixlab
发布2021-10-12 11:35:37
8430
发布2021-10-12 11:35:37
举报
文章被收录于专栏:MixLab科技+设计实验室

时间、空间、现实不只是一条线性路径,

而是一个具有无限可能的棱镜,

一个小小的选择能衍生出无数的现实分支,

在你所知道的世界外,

创造出一个全新的世界。

——漫威《What if》

opus

最近有不少小伙伴在研究生成艺术 ,要不我们聊聊吧 @shadow

如果以技术的思维来看待设计 (艺术),创作的过程就是定义搜索空间,在搜索空间中找到最佳的组合(创意)

shadow

基于笛卡尔积的大批量设计生成

A×B={(x,y)|x∈A∧y∈B}

熊叔

上次设计挑战赛我们不是聊到了徽章的融合吗? 每一个人的徽章可以和别人的徽章进行繁衍,生成新的徽章

要不研究下以太猫的模拟基因合成吧!

以太猫

2021.10.6

CryptoKitties

以太猫是一个基于区块链的游戏,但它并不是100%基于区块链的。在区块链上只存储了基本的核心数据,比如猫咪的外观只有genes这一遗传密码,具体的图像生成逻辑在开发者的服务器上。

趁着假期,我花了点时间研究了下这个游戏。首先,如果你想实现类似的游戏机制,可以参考Kitty的数据结构,通过genes、父母ID、出生日期等来记录一只Kitty猫。

shadow

代码语言:javascript
复制
struct Kitty {  
// Kitty的遗传密码  
uint256 genes;  

// 时间戳,记录了这只猫诞生时的区块时间  
uint64 birthTime;  

// 这只猫,可以进行繁殖的最短时间  
uint64 cooldownEndBlock;  

// 这只猫的父母的ID,如果是第0代,则是0  
uint32 matronId;  
uint32 sireId;  

//如果这只猫怀孕了,则设置为公猫的ID,用于标记其"丈夫"是哪一只公猫,否则设为0  
uint32 siringWithId;  

//冷却时间,需要等待多久后才能繁殖,第0代是0,其他是floor(generation/2)  
uint16 cooldownIndex;  

//这只猫的“世代号”。第一只猫是0代,新一代的猫是他们的父母一代中较大的一个,再加上1。max(matron.generation, sire.generation) + 1  
uint16 generation;}

❤️ 类型

CryptoKitties 有四种类型:Normal、Fancy、Exclusive、Special Edition。

# Normal

普通猫的外貌是基于其genes的

# Fancy

一系列特殊的猫,具有独特的艺术品和徽章

# Exclusive

独家猫通常是为了纪念某个事件而产生的,只会发布少数(限量)。Exclusive 猫繁殖的后代是Normal或者Fancy

# Special Edition

特别版会大量发布,特别版的小猫具有遗传特征,可以用来繁殖新的普通猫。

❤️ 特征

目前游戏中有 207 个特征,其中一些组合(有数十亿种可能的组合)从未被击中。你会是第一个吗?

主要的特征:

mouth嘴巴

fur毛发

eye shape眼睛形状

eye colour眼睛颜色

base colour基色

highlight colour突出颜色

accent colour强调色

pattern图案

还有一些额外的特征,比如elk horns(麋鹿角)、daemonwings (恶魔之翼)等等。

❤️ 冷却时间

我们都知道生孩子是一项艰苦的工作。因此,您的小猫在繁殖后需要时间休息。这被称为冷却时间。

# 冷却时间完全基于Kitty的一代。

# 低代小猫总是天生具有更快的冷却速度。

# 小猫每繁殖一次,它的冷却时间就会增加。

❤️ 基因

每只 CryptoKitty 出生时都有一组48 个基因。其中一些基因决定了在视觉上的表达(称为Cattributes),除了Cattributes外,还有隐藏基因。隐藏基因虽然不影响小猫的外观,但会影响他们的后代。

由于隐藏基因的存在,大量的玩家在探索(寻找)彩蛋,游戏的乐趣就在于此。

shadow

小猫的基因组由一组特征组成,每个特征(如眼睛、毛皮图案、体色等)包含四个基因(P、H1、H2、H3)。

主基因P:表示主要特征,决定小猫外观的可见特征。

隐藏基因H1、H2、H3:小猫的隐藏特征,这些特征不会影响其外观,但可能会遗传给后代。

遗传概率设定:主基因有 75% 的机会被传递,其中一个隐藏基因有 25% 的机会被传递。

举个例子:

两只小猫的图案都是calicool(主基因P)。而其后代图案的特征,可能的结果是calicool、luckystripe、totesbasic 或 spock。

后代的图案特征到底是哪个呢?我们计算下每种结果的概率:

Calicool: 37.5% + 37.5% + 0.8% = 75.8%

Luckystripe: 9.4% + 9.4% = 18.8%

Totesbasic: 2.3% + 0.8% = 3.1%

Spock: 2.3%

可见,计算逻辑非常简单,只要按照表格所示的概率相加即可。针对这一计算逻辑,许多开发者开发了各种第三方工具来计算可能的各种结果(预测)……

只要不断地繁殖,低概率事件总归会发生。

考考你们,有多少特征被官方隐藏了?

shadow

opus

12特征x4基因=48基因 uint256 genes到底是多大?2的256次方减一的十进制范围

eva

2²⁵⁶ 看来这可以扩展的空间很大呀

知识库

开发者Kai Turner破解了CryptoKitties 256 位基因组。

ace

听着感觉像“破解了人类基因组”似的 ……

Kitty #1001 的genes破解

# 十六进制 (base 16)

genome=0x00004a52931ce4085c14bdce014a0318846a0c808c60294a6314a34a1295b9ce

# 十进制 (base 10)

genome=512955438081049600613224346938352058409509756310147795204209859701881294

# 二进制 (base 2)

genome=0b010010100101001010010011000111001110010000001000010111000001010010111101110011100000000101001010000000110001100010000100011010100000110010000000100011000110000000101001010010100110001100010100101000110100101000010010100101011011100111001110

破解之后:

"09-09-09-09-06-07-07-04-01-01-14-01-09-15-14-14-00-05-05-00-06-06-04-04-13-08-06-08-01-03-03-00-05-05-05-06-06-05-05-03-09-08-09-09-11-14-14-14"

通过查找表即可对应到基因上。

❤️ 突变

以eye shape为例,raisedbrow 和fabulous是父母的基因,他们的后代发生基因突变的概率是多少?

raisedbrow:37.5% + 9.4% + 2.3%+0.8%=50%

fabulous:37.5% + 9.4% + 2.3%+0.8%=50%

旗鼓相当,这个时候,有了基因突变的干预,有 25% 的机会会突变成wingtips(翼尖基因)。也有 37.5% 的机会会变成raisedbrow(扬眉),37.5% 的机会是fabulous。

raisedbrow:37.5%

fabulous:37.5%

wingtips:25%

这就是纯种猫对繁殖特别有价值的原因。因为它们可以保证传递某种特性,所以发生突变的几率远远大于具有不同基因的猫。

❤️ family-jewels

家族珠宝(又名增强型Cattributes),是 2018 年 2 月添加到 CryptoKitties。为您的小猫提供珠宝以证明其皇室血统!

❤️ 玩家类型

# 收藏家 The Kitty Collector

收藏家喜欢每只猫,无论它多么古怪、狂野或古怪。他们纯粹是为了聚集一个庞大的小猫家族。

# 饲养员 The Breeder

饲养员是一位杰出的遗传学家。他们研究猫的基因组并尝试不同的繁殖配对,以创造出最独特、最稀有、当然还有可爱的小猫。

# 交易者 The Trader

交易者已经掌握了市场。他们不断地买卖最受欢迎的小猫,抢夺市场上最珍贵的小猫。

# 花哨的追逐者 The Fancy Chaser

Fancy Chaser 喜欢特别的艺术品和第一个发现新幻想的快感。他们带头解决难题,解开我们最令人兴奋的小猫培育配方。

❤️ 总结

# 如果有一天游戏服务商不再提供CryptoKitties的服务,那保存在链上的数据仅仅只是一串“基因”编码。

# 猫也是有等级的,特征和数量是关键因素,另外可以通过配饰来区分等级,如family-jewels(增强型 Cattributes)。

# 特征越多,组合的可能越多。

# 模拟“基因”的概念,隐藏基因、遗传概率、突变

# 5种典型的玩家角色:收藏家、饲养员、交易者、花哨的追逐者。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 收藏家 The Kitty Collector
  • # 饲养员 The Breeder
  • # 交易者 The Trader
  • # 花哨的追逐者 The Fancy Chaser
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档