这篇文章深入探讨了 Solana 在游戏领域的革新,强调了区块链技术如何改变玩家对虚拟资产的拥有权和游戏开发者的工作方式。文章结构清晰,围绕 Web3 游戏的优势、Solana 的交易费用和高效性以及一些开发工具展开讨论,并提供了丰富的实例和资源,适合对区块链游戏开发感兴趣的读者。
不是你的密钥,就不是你的加密货币。这一格言,核心于加密货币的理念,对于视频游戏同样适用。将区块链整合到游戏生态中不仅仅是一次创新,而是一个范式转变,能够实现去中心化资产所有权和自主权。在这一转变的前沿是 Solana。Solana 提供最快的智能合约平台来利用 Web3 的优势。通过利用 Solana 的高速度、低而可预见的费用及低延迟能力,开发者可以创造出在其他地方无法实现的独特游戏体验。
本文探讨了区块链在游戏中的潜力 — 考察支持 Web3 游戏的论据,以及为什么游戏开发者应该考虑在 Solana 上构建。文章还讨论了如何安装、配置和使用流行的框架和平台来创建 Solana 集成游戏。
没有其他视频游戏的收藏品能够媲美 Counter-Strike。根据稀有程度和浮动,一些罕见的 Counter-Strike 2 皮肤(即游戏内武器外观)可能价值数千美元。Neon,一位在 Counter-Strike 社区中知名的交易者,其皮肤库存价值超过 10 万美元。2023年10月13日,他被错误禁用 Valve的反作弊系统(VAC) 禁用了他的账户,原因是他启用了 AMD 的反延迟+特性。VAC 禁令使得一个玩家的库存无法交易,也就是说 Neon 的 10 万美元库存永久绑定到他的账户上。Valve 已正式对此问题进行了回应,幸运的是 Neon 能够解除禁令。Counter-Strike 2 依然存在虚假的游戏禁令问题。
在像 Steam 这样的传统游戏平台上,总是存在失去对所购买游戏或收藏品访问权的潜在风险。没有什么可以阻止 Valve 从你那里夺走你的资产。这看起来不太可能,因为这会导致严重的声誉损害和整个玩家群体的毁灭。然而,他们可以提高稀有物品的掉落率,从而降低其价值。这正是《团队堡垒 2》发生的情况。不管其价值如何,你购买的每个游戏和你收集的每个游戏内物品都是由一个中心化的实体管理的。玩家在游戏公司面前任人宰割。即使 以太坊的创建也与《魔兽世界》的 3.10 更新相关。维塔利克·布特林曾详细阐述过他经历的“去中心化的恐怖”,因为暴雪削弱了他角色的汲取生命魔法,毁了他多年的游戏时间。玩家厌倦了受到中心化实体的支配。Web3 游戏提供了一条出路。
Web3 游戏是一个范式转变。它利用区块链技术来去中心化资产所有权和决策过程。它确保透明和安全,玩家真正拥有他们在不同平台上的游戏内资产。这导致了虚拟经济的形成,如 Counter-Strike 的皮肤市场,受到透明度、安全性和可组合性的益处。这些经济促进了以用户为中心的新游戏模式,例如“赚取游戏” (Play-to-earn,P2E),其中玩家通过其游戏过程获得具有真实世界价值的奖励。
这绝不是一个小众概念。Web3 游戏在革命性行业内的潜力体现在几款成功且有影响力的游戏上。例如,Decentraland 提供了一个虚拟世界,玩家可以将房地产作为 NFT 进行购买、销售和开发。Tokens.com 在 Decentraland 中心区的房地产上花费了超过$2百万。这展示了 Web3 生态系统中虚拟经济、数字体验和个人空间的可能性。类似地,“赚取游戏”如 Axie Infinity 和生活方式应用如 STEPN(一个通过移动获利的平台)因展示玩家如何通过游戏获得收入而获得国际关注。像 Star Atlas 和 Aurory 的游戏在 Solana 上也取得了类似的成功。这些并不是孤立的例子。它们是一个更广泛的趋势的一部分,在这个趋势中,游戏超越了娱乐,与现实世界的经济和社会体系融合在一起。
Web3 游戏的出现为游戏开发者开辟了新的机会,远远超出当前游戏范式的界限:
区块链提供的不仅仅是构建游戏的平台。它们还是开辟新形式的互动数字体验的媒介。区块链为更动态、参与式的游戏生态图景铺平了道路。
低且可预见的交易费用对 Web3 游戏至关重要。玩家不希望为玩游戏支付高昂的费用。Solana 的交易费用低,经常低于 0.001 美元,普通非投票费用在 0.000005 到 0.00007 SOL 之间浮动。由于本地化费用市场,这些费用也可以预见。它们隔离了拥堵,确保只有尝试访问高需求区域的交易才会看到费用的增加。这不同于基于气体的网络,如以太坊,在重度拥堵时期的交易费用不可预测,简单交易费用可高达数百美元。
Solana 的架构提供了无与伦比的可组合性。对于玩家来说,这意味着有了一个简化的用户体验,一个账户即可搞定。玩家不需要担心跨平台的复杂性。一切都可以在 Solana 生态体系内中进行访问和互联。对于游戏开发者来说,可组合性提供了大量机会。开发者可以轻松集成和利用已有的链上程序(例如,The Remnants 和 Magic Eden 的合作)。这确保了游戏资产的流动性不会在其他 L2 或 shards 之间分散。Solana 促进了一个可组合的生态系统,轻松协作网络中的游戏、社区和其他应用程序。
高速度和低延迟对游戏至关重要。慢速交易可能会影响到游戏状态的更新,造成无法忍受的延迟,并导致长时间的等待。这将提供不如传统游戏更好的用户体验。Solana 旨在支持高交易吞吐量。它平均每秒处理 400 个用户生成的交易(TPS),在高需求期间可达到 2000 TPS 以上。随着 Firedancer 等创新的到来,Solana 预计将扩展以支持任何传统消费者级应用程序。Solana 的目标 槽 时间为 400 毫秒(即每个账本处理交易和生成区块所需的时间)。根据网络需求,它的时间可能在 500 到 600 毫秒之间波动,是目前可用的最快区块链。这使得它非常适合像策略游戏、回合制游戏、城市建设和放置类游戏等类型的实时数据库。
Forever Games 是完全基于链的游戏。这是区块链集成的最极端案例,其中游戏的状态和逻辑完全运行在区块链上。这导致了一个持久的游戏,连接了大量的协议、去中心化应用(dApps)和具有低入门门槛的程序。在 Solana 上的示例包括:
作为一名玩家,400 毫秒的响应时间对于实时赛车或射击游戏来说听起来可怕。然而,并不是所有事情都需要直接放在链上。较小的集成,例如使用 NFT 表示游戏内物品、使用代币进行应用内购买,以及使用玩家的钱包进行身份验证,都可以迅速完成。如今,有许多工具可用于你立即开始与 Solana 集成。
本文考察了几种流行的框架和平台,以构建 Solana 集成的游戏。为了简洁起见,我们没有涵盖一些工具,但在以下附加资源部分中提供了链接。这些包括 Godot Solana SDK 或 Phaser 3 TypeScript 起始模板。就本文而言,我们考察了如何安装、配置和使用以下工具:
使用像 Anchor这样的框架可以显著简化链上游戏的开发。Anchor 是一个强大的框架,用于快速构建安全的程序。它通过减少样板代码、处理各种安全检查、自动生成客户端库并提供全面的测试设置,简化了开发过程。开发一个完全链上游戏的最简方式是将游戏的逻辑和状态存储在 Anchor 程序中。Anchor 帮助抽象化 Solana 较低级编程模型的复杂性。现在,开发者可以更专注于游戏开发,而不用在 SVM 中与之抗争。
使用 Anchor 需要 Rust。它可以在 这里 安装,也可以用以下命令安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Anchor 还建议第一次接触 Rust 的人阅读 Rust 书 的前九章。这涵盖了基础知识,因为大多数时候,不需要高级 Rust 知识就可以编写 Anchor 程序。
Anchor 还要求安装 Solana 工具套件:
## macOS 和 Linux
sh -c "$(curl -sSfL https://release.solana.com/v1.17.7/install)"
## Windows
cmd /c "curl https://release.solana.com/v1.17.7/solana-install-init-x86_64-pc-windows-msvc.exe --output C:\solana-install-tmp\solana-install-init.exe --create-dirs"
你可以通过运行命令 solana --version
确认你所需版本的 solana 是否已安装。
Yarn 也是必需的,可以使用 npm 包管理器 安装: npm install --global yarn
。
建议使用 Anchor 版本管理器 (avm) 安装 Anchor。可以使用 cargo 安装: cargo install --git <https://github.com/coral-xyz/anchor> avm --locked --force
。然后,我们可以安装并使用最新版本:
avm install latest
avm use latest
## 验证安装
avm --version
SolanaCiv 完全使用 Anchor 在链上开发。管理资源、招募单位、研究新技术、讨伐野蛮人和交易全部在链上进行。它也是开源的!这意味着可以用作参考来拆解游戏的 逻辑 和 状态,了解一切如何在链上存储。
Clockwork 是一个开源的 Solana 自动化引擎。这对于游戏开发特别有用,因为它使事务调度和构建自动化、事件驱动的程序变得简单。可以使用以下命令安装: cargo install -f --locked clockwork-cli
,并与 Anchor 集成良好。有关如何使用 Clockwork 的示例列表可以在 这里 找到。
Solana Playground 是一个基于浏览器的代码开发环境,用于测试和部署程序。其集成开发环境 (IDE) 使其成为旨在了解 Solana 游戏开发的新手的理想选择。它有多个与链上游戏相关的 Anchor 教程。例如,Tiny Adventure 是一个友好的链上游戏教程。该教程教你如何使用 Anchor 将游戏角色左右移动,以及如何使用程序派生地址 (PDA) 来保存游戏数据。还显示如何使用 Next.js 设置前端,使用 Solana 钱包适配器。完整的代码可以在 这里 找到。
要快速创建一个带有 TypeScript 客户端的 Anchor 程序,可以使用 npx create-solana-game
命令,后面跟上游戏的名称。此命令简化了 Anchor 和 TypeScript 的开发过程,构建了一个全新的项目。该工具由 Jonas Hahn 和 Beeman 开发,并可以在 solana-developers GitHub 存储库 中找到。
Turbo 是一个下一代 2D 游戏引擎和市场,旨在赋能独立开发者。它包括几个创新功能:
Turbo 是由 Jozanza 使用 Rust 开发的。由于使用 Rust 构建,开发者可以轻松地在程序中重用 Anchor 结构,而无需任何 SDK 或插件。该项目目前仍处于早期开发阶段。然而,其 网站 包含几个可以在浏览器中执行的示例,展示 Turbo 的功能和直观的开发者体验。此外,你可以在 这里 找到一个“Hello, world!”的演示。
要开始使用 Turbo,我们必须先安装所有相关的 Rust 依赖:
## 下载并运行 rust 安装程序
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
## 添加 wasm 目标
rustup target add wasm32-unknown-unknown wasm32-wasi
## 安装 cargo-watch
cargo install cargo-watch
接下来,我们 want to download and run the installer for the Turbo command line interface (CLI):
sh -c "$(curl -sSfL https://turbo.computer/install.sh)"
一旦安装完成,我们可以使用命令 turbo-cli -h
来确保 Turbo CLI 已正确安装。使用此命令,你应该看到 Turbo 的使用信息:
在桌面原生运行 Turbo 游戏
用法:turbo-cli
命令:
init 初始化一个新的 Turbo 项目
run 运行一个 Rust Turbo 项目
help 打印此消息或给定子命令的帮助
选项:
-v, --version 打印版本
-h, --help 打印帮助
-V, --version 打印版本
Turbo 有几个宏来简化开发过程。顺便提一下,Rust 宏是强大的元编程工具,用于代码生成(即生成其他代码的代码)。它们有助于减少样板代码并启用更富表现力的代码模式。
println
宏是标准 println
宏的自定义实现。它格式化字符串并将其传递给游戏引擎的日志系统:
macro_rules! println {
($fmt:expr $(, $($arg:tt)*)?) => {
$crate::sys::log(&format!($fmt, $($($arg)*)?))
};
}
cfg
宏用于配置目的。它公开了 config
函数,该函数返回一个 64 位整数,组合了指向配置字符串的指针及其长度。这对于将配置数据从 Rust 传递到另一个环境(如 WebAssembly)非常有用:
macro_rules! cfg {
($toml:expr) => {
#[no_mangle]
pub unsafe extern "C" fn config() -> u64 {
let ptr = $toml.as_ptr() as u64;
let len = $toml.len() as u64;
(len << 32 | ptr)
}
};
}
init
宏对于游戏状态管理非常有用。它定义了一个结构并提供加载和保存其状态的方法。它实现了该结构的 load
和 save
方法,使用 Borsh 进行状态持久化:
macro_rules! init {
(struct $StructName:ident { $($fields:tt)* } = $default:expr) => {
...
};
}
go
宏用于定义游戏的主要逻辑。它将一个代码块包装在一个可以从外部环境调用的函数中,例如,WebAssembly。它还定义了游戏逻辑的入口点和一个用于使用状态快照运行游戏的 run_snapshot
功能:
macro_rules! go {
($($body:tt)*) => {
use $crate::prelude::*;
#[no_mangle]
#[allow(overflowing_literals, non_upper_case_globals)]
pub unsafe extern "C" fn run() {
use std::f32::consts::PI;
$($body)*
}
pub fn run_snapshot(snapshot_data: &[u8]) -> Vec {
$crate::run_snapshot(snapshot_data, || unsafe { run() })
}
};
}
Turbo 还使用来自 struckstruck crate 的 strike
宏来增强 Rust 的结构定义能力。通常,嵌套结构必须单独定义。strike
宏允许在结构中内联定义嵌套结构。此特性简化了代码,使复杂数据结构更易读、更简洁。它还自动对整个结构应用 Borsch 序列化,并将顶层结构的派生宏传播到所有嵌套结构中。
因此,Turbo 项目的整个开发者工作流程如下:
// 使用 turbo::cfg! 宏定义游戏配置
turbo::cfg! {r#"
name = "Grand Theft Auto VI"
version = "1.0.0"
author = "Ichigo"
description = "Vice City but pixelated"
[settings]
resolution = [256, 144]
tile_size = [32, 32]
"#}
// 使用 turbo::init! 宏定义游戏状态初始化
turbo::init! {
...
}
// 使用 turbo::go! 宏实现游戏循环
turbo::go! {
// 加载游戏状态
let mut state = GameState::load();
...
}
Turbo 不同于其他基于 Rust 的游戏开发引擎,因为它将具有 完整的 Solana 支持。例如,它可以从 RPC 提取账户数据,并仅用两行代码解码它。它还通过 WebSockets 自动订阅账户更新,因此你的数据始终是最新的:
// 获取 Solana 账户数据
let response = solana::get_account("pubkey");
// 解码账户数据
let decoded = response.decode_anchor::();
// 现在我们可以处理链上数据!
if let Ok(data) = decoded {
...
}
Magicblock 是一个多功能的开源框架,用于构建链上游戏。它使任何人都能够在 Solana 或 SVM 上制作和玩游戏。它拥有丰富的工具集,允许开发者开发完全链上的游戏或将 Solana 集成到现有游戏中。它包括以下功能:
凭借这些功能,Magicblock 旨在抽象掉复杂性,使开发者能够专注于创建最佳的用户体验。此 MIT 许可的框架由 Magicblock Labs(即 Andrea 和 Peak)进行维护。
来源:图表改编自 Magicblock 的文档
Solana Unity SDK 是一个开源包,提供工具,使游戏开发者能够将基于 Solana 的 NFT、代币和链上程序集成到他们的 Unity 游戏中。该 SDK 利用 Solana Unity Core,这是一个与 .NET 生态系统兼容的 .NET 标准 2.0 框架。它包含许多功能,例如完整的 JSON RPC API 支持、指令反编译、Solana Mobile Stack 支持和原生 DEX 操作。
使用 Solana Unity SDK 构建的示例游戏列表可以在 这里 找到。
要使用 Unity 创建,请在 这里 下载 Unity Hub。Unity Hub 管理 Unity 编辑器的多个安装,允许你在不同版本之间工作和创建新项目。在继续之前,请确保你的系统满足以下要求:
安装 Unity 后,我们现在可以创建并打开新项目。
打开新项目后,打开 Package Manager 窗口。可以在 Unity 的顶部菜单中通过 Window > Package Manager 访问。
窗口打开后,点击状态栏中的添加(+)按钮。添加包的选项将会出现。然后从菜单中选择“从 git URL 添加包”。
在文本框中输入 Git URL 并点击“添加”。你可以通过输入并替换 X.Y.Z 为所需版本来安装特定的包版本。所有可用发行版可以在 这里 找到。
安装 Solana Unity SDK 后,使用 Package Manager 检查并导入 Samples。这包括一个示例场景,你可以参考或修改以集成到 Unity 项目中。此场景位于 Scenes 文件夹中,其中包括一个钱包身份验证的示例,使用 Orca 进行代币交换。Scripts 文件夹包含不同的脚本示例,包括 Orca 交换脚本。 Web3.cs 脚本 可以附加到你项目中的任何对象。此脚本是 Solana Unity SDK 的主要入口点。它是一个单例,管理与 Solana 的连接,促进钱包登录、签署交易等功能。Prefabs 文件夹包含存储对象配置的模板。它们可用于创建同一资产的实例,可以在项目中重复使用。
Magicblock YouTube 渠道 包含有关 将 Solana 钱包连接到 Unity、获取钱包的公钥和余额、使用游戏内钱包进行测试,以及 在链上构建国际象棋引擎 的教程。
Solana Unity SDK GitHub 存储库中还包含多个 示例脚本,从 指令解码 到 构建交易。
除了 Orca,Jupiter 在 Solana Unity SDK 中被原生支持。SDK 提供实用方法,以便于交换报价的生成和交换交易的构建及发送。
要执行交换,首先我们必须创建一个 IDexAggregator
实例,提供一个默认账户。这个实例将用于与 Jupiter 进行交互:
IDexAggregator dex = new JupiterDexAg(Web3.Account);
然后,我们定义要交换的代币。在这个示例中,我们将 SOL 交换为 BONK:
TokenData tokenA = await dex.GetTokenBySymbol("SOL");
TokenData tokenB = await dex.GetTokenBySymbol("BONK");
接下来,我们获取交换的报价。这是交换 1 SOL 的报价示例:
SwapQuoteAg swapQuote = await dex.GetSwapQuote(
tokenA.MintAddress,
tokenB.MintAddress,
DecimalUtil.ToUlong(1, tokenA.Decimals)
);
var quote = DecimalUtil.FromBigInteger(swapQuote.OutputAmount, tokenB.Decimals);
// 记录预计的 BONK 数量
Debug.Log(quote);
我们还可以显示交换的路线路径以提高透明度:
Debug.Log(string.Join(" -> ", swapQuote.RoutePlan.Select(p => p.SwapInfo.Label)));
现在我们可以生成交换交易,用我们的钱包签署,并发送出去:
Transaction tx = await dex.Swap(swapQuote);
await Web3.Wallet.SignAndSendTransaction(tx);
开发者可以使用 Solana Unity Anchor package 将 Anchor 程序集成到 Unity 中。该包包含一个 IDL 到 C# 转换器。转换器简化了将 Anchor IDLs(即 Solana 程序的 JSON 表示形式)转换为 Unity 项目的 C# 代码的过程。集成过程分为两个主要步骤:
dotnet tool install -g Solana.Unity.Anchor.Tool
用于安装 Solana Unity Anchor 工具。 -g
标志确保包是全局安装的,消除了为每个新项目安装该工具的需要dotnet anchorgen -i idl/file.json -o src/ProgramCode.cs
用于生成程序的 C# 表示。此命令将指定的 IDL 转换为可在 Unity 中使用的 C# 文件。开发者可以按照这些步骤高效地将 Solana 程序移植到他们的 Unity 环境中。由 Jonas Hahn 制作的详细视频演示可以在 这里 找到。
Solana On-Chain Achievement and Ranking (SOAR) 是一个旨在提供无缝解决方案的程序,用于管理 Solana 上的排行榜、成就、玩家档案和自动奖励分配。它支持多种功能,包括:
目前正在为 Solana Unity SDK 提供支持,预计很快将推出。
SOAR 可以通过几行代码轻松地集成到项目中。例如:
import { SoarProgram, GameType, Genre } from "@magicblock-labs/soar-sdk";
const provider = anchor.AnchorProvider.env();
anchor.setProvider(provider);
const client = SoarProgram.get(provider);
let game = Keypair.generate();
let title = "Game1";
let description = "Description";
let genre = Genre.Action;
let gameType = GameType.Web;
let nftMeta = Keypair.generate().publicKey;
let _auths = auths.map((keypair) => keypair.publicKey);
// 检索捆绑的交易。
let { newGame, transaction } = await client.initializeNewGame(game.publicKey, title, description, genre, gameType, nftMeta, _auths);
// 作为签名者发送和确认交易。
await client.sendAndConfirmTransaction(transaction, [game]);
上述代码直接摘自 Magicblocks 关于 SOAR 的文档。这段代码首先从 @magicblock-labs/soar-sdk
导入所需的模块,包括 SoarProgram
、GameType
和 Genre
。
SoarProgram
类使客户端能够访问链上 SOAR 程序中的每一条指令。它还包括派生 PDA 和提取多个帐户的功能。
然后,它初始化一个 Anchor 提供者(anchor.AnchorProvider.env()
),并将其设置为后续操作的默认提供者(anchor.setProvider(provider)
)。接下来,使用先前设置的提供者创建了一个 SoarProgram
客户端。
以上代码片段开始初始化一个新游戏。生成了一个新的游戏密钥对,并定义了游戏的基本详情,例如游戏的标题、描述、类型(例如,Genre.Action
)以及游戏类型(例如,GameType.Web
)。还为游戏生成了一个 NFT 元数据密钥对。然后,准备了一组授权 (_auths
),以定义游戏内的访问控制。The initializeNewGame
方法在 SOAR 客户端上被调用,传入游戏的公钥、标题、描述、类型、游戏类型、NFT 元数据和授权信息。该方法返回一个 newGame
对象,并准备将新的游戏交易发送出去。交易使用 SOAR 客户端提供的 sendAndConfirmTransaction
方法发送并确认。游戏的密钥对用作交易的签署者,确保交易由游戏的创建者授权。
初始化客户端并使用 SOAR 设置新的链上游戏非常简单。现在,我们可以使用 GameClient
注册我们的游戏,创建排行榜,并访问我们游戏的状态。可能性是无穷无尽的。
SOAR 的程序地址是 SoarNNzwQHMwcfdkdLc6kvbkoMSxcHy89gTHrjhJYkk,其 TypeScript 文档可以在 这里 找到。
Solana Unreal SDK 是一个插件和工具包,允许开发者使用 Unreal Engine 5 在 Solana 上构建区块链游戏。该工具包包含用于大规模多人在线 (MMO) Solana 集成游戏的起始模板,包括游戏服务器的模板。它还包括以下功能:
该插件利用 Solnet 和 .NET 运行时的强大功能,开发者可以直接与 Solana 通信,而无需从头创建整个 C++ 库。 LinkStream 可以通过 TCP 服务器和客户端协议将交易消息从游戏发送到钱包,如 Tranquility。Star Atlas 团队最初构建了该 SDK,而 Bifrost 最近已经分叉并更新了代码。就我们的目的而言,我们将参考 Star Atlas 团队的构建,用于接下来的安装部分。Bifrost 的过程是相同的。
我们必须首先安装 Epic Games Launcher 才能使用 Unreal Engine。接下来,我们需要创建一个 Epic Games 帐户并登录。一旦登录,导航到 Unreal Engine 选项卡并点击 Install 按钮以下载最新版本。有关该过程的详细说明可在 这里 找到。请注意 Unreal Engine 5 的推荐系统要求:
打开 Epic Games Launcher 并启动你安装的 Unreal 版本:
创建一个新项目并选择 C++ 作为项目模板:
现在关闭编辑器并打开创建项目时设置的 Project Location 文件夹。然后,在根目录中创建一个新的 Plugins 文件夹:
将插件复制到 Plugins 目录。右键点击根目录中的 .uproject 文件,选择 Generate Visual Studio project files。双击 .sln 文件并使用你的 C++ IDE 打开项目。接下来,我们要打开 Source/<ProjectName>/<ProjectName>.build.cs 下的文件。将插件的名称添加到 PublicDependencyModuleNames
中。
在我们的例子中,我们要输入 Foundation
:
将插件的名称添加到我们的 .uproject 文件中:
关闭你的 IDE 并重新生成项目文件。在打开你的项目解决方案(即 .sln 文件)后,安装过程完成。
所有与插件相关的内容都可以在内容浏览器的 Plugins > Solana SDK 下找到。可以在 Plugins > Solana SDK Content > Blueprints 中找到一个 LinkStream 蓝图。该蓝图使开发者能够与 Solnet 通信。Maps 文件夹中的沙盒地图可以用作如何正确设置 Solana SDK 的参考。有关 一般用法 的细分和如何 自定义你的 LinkStream 包装器 或如何 通过 REST API 进行服务器身份验证 的细分可在 Solana Unreal SDK GitHub 上找到。更详细的关于如何使用 Unreal SDK 交互 Solana 的说明可在 这里 找到。
Unreal 对于在 3D 中的优化和后期处理效果的关注使得与其他编辑器(如 Unity)相比,可以创建照片级真实感的游戏。这种超真实的一个流行例子是 Star Atlas。Star Atlas 是一款沉浸式策略游戏,带你穿越太空深处。它充满了机遇、领土征服和政治阴谋。其他游戏,如 Yaku Corp,则利用 Unreal Engine 的照片级真实感创建沉浸式 MMORPG。
Honeycomb 是由 Tumi Labs 开发的协议,旨在简化 Web3 游戏开发过程。Honeycomb 是一套链上程序和状态压缩工具,处理关键的游戏生命周期功能。所有程序都旨在可互操作和模块化。这些程序还可以根据开发者的个人需求进行定制。他们的基础设施开发工具包侧重于以下核心功能:
他们的工具可以分为以下类别:
开发者可以使用其 JavaScript SDK 和 @solana/web3.js 与 Honeycomb 互动:
## 使用 npm
npm install @solana/web3.js @honeycomb-protocol/hive-control
## 使用 yarn
yarn add @solana/web3.js @honeycomb-protocol/hive-control
安装后,开发者可以用 Solana Connection 对象初始化一个 Honeycomb 对象:
import * as web3 from "@solana/web3.js";
import { Honeycomb } from "@honeycomb-protocol/hive-control";
const honeycomb = new Honeycomb(
new web3.Connection("https://api.mainnet-beta.solana.com")
);
从这里,选择是无穷无尽的。例如,开发者可以与 IdentityClient 互动以管理用户身份和档案。默认身份 guestIdentity
被用作占位符,直到一个密钥对或钱包被注册到 Honeycomb 实例中。密钥对可以通过以下命令链接作为身份:honeycomb.use(keypairIdentity(<keypair>);
。类似地,可以使用 Honeycomb 实例上可用的 walletIdentity
函数将钱包对象 ( Solana Wallet Adapter) 注册为身份。身份可用于身份验证目的,例如签署消息或交易。
另一个有趣的示例是 HttpClient。该模块使用 Axios 或 Fetch 便捷地处理 HTTP 请求,提供与 HTTP 相关的功能。它允许自定义请求头,并提供方法进行 GET、POST、PUT 和 DELETE 请求:
// 发起一个 GET 请求
honeycomb
.http()
.get("/users", { authToken: "myAuthToken" })
.then((response) => {
console.log("GET Response:", response);
})
.catch((error) => {
console.error("GET Error:", error);
});
// 发起一个 POST 请求
const userData = { name: "John Doe", email: "john@example.com" };
honeycomb
.http()
.post("/users", { data: userData })
.then((response) => {
console.log("POST Response:", response);
})
.catch((error) => {
console.error("POST Error:", error);
});
这尤其有趣,因为开发者可以访问第三方 API,例如查询非游戏的其他链上数字资产的 数字资产标准 (DAS) API。
这些代码片段来源于 Honeycomb Protocol 文档。SDK 的文档可以在 这里 找到。
GameShift 是 Solana Labs 为游戏开发者推出的平台,通过一个 API 轻松集成 Web3 元素。它旨在在享受 Solana 游戏优势的同时,便于创建用户友好的 Web2 体验。GameShift 通过处理所有Gas费用、区块链交互和钱包,使 Web3 生态系统中的用户体验更加清晰。GameShift API 有四个垂直领域:
开发者可以通过在 GameShift 控制台创建一个帐户,设置一个组织,向其组织中添加开发者,添加游戏并管理他们的开发者 API 密钥来开始使用 GameShift。整个过程概述可以在 这里 找到。
法定交易需要商户帐户。可以通过以下两步创建帐户:
所有 GameShift 活动都在组织内进行组织:
来源:GameShift 文档
一旦一切设置完成,开发者就可以与 REST API 互动。开发者可以注册用户,使其能够访问市场功能、链上资产和支付流程。这通过使用他们的 API 密钥、用户的电子邮件地址和请求体中的 referenceId
(一个唯一值,如 UUID)发起 POST HTTP 请求完成:
curl --request POST \
--url https://api.gameshift.dev/users \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-api-key: ' \
--data '
{
"referenceId": "exampleReferenceId",
"email": "user@example.com"
}
用户的信息和资产一旦注册后可以随时获取。要获取用户的信息和资产,可以向 https://api.gameshift.dev/users/{the-user-id-you-used-to-register}/assets 发起 GET HTTP 请求:
curl --request GET \
--url https://api.gameshift.dev/users/exampleReferenceId/assets \
--header 'accept: application/json' \
--header 'x-api-key:
如果成功,将返回用户资产的分页列表:
{
"data": [\
{\
"id": "dcde5bc8-b30b-46b6-b4da-0763953b2484",\
"collectionId": "36c97125-04a5-4dc3-b92a-029d74a42287",\
"attributes": [],\
"name": "Example Asset",\
"description": "Example Description",\
"imageUrl": "https://solana.com/src/img/branding/solanaLogoMark.png",\
"status": "Committed",\
"owner": {\
"address": "",\
"referenceId": "exampleReferenceId"\
}\
}\
],
"meta": {
"page": 1,
"perPage": 50,
"totalPages": 1
}
}
有关入驻过程的所有代码片段可以在 这里 找到。
作为示例,开发者可以通过向 https://api.gameshift.dev/assets 发起 POST HTTP 请求以编程方式创建链上游戏资产:
curl --request POST \
--url https://api.gameshift.dev/assets \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-api-key: ' \
--data '
{
"details": {
"description": "Example description",
"imageUrl": "https://solana.com/src/img/branding/solanaLogoMark.png",
"name": "Example Asset",
"attributes": [\
{\
"displayType": "Formatted Attribute Name",\
"traitType": "attribute-name",\
"value": "attribute-value"\
}\
]
},
"destinationUserReferenceId": "exampleUserId"
}
'
资产需要以下细节:
POST HTTP 请求还需要由 destinationUserReferenceId
字段提供的用户 referenceId
。关于游戏资产的详细处理可以在 这里 找到。
在游戏中集成区块链技术,特别是通过 Solana,代表了我们对数字世界的认知和互动方式的重大飞跃。诸如 Anchor、Turbo、Magicblock 以及 Solana Unity 和 Unreal SDK 等工具,使开发者能够创造出新型游戏方式。现在,玩家更容易开发虚拟经济,并以一种完全透明和可访问的方式在前所未有的社交网络中互动。Honeycomb 和 GameShift 等平台进一步表明了 Web3 游戏的潜力,通过简化开发过程和增强玩家参与度。
Solana 正处于这场游戏革命的前沿。Solana 的游戏社区正在稳步增长,拥有专门的黑客马拉松和新出现的游戏。Solana Labs 和 Solana 基金会主导倡议,创建教程、工具和平台,帮助发展这个新兴社区。当建立在最快的区块链上时,游戏发展的可能性是无穷的。
如果你能读到这里,非常感谢!请确保在下面输入你的电子邮件地址,这样你就不会错过关于 Solana 上新动态的更新。准备深入了解吗?加入我们的 Discord,今天就开始在最具性能区块链上构建游戏的未来。
- 原文链接: helius.dev/blog/gaming-h...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!