Space Doodles Documentation
Space Doodles Documentation

Space Doodles Documentation

👩‍🚀

Greetings Space Doodler. Welcome to the next chapter of Doodles. This guide will help you understand everything you need to know about Space Doodles so that you can venture out into space!

Important links and terminology

Space Doodles smart contract
0x620b70123fb810f6c653da7644b5dd0b6312e4d8
Minting website
https://doodles.app at time of mint
Launching
The act of sending your Doodle into Space and receiving a Space Doodle.
Docking
The act of docking your Space Doodle and receiving your Doodle.

Space Doodles Friendly Overview

Space Doodles are personal spaceships for your Doodle. Each Space Doodle is generated from over 200 audio-visual traits and accompanied with stats that reflect the competency of your Doodle in its spaceship. Space Doodles and their stats will be used in future Doodles experiences that deliver surprise and delight to the wider NFT ecosystem.

With this release, Doodles embark on the first steps of their journey through space. Launching a Space Doodle will show you where it is in the universe, its swagger, and how good it is at piloting its ship or holding its bladder.

All Doodlers will be able to claim their own unique spaceship. Claiming a ship means your Doodle becomes a Space Doodle, but don’t worry it can always return safely from space and become a Doodle again.

Traits

Audio-visual traits

Spaceship - 30 unique spaceship types with variations of each in the generative collection. Some customs have additional variations of the 30 unique spaceship types. Spaceships in the generative collection are denoted by MK to distinguish them from customs.

Thruster - Matter that is emitted from the propulsion of your Space Doodle.

Nearest planet type - The planet type that your Doodle is closest to.

Sector - The bottom-most layer of a Space Doodle. This is the sector of space that your Space Doodle is currently traveling in.

Hidden traits - You may see and hear your Space Doodle pass by interesting objects.

Stats

Stats are generated on-chain through Chainlink VRF and scales from 1-8. This is your Doodle’s competency in its own spaceship. Every stat is highly composable due to its on-chain nature and will be used in future experiences. Each stat aside from rank is immutable and cannot be changed by anyone.

Piloting ability - ranges from Baby Yoda level ability all the way up to the Mandalorian himself.

Mechanical knowledge - if something goes wrong, can your Doodle fix it?

Bladder management - spaceships are small and don’t come equipped with relief facilities

Vibe captaining - how well your Doodle leads and spreads goods vibes

Stamina - game designers will have a field day roasting us for this one

Rank - set at 1 for all Space Doodles and is progress-able through future experiences

Rarities for each stat (excluding rank) are set by rolling a 256 sided dice and technical documentation can be found in the loaded dice lookup table in our contract.

  • 8: 1/256 chance
  • 7: 1/128 chance
  • 6: 1/64 chance
  • 5: 1/32 chance
  • 4: 1/16 chance
  • 3: 1/8 chance
  • 2: 1/4 chance
  • 1: 1/2 chance

Space Doodles Technical Overview

Space Doodles is a NFT token that wraps Doodles - you transfer a Doodle in and get a Space Doodle out. At any time you are only allowed to hold a Doodle or a Space Doodle, never both. We enforce this through smart contract logic.

On dock, we transfer the Doodle to the contract and depending on if the SpaceDoodle exists, either mint it to the sender or simply transfer it. This normally requires setAllowedForAll approval on the original Doodles contract, but for the single token case, we use onERC721Received to trigger the exchange when the sender transfers a Doodle (to save the setApprovedForAll call). This means that you do not need to setApprovedForAll if you do not want to.

SpaceDoodles have on-chain properties which we're calling "Stats". Of those, five of the stats ("Traits") are randomly assigned at mint, and the last one, "Rank", starts at 1 for everyone. In the future, approved Doodles contracts will get permission to modify the rank stat.

The randomness for on-chain stats comes from Chainlink VRF. We batch the trait assignment to save calls to VRF. The batch size is adjustable via the batchSize variable. When the batch fills up, we call chainlink via COORDINATOR.requestRandomWords. The chainlink coordinator calls this contract back via fulfillRandomWords, which takes the randomness and breaks it up into chunks to use for the individual Space Doodles / traits.

Traits are assigned randomly with values from 1-8 with exponential rarity. Each trait takes 8 bits of randomness (a number from 0 to 255) which we use to look up a "loaded dice lookup table" which gives us a different probability for each value. E.g. 8 only has one entry in the table which gives os a probability of 1/256 or around 0.4%.

Metadata

At release, the metadata .json files for Space Doodles will be served by our backend similar to the original Doodles launch. We will determine the best time to switch over to a decentralized and persistent storage (IPNS/IPFS) by updating the tokenURI in the smart contract.

In Space Doodles metadata, you can find:

  • Visual traits
    • Spaceship
    • Sector
    • Thruster
    • Nearest planet type
  • On-chain stats
    • Bladder management
    • Piloting ability
    • Mechanical knowledge
    • Stamina
    • Rank
      • This is the only mutable stat that will be changed by our smart contracts in the future
  • Image thumbnail .png IPFS CID
  • Animation .mp4 IPFS CID
  • Token name & description

Metadata Considerations

  • Ensure that new Rank updates are accurately reflected in token metadata
  • Ensure that metadata can be dynamically published upon mint
  • Anticipate a long tail of Space Doodles collection mints. Not every Space Doodle NFT will be revealed at the same time and some users may choose to never reveal

The Team

Burnt Toast aka Scott Martin - illustration

Alfie Motion aka Alfie B. - animation

Tulip aka Evan Keast - brand

Bandit aka Bennett Leader - product design & UI/UX

Varoun - A/V engineering

John Bowers - audio

Poopie aka Jordan Castro - product

Protein aka Wei H. - smart contract

Vainglorious aka Adil - back-end engineering & production

DeepBlueSteve - front-end

NFTSantana aka Ivan S. - production