Ana içeriğe geç

Oyunlarda NFT'ler ve Dijital Varlıkların Kullanımı

Fongible olmayan tokenlar (NFT'ler), Solana'nın oyunlara entegrasyonu için hızla popülarite kazanmaktadır. Bu benzersiz dijital varlıklar, Solana blok zincirinde saklanır ve onlara ekli bir JSON meta verisi gelir. Bu meta veri, geliştiricilerin belirli bir varlıkla ilgili önemli nitelikleri ve bilgileri depolamasına olanak tanır, örneğin nadirliği veya oyun içindeki belirli yetenekleri gibi.

NFT'ler, oyuncular için yeni bir sahiplik ve kıtlık seviyesi sunarak silahlar ve zırhlar gibi şeylerin yanı sıra dijital gayrimenkul ve koleksiyonları temsil etmek için oyunlarda kullanılabilir. Ayrıca NFT'ler, bir oyundaki arazi, ev, başarılar veya hatta karakterleri temsil edebilir. Olasılıklar sonsuzdur.

NFT Oluşturmak için Solana GameShift Kullanımı

Solana GameShift, Solana Labs tarafından oluşturulan bir oyun API ürünüdür ve böylece oyununuz için NFT'ler ve diğer varlıkları kolayca oluşturabilirsiniz. GameShift şu özellikleri sunar:

NFT'lerle Token Gating

NFT'leri kullanarak, NFT'ye sahip olma durumuna bağlı olarak oyunun belirli bir kısmına erişimi koşullu olarak kısıtlayabilirsiniz. Bu, oyununuzda daha sıkı bir topluluk oluşturabilir. :::info Bu yaklaşım, oyuncuların katılımını artırabilir. JavaScript kullanarak Metaplex SDK ile bu aşağıdaki gibi görünecektir:

JSON.parse(
// Örneğin '~/.config/solana/devnet.json'
fs.readFileSync("yourKeyPair.json").toString())
);
let keyPair = Keypair.fromSecretKey(decodedKey);

const metaplex = Metaplex.make(connection).use(keypairIdentity(keyPair));

const nfts = await metaplex
.nfts()
.findAllByOwner({ owner: wallet.publicKey })

let collectionNfts = []
for (let i = 0; i < nfts.length; i++) {
if (nfts[i].collection?.address.toString() == collectionAddress.toString()) {
collectionNfts.push(nfts[i])
}
}
Dikkat: NFT'leri yüklemek için başka bir verimli yol,

DAS varlık API'dir. Bunu Solana oyunları ön ayarı JavaScript istemcisinde bu Kod Örneği veya aşağıdaki komutla tam bir oyun iskeleti oluşturabilirsiniz:

npx create-solana-game your-game-name

NFT'lerle Ekstra Etkiler

Yeniden gelir akışları sağlamanın yanı sıra, NFT'ler oyunculara oyun içi avantajlar ve bonuslar sağlamak için de kullanılabilir. Örneğin, "jeton iki katına çıkaran" NFT'sine sahip bir oyuncu, NFT'yi cüzdanında tuttukları sürece iki katı miktarda jeton alabilir.

NFT'ler, oyuncuların geçici etkiler (örneğin, iksirler veya büyüler) elde etmek için belirli bir sayıda kullanabilecekleri oyun içi tüketilebilirler olarak da kullanılabilir.

Bu yenilikçi NFT özellikleri, oyun geliştiricilere oyun deneyimlerini benzersiz hale getirme ve oyuncuları Solana blok zincirindeki değerli varlıkların sahipliği için ödüllendirme fırsatları sunmaktadır.

Bu geliştirici kılavuzunu tokenlarla etkileşimde nasıl bulunduğunuz zincir üzerindeki bir Solana oyununda takip edebilirsiniz.

Örnek oyunda, Yedi Denizlerde program, hem fungible hem de non-fungible varlıklar olan 3 farklı dijital varlık kullanmaktadır:

  • "korsan jetonları" (fungible tokenlar) gemileri yükseltmek için kullanılır
  • "rom" (fungible tokenlar) gemilerin sağlığını artırır
  • "toplar" (NFT'ler) gemilerin savaşlarda verdiği hasarı artırır

Kaynak kodunu bulabilirsiniz kaynak kodu ve Yedi Denizler oyunu için sekiz saatlik video kurs burada.

Ayrıca dinamik meta veriler (Token Uzantılarını kullanarak) bir NFT'de karakter seviyesi ve tecrübe veya nesneleri saklamak için de kullanılabilir. Bu, oyundaki NFT'lerin oyuncular daha fazla onunla oynadıkça daha değerli hale gelmesini sağlayabilir.

Bunu ayrıca Metaplex'in yeni Core NFT standardı ile de yapabilirsiniz.


Oyuncu İstatistikleri için NFT Meta Verilerini Kullanma

NFT'ler ayrıca oyun nesneleri için her türlü nitelikleri depolamak için kullanılabilecek meta verilere sahiptir. Örneğin, bir NFT bir oyun karakterini temsil edebilir ve nitelikleri (Güç, Zeka, Çeviklik gibi) karakterin oyundaki gücünü doğrudan etkileyebilir.

Önemli: NFT meta verilerini ve niteliklerini Metaplex SDK kullanarak yükleyebilirsiniz:
import { Metaplex, keypairIdentity } from "@metaplex-foundation/js";

JSON.parse(
// Örneğin '.config/solana/devnet.json'
fs.readFileSync("yourKeyPair.json").toString())
);
let keyPair = Keypair.fromSecretKey(decodedKey);

