基于基因的生成式设计/艺术,CryptoKitties以太猫研究
opus
最近有不少小伙伴在研究生成艺术 ,要不我们聊聊吧 @shadow
如果以技术的思维来看待设计 (艺术),创作的过程就是定义搜索空间,在搜索空间中找到最佳的组合(创意)
shadow
熊叔
每一个人的徽章可以和别人的徽章进行繁衍,生成新的徽章
要不研究下以太猫的模拟基因合成吧!
以太猫
2021.10.6
CryptoKitties
以太猫是一个基于区块链的游戏,但它并不是100%基于区块链的。在区块链上只存储了基本的核心数据,比如猫咪的外观只有genes这一遗传密码,具体的图像生成逻辑在开发者的服务器上。
趁着假期,我花了点时间研究了下这个游戏。首先,如果你想实现类似的游戏机制,可以参考Kitty的数据结构,通过genes、父母ID、出生日期等来记录一只Kitty猫。
shadow
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;}
# Normal
普通猫的外貌是基于其genes的
# Fancy
一系列特殊的猫,具有独特的艺术品和徽章
# Exclusive
独家猫通常是为了纪念某个事件而产生的,只会发布少数(限量)。Exclusive 猫繁殖的后代是Normal或者Fancy
# Special Edition
特别版会大量发布,特别版的小猫具有遗传特征,可以用来繁殖新的普通猫。
mouth嘴巴
fur毛发
eye shape眼睛形状
eye colour眼睛颜色
base colour基色
highlight colour突出颜色
accent colour强调色
pattern图案
❤️ 冷却时间
我们都知道生孩子是一项艰苦的工作。因此,您的小猫在繁殖后需要时间休息。这被称为冷却时间。
# 冷却时间完全基于Kitty的一代。
# 低代小猫总是天生具有更快的冷却速度。
# 小猫每繁殖一次,它的冷却时间就会增加。
由于隐藏基因的存在,大量的玩家在探索(寻找)彩蛋,游戏的乐趣就在于此。
shadow
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
听着感觉像“破解了人类基因组”似的 ……
raisedbrow:37.5% + 9.4% + 2.3%+0.8%=50%
fabulous:37.5% + 9.4% + 2.3%+0.8%=50%
raisedbrow:37.5%
fabulous:37.5%
wingtips:25%
# 如果有一天游戏服务商不再提供CryptoKitties的服务,那保存在链上的数据仅仅只是一串“基因”编码。
# 猫也是有等级的,特征和数量是关键因素,另外可以通过配饰来区分等级,如family-jewels(增强型 Cattributes)。
# 特征越多,组合的可能越多。
# 模拟“基因”的概念,隐藏基因、遗传概率、突变
# 5种典型的玩家角色:收藏家、饲养员、交易者、花哨的追逐者。
opus