Solana如何改变游戏格局

  • Helius
  • 发布于 2023-12-09 10:35
  • 阅读 41

这篇文章深入探讨了 Solana 在游戏领域的革新,强调了区块链技术如何改变玩家对虚拟资产的拥有权和游戏开发者的工作方式。文章结构清晰,围绕 Web3 游戏的优势、Solana 的交易费用和高效性以及一些开发工具展开讨论,并提供了丰富的实例和资源,适合对区块链游戏开发感兴趣的读者。

Gaming: How Solana is Changing the Playfield

游戏:Solana 如何改变游戏领域

这篇文章讲述了什么?

不是你的密钥,就不是你的加密货币。这一格言,核心于加密货币的理念,对于视频游戏同样适用。将区块链整合到游戏生态中不仅仅是一次创新,而是一个范式转变,能够实现去中心化资产所有权和自主权。在这一转变的前沿是 Solana。Solana 提供最快的智能合约平台来利用 Web3 的优势。通过利用 Solana 的高速度、低而可预见的费用及低延迟能力,开发者可以创造出在其他地方无法实现的独特游戏体验。

本文探讨了区块链在游戏中的潜力 — 考察支持 Web3 游戏的论据,以及为什么游戏开发者应该考虑在 Solana 上构建。文章还讨论了如何安装、配置和使用流行的框架和平台来创建 Solana 集成游戏。

为什么选择 Web3 游戏?

对于玩家

没有其他视频游戏的收藏品能够媲美 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 AtlasAurory 的游戏在 Solana 上也取得了类似的成功。这些并不是孤立的例子。它们是一个更广泛的趋势的一部分,在这个趋势中,游戏超越了娱乐,与现实世界的经济和社会体系融合在一起。

对于开发者

Web3 游戏的出现为游戏开发者开辟了新的机会,远远超出当前游戏范式的界限:

  • 更深入的市场和信任保障:Web3 游戏创建了更深、更强大的市场。游戏开发者可以接触到一个全球观众,参与者的信任程度更高。所有游戏内所有权和交易都是可验证和不可篡改的。这得益于区块链固有的透明性和安全性。
  • 利用现有的链上程序:开发者可以轻松地将现有程序及其相关资产集成到他们的游戏中。这减少了上市时间,同时允许游戏开发者通过生态系统合作专注于创造力和创新。
  • 经济和游戏创新:游戏开发者可以设计复杂的游戏和经济循环,利用其他链上应用程序或体验。这种互联性使得创建丰富、动态的游戏世界成为可能,在一个游戏中的行动可以对另一个游戏产生影响。
  • 鼓励修改:区块链的开放性为游戏开发者提供了构建促进修改的游戏的机会。这种开放性可以导致社区驱动的创新,玩家能够参与到游戏的发展中来。这是从闭源环境转变为以合作为中心的社区开发模型。

区块链提供的不仅仅是构建游戏的平台。它们还是开辟新形式的互动数字体验的媒介。区块链为更动态、参与式的游戏生态图景铺平了道路。

为什么选择在 Solana 上构建?

低且可预见的交易费用对 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 游戏的工具

本文考察了几种流行的框架和平台,以构建 Solana 集成的游戏。为了简洁起见,我们没有涵盖一些工具,但在以下附加资源部分中提供了链接。这些包括 Godot Solana SDKPhaser 3 TypeScript 起始模板。就本文而言,我们考察了如何安装、配置和使用以下工具:

Anchor

Anchor framework

使用像 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

Anchor 文档还提供了详细的安装指南。

用法和示例

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 HahnBeeman 开发,并可以在 solana-developers GitHub 存储库 中找到。

Turbo

Turbo game engine

Turbo 是一个下一代 2D 游戏引擎和市场,旨在赋能独立开发者。它包括几个创新功能:

  • 游戏在修改代码、着色器或精灵时热重载
  • 游戏无头运行,因此你可以在远程服务器上验证游戏状态
  • 引擎运行于 WebAssemblyWebGPU,以便可以在任何平台上运行
  • 引擎的 内置 API 对初学者友好