const metaplex = Metaplex.make(connection).use(keypairIdentity(keyPair));
const nfts = await metaplex.nfts().findAllByOwner({owner: keyPair.publicKey});

const physicalDamage = 5;
const magicalDamage = 5;

nfts.forEach(async nft => {
const metaData = await metaplex.nfts().load({metadata: nft});

metaData.json.attributes.forEach(async attribute => {
if (attribute.trait_type == "Strength") {
physicalDamage += parseInt(attribute.value)
}
if (attribute.trait_type == "Int") {
magicalDamage += parseInt(attribute.value)
}
});
})

console.log("Oyuncunun Fiziksel Hasarı: " + physicalDamage)
console.log("Oyuncunun Büyüsel Hasarı: " + magicalDamage)

Bir Oyun Durumunu Kaydetmek için NFT'leri Kullanma

Ayrıca bir NFT'nin mint'ini bir PDA türetmek için kullanabilir ve bunu bir oyuncunun oyun durumunu kaydetmek için kullanabilirsiniz. Bu, bir oyuncunun herhangi bir oyun durumunu doğrudan bir NFT'de saklamanıza olanak tanır ki bu da oyuncunun onu alıp gitmesine (satmasına izin vermekle birlikte) olanak tanır. Bunu Solana 2048 oyunu'nda nasıl yapabileceğinizi görebilir ve aşağıdaki kod parçasını inceleyebilirsiniz:

#[account(
init,
payer = signer,
space = 800,
seeds = [b"player".as_ref(), nftMint.key().as_ref()],
bump,
)]
pub player: Account<'info, PlayerData>,

NFT'leri Birleştirme

Metaplex Fusion Trifle programı, NFT'lerin diğer NFT'lere sahip olmasını sağlar.

Örneğin, bir bitki parseli NFT'si oluşturabilir ve bunu bir su NFT'si ve bir tohum NFT'si ile birleştirerek bir Domates NFT'si oluşturabilirsiniz.


Oyun İçinde 3D NFT'leri Kullanma

Her NFT meta verisi ayrıca bir "animasyon url" içerir. Bu url bir video, GIF veya bir 3D dosyası içerebilir. Bu 3D dosyaları genellikle .glb veya .gltf formatını kullanır ve dinamik olarak bir oyuna yüklenebilir.

Unity için GLTFast paketini kullanabilirsiniz. JavaScript'te GLTFast JS kullanılabilir.

Aşağıda, içinde bir NFT'nin meta verisi ve glb modelini yükleyen bir örnek kod parçası bulunmaktadır:

var gltf = gameObject.AddComponent<GLTFast.GltfAsset>();
gltf.url = nft.metadata.animationUrl;
npm install --save-dev gltf-loader-ts

import { GltfLoader } from 'gltf-loader-ts';

let loader = new GltfLoader();
let uri = 'https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/BoxTextured/glTF/BoxTextured.gltf';
let asset: Asset = await loader.load(uri);
let gltf: GlTf = asset.gltf;
console.log(gltf);
// -> {asset: {...}, scene: 0, scenes: Array(1), nodes: Array(2), meshes: Array(1), ...}

let data = await asset.accessorData(0); // BoxTextured0.bin'i alır
let image: Image = await asset.imageData.get(0) // CesiumLogoFlat.png'yi alır

Raindrops Boots ile NFT'leri Öğeler ve Niteliklerle Özelleştirme

Raindrops Boots programı ile bir macera karakteri, bir kılıç ve bir miğfer sahibi olabilir. Karakter NFT'si bir pazarda satışa çıktığında, sahip olduğu diğer NFT'ler de satılır.

NFT'leri Bir Programda Oluşturma ve Ekstra Meta Veri Ekleme

Yeni Token Uzantıları ile, bir programda NFT'ler oluşturmak ve NFT'nin mint hesabında saklanabilecek ek dinamik zincir içi nitelikler eklemek mümkündür. :::tip Öneri: Örneğin, NFT'nin kendisinde deneyim ve oyuncu seviyesini kaydedebilirsiniz. Bu NFT'ler, oyuncular daha fazla onunla oynadıkça daha değerli hale gelebilir. 99 seviyesindeki bir karakter, 1 seviyesindeki bir karakterden daha arzu edilebilir olabilir.

Bu tür zincir içi meta verileri ile çalışmak için daha fazla kaynak bulabilirsiniz:


NFT Koleksiyonu Oluşturma

Solana'daki NFT'ler genellikle Metaplex standartlarına uyar. Metaplex, Solana'daki en çok kullanılan NFT standardını yöneten bir şirkettir. NFT koleksiyonu oluşturmanın en yaygın yolu, kullanıcının önceden tanımlı meta veri ve resim çiftlerini mintlemesine izin veren bir Metaplex "Candy Machine" oluşturmaktır.

Dikkat: Metaplex koleksiyonları ile çalışmak hakkında daha fazla bilgi bulabilirsiniz

Metaplex yaygın ve popüler olsa da, Solana'da daha birçok NFT standardı bulunmaktadır:

  • spNFT'ler
  • WNS
  • Core
  • SPL-22
  • SPL-404
  • nifty

NFT Stake Etme ve Misyonlar

Oyuncuların NFT'leri stake etmelerine (zaman kilidi) ve oyun içi para birimi oluşturmalarına ya da oyunculara ödül vermek için NFT'leri misyonlara göndermelerine izin verebilirsiniz.

sunmaktadır.