希少性の導入
FXHashは、生成芸術に焦点を合わせるNFT市場です.また、アーティストは芸術の特徴を指定し、特定の値は、機能のために表示される回数の数に基づいて希少性を計算することができます.
上記の著者は、博士の抽象的なウォッチバンドを持っている.機能は、その値の割合と一緒に右側で見ることができます.全体の希少性は左側の説明にある.希少性は、NFTの再販価格の要因となり得る.この関数は、指定したオブジェクトリテラルでfxhashに送られます:
// FXHash feautures format
window.$fxhashFeatures = {
"Bands (Trio)": bands,
"Fidelity (Trio)": capitalizeFirst(size),
"Complexity (Trio)": capitalizeFirst(complexity),
"Watch (Trio)": capitalizeFirst(watchType),
"Material (Hex)": capitalizeFirst(effects),
"Lineage (Trio)":lineage
}
特徴値のために乱数を使用するのではなく、それは、希少性計算がよりよく働くように、特定の値を選ぶのがベストです.例えば、複雑さが0 - 100からの範囲で乱数でありえたならば、誰でも高い可能性を得るでしょう、しかし、確率が特定の値に分配されるならば、我々は希少性をコントロールすることができます.https://zimjs.comのZIMは、コーディングの創造性のためのJavaScriptのキャンバスフレームワークです.希少性を分散させるためのrarity ()関数を追加しました.この関数は2つの主要な設定、簡単な設定とペイロード設定を持ちます.
// a simple version of rarity()
// pass in an object literal with feature and frequency
// rarity returns an array of features matching their frequency
// so there are 80 Mysterious, 5 Lady and 15 Lord strings
// the odds then will e 80/100, 5/100 and 15/100
// the total does not need to add to 100
// note, the array is auto shuffled and we get the first item
const lineage = rarity({Mysterious:80, Lady:5, Lord:15})[0];
上記の例では、単純な例があります.これは、周波数値にマッチする文字列のシャッフル配列を返します.私たちは、血統がおそらく神秘的であるように最初の要素を得ます、しかし、多分、支配者でありそうにない女性.その後、fxhashオブジェクトのlinageプロパティに渡されます.我々が後で必要とするならば、我々は芸術で特定のサインを加えるために条件付きの上で条件を使うことができました.// a payload version of rarity()
// here, we pass an array in as the feature value
// the array has the frequency first and then a payload
// the payload can be any object
// again, we are getting the first element
// of the returned randomized rarity array
const size = rarity({
tight:[1,5],
perfect:[10,7],
loose:[10,10],
})[0];
// we now have a String object stored in size
// for instance, this might be perfect.
// note we use capitalizeFirst(size)
// this has two effects - it capitalizes
// but also converts the String object to a primitive string
// FXHash requires a primitive string
// but for the payload to work, size is a new String object
// here we use the payload that is stored on the String object
circle.scale = size.payload;
上で、我々はペイロードにアクセスする方法を示します.機能のルックアップテーブルとして別のオブジェクトリテラルを使用できました.しかし、私たちはrarity ()関数に正しくビルドすることを決めました.唯一の欠点は、フィーチャがペイロードを保持できるように文字列または数値オブジェクトになることです.したがって、結果は文字列または数値としてキャストされなければなりません.これは、そのオブジェクトのためにfxhashによって必要とされる原始的なものになります.私たちは彼らにオートキャストを要求するように連絡しました.ここでは、我々は機能を特別な何かを呼び出したいが、ブレンドモードを使用したいサンプルです.したがって、ペイロード位置にブレンドモード名を追加します.
const effects = rarity({
"electric":[20,"overlay"],
"pixel":[5,"color"],
"soft":[5,"soft-light"],
"tron":[1,"destination-in"],
"aztec":[1,"saturation"],
})[0];
パック、Seedrandom、繰り返します
また、配列からランダムな要素を取得するためにpluck ()を追加しました.以前はシャッフル( array )[ 0 ]を使います.
配列で何回繰り返したかを返すためにrepeat ()を追加しました.これはベースの希少性に便利なものです.たとえば、4つの異なるものの色のための希少性を行うよりはむしろ、代わりに、色が何度も色の繰り返しは、4つの異なるもの間で繰り返します.
let colors = [
green.darken(.2),
blue.darken(.2),
yellow.darken(.2),
pink.darken(.2)
]
let color1 = pluck(colors);
let color2 = pluck(colors);
let color3 = pluck(colors);
let color4 = pluck(colors);
let colorRepeats = repeats([color1, color2, color3, color4]);
// will be 0,1,2 or 3
SeedRanddom ()を使用して乱数をシードします.これはfxhashがどのように動作するかについて重要です.NFTのIDに基づいて、生成されたアートはそのIDのために毎回同じアートを生成するべきです.動的パラメータのためのZIM VEE値のいずれかを使用する任意のRANS ()は、特定のシードに対して同じ数の乱数を設定します.seedRandom(FXHash);
// r1 will always be same for same seed
const r1 = rand(100);
// r2 will probably different from above
// but will always be the same for the same seed
const r2 = rand(100);
したがって、私たちは、インタラクティブで生成的なNFsをZimでできるだけ簡単に作成することに取り組んでいます.より多くを見つけるために-インタラクティブなNFFTを訪問するか、https://zimjs.com/nftを訪問する我々の前のdev柱を見てください
歓声-我々のZIMコミュニティのためにhttps://zimjs.com/slackとhttps://zimjs.com/discordで我々に加わってください!
アブストラクト
Reference
この問題について(希少性の導入), 我々は、より多くの情報をここで見つけました https://dev.to/zimlearn/introducing-rarity-2o4fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol