avatarJim Dee, OG Web3 Dev & Generative NFT Code Expert

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

3523

Abstract

a, and light area), but other things differ? Is that “unique enough”? (I felt that it WAS.)</li><li>What if, aside from the frame, two cats as well as their backgrounds and other on-page amenities were 100% the same? In other words, what if ONLY the frame was different? Was that “unique enough”? (Again, I felt that it WAS.)</li></ul><p id="c0ee">In fairness, the likelihood that either of the above would happen in 10,000 iterations was pretty low given the hundreds of billions of potential different combinations possible.</p><p id="6c61">Still, it at least raises the question for these projects of: <i>What counts toward uniqueness in YOUR generative NFT project? </i>It’s worth consciously considering because, in your set, you may well come up with two highly similar (or even identical) characters with only a background color separating the two. You have to ask yourself: <i>Is that unique enough for my purposes?</i></p><p id="84bc">This may be especially critical in a smaller set of, say, 1,000 iterations with fewer variations. So, what I’m suggesting is that, as far as uniqueness goes, <b>you can think of it in two distinct ways:</b></p><ol><li><b>Uniqueness means <i>technically </i>unique only.</b> “If I have two of the same character with the same traits, and only the background is different, then that’s unique enough for my purposes.”</li><li><b>Uniqueness pertains to the main character or focal area only.</b> The above example in #1 would NOT be unique. The main character itself would need to vary more, <i>aside </i>from any other lesser traits such as rare items or background colors.</li></ol><p id="efe6">One approach is not necessarily better than the other, of course. But, I think it’s arguably best to go into a project with these considerations consciously in mind because you might well get a more aesthetically diverse unique set versus a somewhat more repetitive, yet still unique, set. The difference could be small, of course, but also worth the effort.</p><h1 id="0baf">Solutions for Uniqueness Problems</h1><h2 id="a770">Thinking / Planning</h2><p id="0e8d">As for the obvious, I think the artist can and should put in a <i>lot </i>of thinking during the setup. He or she may not catch 100% of unexpected outcomes, but these aesthetic anomalies can at least be minimized with proper envisioning and planning. (But, again, sometimes accidents are happy. So, maybe don’t <i>over</i>-think everything!)</p><h2 id="178b">Add More Variations</h2><p id="c70d">Continuing with the obvious, consider widening your options for as many traits as you can. More traits, more variations on those traits. And/or also a smaller run. (Do you need 10,000? Will 1,000 do? The larger the run, the more traits and/or variations I’d personally recommend.) For some specific recommendations about numbers of traits and variations based on the size of your set, see <b>this article:</b></p><div id="7c95" class="link-block"> <a href="https://readmedium.com/information-regarding-generative-nft-coding-services-2d492aa18d4e"> <div> <div> <h2>Information Regarding Generative NFT Coding Services</h2> <div><h3>What it is, and how Array Web Development approaches it.</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*BwXuN-kTzssqGd6P)"></div> </div> </div>

Options

</a> </div><h2 id="7bb9">Testing</h2><p id="55b9">When I was working on the <a href="https://opensea.io/assets/nftuxedocats">NFTuxedoCats</a>, I ran a whole bevy of tests before outputting the official run of 10,000 unique NFTs. Those tests, which I reviewed visually as well as analytically, helped me see areas that needed tweaking. So, that definitely helped a lot.</p><h2 id="657e">Manual or Logical Curation</h2><p id="1b81">It’s possible that a NFT project may need to incorporate traits that may conflict with one another in potentially unpleasing esthetic ways. For example, there’s that old maxim “don’t wear stripes with plaid.” Yet, you may want your characters to have those options for shirts and pants. So, what do you do?</p><p id="8316">Well, you can of course programmatically address this. (It’s what I’d do.) For example, you have a rule that says something like, “if the shirt is plaid, then striped pants aren’t a possible trait for the pants area.” Pretty straightforward.</p><p id="2292">That said, even with artistic and programmatic effort, computers still have a way of surprising us. Often it’s delightful. But what if it’s just super ugly? (Like, not in a fun “haha, let’s buy this one because it’s a glitch” way but more of a “omg, what were they thinking” way.”) Well, one thing I thought of was that you could incorporate a human-review step into the generation process — some kind of visual approval system where the team looks over the generated set and approves or disproves individual output.</p><p id="5d30">I don’t know if that goes against any “rules” of this emergent area or not, but it strikes me as an option nonetheless. I’m not sure I’d want to manually approve or disapprove 10,000 images, but there would probably be ways to batch these somehow.</p><h1 id="9c33">Other NFT Coding Pieces:</h1><div id="27a2" class="link-block"> <a href="https://readmedium.com/information-regarding-generative-nft-coding-services-2d492aa18d4e"> <div> <div> <h2>Information Regarding Generative NFT Coding Services</h2> <div><h3>What it is, and how Array Web Development approaches it.</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/0*BwXuN-kTzssqGd6P)"></div> </div> </div> </a> </div><div id="9262" class="link-block"> <a href="https://readmedium.com/on-programmatically-generating-10-000-tuxedo-cat-portrait-nfts-e82cf6b60a9d"> <div> <div> <h2>On Programmatically Generating 10,000 Tuxedo Cat Portrait NFTs</h2> <div><h3>Thoughts about NFT creation and marketing.</h3></div> <div><p>medium.com</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*4AyPGbEIKI0wSRqHl5eYbQ.png)"></div> </div> </div> </a> </div><figure id="da50"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/0*qdA0d0yIHWORcFDs"><figcaption>Jim Dee is a prolific writer, developer, and multi-media creator from Portland. You can find him, his businesses, his books, and more at <a href="https://jpd3.com/">JPD3.com</a>. Thanks for reading! Cat image here courtesy of Midjourney AI.</figcaption></figure></article></body>

“Unique” Issues in Programming

Problems in Generative NFT Coding: Technical Uniqueness Versus Aesthetic Uniqueness

The meeting place between code and aesthetics.

When you’re programmatically generating thousands of NFTs with varying and unique sets of traits, the end results can be surprising. Hopefully, many of the scenarios will have been foreseen by the artists and developers, but with many billions of combinations, some strangeness can slip through. Let’s look at a simple example.

Say you have a simple character with a face, body, arms, and a background. Nothing is outlined; it’s all just made with areas filled with colors. Well, right away, you can see some problems, right? For example, what if you used the same 10 colors as options for ALL of those areas? You could wind up with a generated graphic that has a red background, a red face, red arms, and a red body. In other words, a 100% red square or rectangle.

Is that unique? Well, sure.

Will anyone buy it? (Well, I’d say no, but the NFT world is really unusual. If you’re already a famous artist and you’re doing this as a statement about art or something, then the answer may be yes! But for the rest of us, it’s probably just going to look like an awful glitch.)

That was a hugely simplified example, of course, and I doubt many would make that mistake.

But, expand the options above out to a generative project with many, many more options in play. It’s doubtful that the artist or developer has considered every single potential outcome. And that’s where you wind up with some unexpected generative graphics. You do a run, look over the output, and think, “Wow, I hadn’t thought of what this character would look like if X and Y happened at the same time!”

Sometimes that’s a good thing, sometimes it’s a bad thing. Provided you’ve coded things right, your output would be technically unique. But would it be aesthetically pleasing? That’s another conversation.

And so, of course, that’s part of the artistic challenge of generative artwork — envisioning as many of the possibilities as one can while creating the individual parts.

One thing that struck me while doing the NFTuxedoCats project was that I had a dozen or so areas that could potentially vary, but I also had a main subject matter (the cat itself). Here are a few to look at as I discuss some of this:

Sampling of NFTuxedoCats from my OpenSea collection — https://opensea.io/assets/nftuxedocats