Turbo engine’s built-in APIs

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 宏对于游戏状态管理非常有用。它定义了一个结构并提供加载和保存其状态的方法。它实现了该结构的 loadsave 方法,使用 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 cratestrike 宏来增强 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();
    ...
}

Solana 支持

Turbo 不同于其他基于 Rust 的游戏开发引擎,因为它将具有 完整的 Solana 支持。例如,它可以从 RPC 提取账户数据,并仅用两行代码解码它。它还通过 WebSockets 自动订阅账户更新,因此你的数据始终是最新的:

// 获取 Solana 账户数据
let response = solana::get_account("pubkey");

// 解码账户数据
let decoded = response.decode_anchor::();

// 现在我们可以处理链上数据!
if let Ok(data) = decoded {
    ...
}

Magicblock

Magicblock framework

Magicblock 是一个多功能的开源框架,用于构建链上游戏。它使任何人都能够在 Solana 或 SVM 上制作和玩游戏。它拥有丰富的工具集,允许开发者开发完全链上的游戏或将 Solana 集成到现有游戏中。它包括以下功能:

凭借这些功能,Magicblock 旨在抽象掉复杂性,使开发者能够专注于创建最佳的用户体验。此 MIT 许可的框架由 Magicblock Labs(即 AndreaPeak)进行维护。

Solana Unity SDK

Solana Unity SDK

来源:图表改编自 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 编辑器的多个安装,允许你在不同版本之间工作和创建新项目。在继续之前,请确保你的系统满足以下要求:

  • 操作系统:仅支持 Windows 7 SP1+、8、10 64 位版本;Mac OS X 10.13+;Ubuntu 16.04、18.04 和 CentOS 7
  • GPU:具有 DX10(着色器模型 4.0)功能的图形卡

安装 Unity 后,我们现在可以创建并打开新项目。

Package Manager window

打开新项目后,打开 Package Manager 窗口。可以在 Unity 的顶部菜单中通过 Window > Package Manager 访问。

Add package from git URL

窗口打开后,点击状态栏中的添加(+)按钮。添加包的选项将会出现。然后从菜单中选择“从 git URL 添加包”。

enter 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 存储库中还包含多个 示例脚本,从 指令解码构建交易

示例 Jupiter 实现

除了 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);

将程序移植到 Unity

开发者可以使用 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 制作的详细视频演示可以在 这里 找到。

SOAR

Solana On-Chain Achievement and Ranking (SOAR)

Solana On-Chain Achievement and Ranking (SOAR) 是一个旨在提供无缝解决方案的程序,用于管理 Solana 上的排行榜、成就、玩家档案和自动奖励分配。它支持多种功能,包括:

  • 排行榜创建
  • 成就管理
  • TypeScript 客户端支持
  • 通过交叉程序调用 (CPI) 调用与 SOAR 程序进行交互

目前正在为 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 导入所需的模块,包括 SoarProgramGameTypeGenre

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

Solana Unreal SDK

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 的推荐系统要求:

  • Windows 10 64 位,四核 Intel 或 AMD,2.5 GHz 或更快,8 GB RAM
  • macOS Big Sur,四核 Intel,2.5 GHz 或更快,8 GB RAM
  • Linux Ubuntu 18.04,四核 Intel 或 AMD,2.5 GHz 或更快,32 GB RAM

打开 Epic Games Launcher 并启动你安装的 Unreal 版本:

launch your installed version of Unreal

创建一个新项目并选择 C++ 作为项目模板:

Create a new project and select C++ as the project template

现在关闭编辑器并打开创建项目时设置的 Project Location 文件夹。然后,在根目录中创建一个新的 Plugins 文件夹:

