-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Hello,
I will soon be generating unique avatars for users of our game, these are not NFTs, (every generation is unique, there are no rarity tiers) but I am using a future blockhash as the primary seeding source and I need a public seeding event for it to feel meaningful.
given there is no better place, I am doing it here. As I post this, we're at block height 952507.
The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.
I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.
def derive_features(kick_user_id: int, username: str) -> CatsonaFeatures:
stream = _ByteStream(f"{GENESIS_PREFIX}:{GENESIS_BLOCKHASH}:{kick_user_id}")
fur_h = _hue(stream.next(), stream.next())
fur_s = round(_span(stream.next(), *FUR_SAT))
fur_l = round(_span(stream.next(), *FUR_LIGHT))
fur_hsl = (round(fur_h), fur_s, fur_l)
pattern = _pick(stream.next(), PATTERN)
eye_h = _hue(stream.next(), stream.next())
eye_s = round(_span(stream.next(), *EYE_SAT))
eye_l = round(_span(stream.next(), *EYE_LIGHT))
eye_hsl = (round(eye_h), eye_s, eye_l)
eye_hsl_right = eye_hsl
heterochromia = (stream.next() / 256.0) < HETERO_CHANCE
if heterochromia:
gap = HETERO_MIN_HUE_GAP + (stream.next() / 255.0) * (360 - 2 * HETERO_MIN_HUE_GAP)
h2 = (eye_h + gap) % 360
s2 = round(_span(stream.next(), *EYE_SAT))
l2 = round(_span(stream.next(), *EYE_LIGHT))
eye_hsl_right = (round(h2), s2, l2)
nose_hsl = (340, 50, 78) if fur_l >= 50 else (350, 18, 45)
ear_hsl = (340, 45, 80) if fur_l >= 45 else (340, 22, 55)
return CatsonaFeatures(
kick_user_id=kick_user_id,
name=f"{username}Cat",
fur_name=_hue_name(fur_h),
fur_hsl=fur_hsl,
pattern=pattern[0],
eye_name="heterochromia" if heterochromia else _hue_name(eye_h),
eye_hsl=eye_hsl,
eye_hsl_right=eye_hsl_right,
nose_hsl=nose_hsl,
ear_hsl=ear_hsl,
heterochromia=heterochromia,
)
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMPFwAKCRBbtmxCWk+4
BsDsAQDgmwdYNfK2gBAy7E7s/HTT5034N54eWHsIiwa4B09VoAD/T4wKRREkXTD0
aOb1mIF3FK24fpGnJbwys1l27hdrcAE=
=zXQp
-----END PGP SIGNATURE-----
To verify my signature, my public key is on my website, which anyone who knows what this is for should be able to find. If you don't know, then don't worry about it.
Actually, I added a sentence after the fact on accident. Had to fix that unfortunately.
I'm pretty sure pgp hates bbcode, so I'm going to just establish it with a cleaner signed message:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
given there is no better place, I am doing it here. As I post this, we're at block height 952507.
The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.
I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMSsAAKCRBbtmxCWk+4
BthgAQDPYkIUDg3V69AleMBCKiUUmQqBYvq1/ELs0SMSXsJMEQD9HJvJDNdrs12b
jTW58yfmQWJKmRwLhdelhrZGmQx6TAA=
=Z5pF
-----END PGP SIGNATURE-----
Thanks! I'll make one more post once the block height is reached.