So, you can see the obvious ones: I had a cat outline, a darker area of the cat, a lighter area of the cat, a background, various on-page “rarities” or bonuses, and a frame. Most of those traits had around 20 potential variations, and various logic governed other things. But, the main subject is “here’s a picture of a cat.” And so, questions arose:

  • What if the very same cat comes up (outline, dark area, and light area), but other things differ? Is that “unique enough”? (I felt that it WAS.)
  • What if, aside from the frame, two cats as well as their backgrounds and other on-page amenities were 100% the same? In other words, what if ONLY the frame was different? Was that “unique enough”? (Again, I felt that it WAS.)

In fairness, the likelihood that either of the above would happen in 10,000 iterations was pretty low given the hundreds of billions of potential different combinations possible.

Still, it at least raises the question for these projects of: What counts toward uniqueness in YOUR generative NFT project? It’s worth consciously considering because, in your set, you may well come up with two highly similar (or even identical) characters with only a background color separating the two. You have to ask yourself: Is that unique enough for my purposes?

This may be especially critical in a smaller set of, say, 1,000 iterations with fewer variations. So, what I’m suggesting is that, as far as uniqueness goes, you can think of it in two distinct ways:

  1. Uniqueness means technically unique only. “If I have two of the same character with the same traits, and only the background is different, then that’s unique enough for my purposes.”
  2. Uniqueness pertains to the main character or focal area only. The above example in #1 would NOT be unique. The main character itself would need to vary more, aside from any other lesser traits such as rare items or background colors.

One approach is not necessarily better than the other, of course. But, I think it’s arguably best to go into a project with these considerations consciously in mind because you might well get a more aesthetically diverse unique set versus a somewhat more repetitive, yet still unique, set. The difference could be small, of course, but also worth the effort.

Solutions for Uniqueness Problems

Thinking / Planning

As for the obvious, I think the artist can and should put in a lot of thinking during the setup. He or she may not catch 100% of unexpected outcomes, but these aesthetic anomalies can at least be minimized with proper envisioning and planning. (But, again, sometimes accidents are happy. So, maybe don’t over-think everything!)

Add More Variations

Continuing with the obvious, consider widening your options for as many traits as you can. More traits, more variations on those traits. And/or also a smaller run. (Do you need 10,000? Will 1,000 do? The larger the run, the more traits and/or variations I’d personally recommend.) For some specific recommendations about numbers of traits and variations based on the size of your set, see this article:

Testing

When I was working on the NFTuxedoCats, I ran a whole bevy of tests before outputting the official run of 10,000 unique NFTs. Those tests, which I reviewed visually as well as analytically, helped me see areas that needed tweaking. So, that definitely helped a lot.

Manual or Logical Curation

It’s possible that a NFT project may need to incorporate traits that may conflict with one another in potentially unpleasing esthetic ways. For example, there’s that old maxim “don’t wear stripes with plaid.” Yet, you may want your characters to have those options for shirts and pants. So, what do you do?

Well, you can of course programmatically address this. (It’s what I’d do.) For example, you have a rule that says something like, “if the shirt is plaid, then striped pants aren’t a possible trait for the pants area.” Pretty straightforward.

That said, even with artistic and programmatic effort, computers still have a way of surprising us. Often it’s delightful. But what if it’s just super ugly? (Like, not in a fun “haha, let’s buy this one because it’s a glitch” way but more of a “omg, what were they thinking” way.”) Well, one thing I thought of was that you could incorporate a human-review step into the generation process — some kind of visual approval system where the team looks over the generated set and approves or disproves individual output.

I don’t know if that goes against any “rules” of this emergent area or not, but it strikes me as an option nonetheless. I’m not sure I’d want to manually approve or disapprove 10,000 images, but there would probably be ways to batch these somehow.

Other NFT Coding Pieces:

Jim Dee is a prolific writer, developer, and multi-media creator from Portland. You can find him, his businesses, his books, and more at JPD3.com. Thanks for reading! Cat image here courtesy of Midjourney AI.
Nft
Programming
Generative Art
Art
Crypto
Recommended from ReadMedium