将插件复制到 Plugins 目录。右键点击根目录中的 .uproject 文件,选择 Generate Visual Studio project files。双击 .sln 文件并使用你的 C++ IDE 打开项目。接下来,我们要打开 Source/<ProjectName>/<ProjectName>.build.cs 下的文件。将插件的名称添加到 PublicDependencyModuleNames 中。 在我们的例子中,我们要输入 Foundation

Add the plugin’s name to PublicDependencyModuleNames

将插件的名称添加到我们的 .uproject 文件中:

Add the plugin’s name to our .uproject file

关闭你的 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

Honeycomb

Honeycomb 是由 Tumi Labs 开发的协议,旨在简化 Web3 游戏开发过程。Honeycomb 是一套链上程序和状态压缩工具,处理关键的游戏生命周期功能。所有程序都旨在可互操作和模块化。这些程序还可以根据开发者的个人需求进行定制。他们的基础设施开发工具包侧重于以下核心功能:

  • 空闲玩家奖励(质押)
  • 任务(任务)
  • 战利品箱或 RNG 奖品(抽奖)
  • 公会/队伍
  • 游戏代币(托管和非托管)
  • 可变数字资产
  • 创建和管理数字资产
  • 玩家档案
  • 费用结构

他们的工具可以分为以下类别:

  • Hive Control:管理 Honeycomb 中所有权限和程序权威委派的主程序
  • Asset Hub:用于创建和管理游戏内资产的一套工具
  • Nectar Utility:一套实用工具,旨在允许 NFTs 提供独特的游戏功能,如空闲代币奖励(质押)、任务和战利品箱
  • Buzz Kit:一套帮助实现在游戏中的公会的工具。Tumi Labs 还计划在这一工具集下开发配对和游戏状态管理程序

安装

开发者可以使用其 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(&lt;keypair>);。类似地,可以使用 Honeycomb 实例上可用的 walletIdentity 函数将钱包对象 ( Solana Wallet Adapter) 注册为身份。身份可用于身份验证目的,例如签署消息或交易。

另一个有趣的示例是 HttpClient。该模块使用 AxiosFetch 便捷地处理 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

Gameshift

GameShiftSolana Labs 为游戏开发者推出的平台,通过一个 API 轻松集成 Web3 元素。它旨在在享受 Solana 游戏优势的同时,便于创建用户友好的 Web2 体验。GameShift 通过处理所有Gas费用、区块链交互和钱包,使 Web3 生态系统中的用户体验更加清晰。GameShift API 有四个垂直领域:

  • 资产创建:使用结构化元数据铸造游戏资产
  • 资产交易:在即将推出的品牌市场中以美元买卖资产
  • 支付:支持 170 多个国家的信用卡支付和支付处理集成,并提供 100% 的退单保护
  • 钱包资产自托管:允许玩家在非托管钱包中持有和交易他们的资产(即,没有密码或种子短语!)

开发者可以通过在 GameShift 控制台创建一个帐户,设置一个组织,向其组织中添加开发者,添加游戏并管理他们的开发者 API 密钥来开始使用 GameShift。整个过程概述可以在 这里 找到。

法定交易需要商户帐户。可以通过以下两步创建帐户:

  • 了解你的业务 (KYB):要求开发者提供有关其业务的信息,以维护对货币传输法律的合规性。目前,GameShift 仅支持对美国境内银行账户的法定结算
  • 设置法定结算帐户:开发者必须在准备启用生产环境中的法定支付时,联系 GameShift 获取商户 onboarding 表单链接。KYB 信息通过此表单设置。验证可能需要几分钟,但某些案例可能需要手动审查

所有 GameShift 活动都在组织内进行组织:

Gameshift activity

来源: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"
}
'

资产需要以下细节:

  • description- 一个 64 字符的字符串,提供资产的信息
  • name- 一个 32 字符的字符串,用于标识资产
  • imageUrl- 指向表示资产的图像的直接链接
  • displayType- 可选的格式化标题
  • traitType- 可选的属性名称
  • value- 可选字段,表示属性的值

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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/