Unity强化篇(四) —— Unity 和 Ethereum(一)

版本记录

版本号 时间
V1.0 2019.02.16 星期六

前言

Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至WindowsMacWiiiPhoneWebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。网页游戏 坦克英雄和手机游戏王者荣耀都是基于它的开发。感兴趣的看下面几篇文章。
1. Unity强化篇(一) —— 如何使用Vuforia制作AR游戏(一)
2. Unity强化篇(二) —— 适用于Unity的HTC Vive教程(一)
3. Unity强化篇(三) —— 适用于Unity的HTC Vive教程(二)

开始

首先看下写作环境

C# 3.5, Unity 2018.2, Unity

你知道Bitcoin,但你知道它的相对性,Ethereum,以及它为游戏提供的潜力吗?

在本教程中,您将了解为什么Ethereum对游戏开发人员有趣,以及从游戏开发人员的角度来看它是如何工作的。

在本教程结束时,您将了解:

  • 为什么Ethereum网络会破坏游戏产业。
  • Ethereum网络如何在高层运作,以及如何与之互动。
  • Unity游戏如何使用Nethereum库连接到Ethereum网络。 您将看到一个演示项目商店,并从Ethereum测试网络中检索高分。

注意:本教程假设您熟悉Unity,并且您具有C#的中级知识。


Why Ethereum Is Interesting

那么,作为游戏开发者,你为什么要关心Ethereum呢? 要理解,您需要考虑游戏生态系统。 换句话说,您需要考虑当今如何玩游戏以及如何存储数据。

1. The Game Ecosystem Today

当您玩游戏时,您将生成所有类型的数据。 这些数据包括游戏进度,成就,朋友列表,项目和许多其他内容。 PlayStation Network,Xbox Live,Steam等众多第三方为您存储这些数据。 这些数据与您有关,但您并不拥有它。 在大多数情况下,访问此数据的唯一方法是根据第三方提供商设定的条款和条件。 您还必须信任,或者更确切地说,希望这些提供商不会被黑客入侵或关闭商店,这种情况比您可能意识到的更频繁 - 特别是一旦他们变得有利可图。

2. The Game Ecosystem With Ethereum

另一方面,Ethereum网络不需要第三方运行或监督它,而且它非常安全。 此外,通过将您的游戏数据存储在Ethereum中,您可以收回数据的所有权。

但是,Ethereum并不是免费的。 如果没有第三方支付费用,游戏玩家将需要向Ethereum网络支付少量费用来存储他们的数据。 一旦你理解了Ethereum可以提供的东西,你就会同意这并不是一件坏事。

3. Opportunities In The Game Ecosystem With Ethereum

一旦您的游戏数据在Ethereum中并由您控制,就会出现绝佳的机会。 每个游戏,无论其平台如何,都可以访问您的游戏数据。 想象一下,Xbox游戏为您提供免费太空飞船,因为您在PlayStation上拥有另一款游戏中的物品!

更令人兴奋的是,因为您拥有自己的物品,所以可以将它们换成不同游戏和平台的其他物品。 您甚至可以出售您的物品而无需获得控制您数据的任何第三方的许可(因为没有第三方!)。 想象一下,在另一个平台上,将某个免费宇宙飞船与另一个游戏中的物品进行交易。

在详细了解Ethereum的工作原理之前,您需要熟悉演示项目。


Starter Project

在Unity中打开项目,然后打开名为main的场景,该场景位于Assets \ RW \ Scenes \中。

注意:您将收到有关未分配字段的警告。 现在,你可以忽略这些;它们将在本教程结束时消失。

查看游戏对象层次结构:

  • Main Camera:摄像头。
  • EventSystem:处理事件和输入。
  • GameplayController:所有游戏逻辑。
  • UI Gameplay:用于说明的UI。
  • HighScoreController:与高分和Ethereum相关的所有逻辑。 您将在本教程中进行的唯一编辑是附加到此GameObject的脚本。
  • UI HighScore:高分计时器,滚动视图和刷新按钮的UI。
  • Arena:游戏对象。

Play按钮。

你扮演Ether the Elephant。 你的目标是避免与其他动物接触。 你避免它们的时间量转换为你的分数。

看着游戏的界面,比赛场地在左边;在右边,有一个空的高分表和一个当前什么都不做的刷新按钮:

在本教程的其余部分中,您将构建UI项目并将游戏与存储高分的Ethereum测试网络集成。但首先,你必须了解Ethereum的工作原理。您还需要获得一个Ethereum帐户。


How Ethereum Works

本节介绍Ethereum网络并有意避免使用技术术语。

Ethereum很年轻。它于2015年首次上线。其发展阶段类似于互联网在20世纪90年代初期的情况。就像早期的互联网一样,Ethereum也有批评和挑战。

Ethereum使用通过互联网链接在一起的计算机网络。每台计算机都是一个节点。简单程序在这些节点上运行,它们通常用称为Solidity的语言编写。 Solidity有点像JavaScriptC#的子集。学习Solidity超出了本教程的范围。

程序在虚拟机内的节点上运行。虚拟机就像是在节点上的主操作系统内运行的独立操作系统。该虚拟机是EVM(Ethereum Virtual Machine)。 EVM有助于防止程序执行诸如擦除节点硬盘驱动器之类的坏事。 EVM还提供程序运行的标准环境。节点可能使用WindowsLinux作为其主要操作系统,在任何一种情况下,都将提供相同的标准化EVM:

程序必须非常简单。他们可以互相通信,但不应移动大量数据或进行大量处理。合适的事情是记录资产所有权,投票,拍卖或交易等。一个好的经验法则是程序可以像一个好的可编程计算器一样复杂。

Ethereum网络有一个“心跳”,每15秒左右,网络上所有符合条件的程序都会运行并存储结果。


May You Live In Interesting Times

当然没有任何事情可以免费发生。程序的执行花费了想要执行它的人很少的费用。这些费用分配给运行节点的人员。运行节点的人称为矿工(miners),并且为了向网络提供计算能力而获得费用。这就是Ethereum网络如何维持自身。

网络上的节点都是彼此的副本。每个节点包含与每个其他节点相同的程序和相同的数据。程序运行时,它会在该心跳期间在每个节点上运行。

这使得网络非常有弹性。如果多个节点脱机,只要一些节点幸存,网络就可以像往常一样继续运行。然而,让每个节点相同的最重要的好处与信任有关。


The Trustless Network

Ethereum网络不归任何个人或公司所有或经营。它背后的软件是开源的。任何人都可以为源代码做出贡献,并可以下载软件并设置节点。

这是否意味着您必须相信所有加入网络的人都表现得很好而不是篡改您的程序代码或程序结果?答案很肯定是“不!”。Ethereum网络保证您的程序在您编写程序时运行,不会被篡改。它还保证程序结果将完全按照程序生成它们进行存储。这是Ethereum提供的杀手级功能!

此信任功能如何工作的细节是Ethereum变得复杂并且超出了本教程的范围。然而,基本思想是它使用来自数学分支的技术,称为密码学(cryptography),以及一些聪明的算法。矿工的部分活动是验证与网络的交互遵循Ethereum规则。

令人惊讶的结果是,有一个由没有中央权限的陌生人运行的计算机网络,您可以信任网络运行您的程序,就像您编写它们一样,不会被篡改!


Fees

最后要了解的是费用。简单的网络读取是免费的。任何导致网络程序或数据更改的内容都需要付费。这笔费用必须由任何(或其他)想要改变的人支付。执行程序需要花费一大笔费用,该费用与它需要多少CPU周期以及它所改变的持久数据存储量有关。

费用各不相同,取决​​于很多因素,但在撰写本文时,它只是几美分。给矿工的网络费用不以美元支付。费用以虚拟货币(称为“游戏内”货币)支付,称为以太币(Ether)。Ether是Ethereum网络中不可或缺的一部分,它可以在许多在线交易所进行交易。


Some Terminology

以上解释避免使用技术术语。当您阅读有关Ethereum的其他资料时,您需要了解这些技术术语。

  • Ethereum是一个分散的网络,因为它没有控制网络的中央服务器。
  • 矿工们就方案的产出应该达成什么样的方法是共识机制(consensus mechanism)
  • 网络将所有数据和程序存储在区块链(blockchain)中,区块链是一种防止篡改的特殊数据结构。
  • Ether是虚拟货币系列的一部分,称为加密货币(cryptocurrencies)
  • 在网络上运行的程序是智能合约(smart contracts)dApp(“分布式应用程序”的缩写)。
  • 15秒网络“心跳”是阻止时间(block time)

理论已经很多了!是时候弄清楚将Nethereum库添加到演示项目中了。


Installing Nethereum

NethereumEthereum的开源.NET库。它允许Unity与Ethereum网络进行通信。

转到Releases page of the Nethereum GitHub project,找到标题为2.2.1 Unity3d的部分。下载名为Nethereum.Unity.zip的文件。

在项目中,在Assets \ RW \下,创建一个名为Plugins的新文件夹。解压缩zip文件,并将内容复制到新创建的文件夹中。您的项目现在应该如下所示:

现在您将了解帐户和交易,您将获得一些测试Ether


Ethereum Accounts and Transactions

现在是时候深入了解你在图4中看到的EVM。在EVM中有许多称为帐户的对象。帐户可以执行代码,传输Ether,维护内部数据存储并相互通信。所有帐户都有一个地址,这是一个唯一标识它的长十六进制数字。所有帐户都有一个私钥,也是一个长十六进制数。此私钥是访问该帐户的密码。

默认情况下,EVM没有生命。除非有人发送交易,否则什么都不会发生。事务就像是向帐户发送消息的消息,例如传输Ether或执行代码。收到消息后,Ethereum网络就会生效并处理该事务。长十六进制数唯一标识事务。


Getting An Ethereum Account

设置的最简单方法是使用名为MetaMask的浏览器插件。 MetaMask适用于Chrome,Firefox和Opera。它允许您使用Web浏览器访问Ethereum网络。遗憾的是,Safari没有MetaMask版本,因此如有必要,请先安装Chrome。要安装MetaMask,请按照MetaMask site上的步骤操作。

首先,选择浏览器扩展名:

然后,将其添加到Chrome

接下来,确认添加到Chrome

您的浏览器工具栏中会出现一个小狐狸图标;单击该图标以启动MetaMask:

拒绝尝试新MetaMask beta版的机会:

接受条款和条件以及隐私声明:

MetaMask使用单词DEN表示您的Ethereum帐户集合。 在下一个屏幕上,输入新密码并确认:

如果您忘记了刚输入的密码,可以输入seed phrase来恢复帐户。 因此,如果您无法保证密码的安全,请至少将seed phrase保存在安全的地方:

MetaMask现在可以使用了,但它默认为实时主网络(Main Network)。 有几个测试网络;在本教程中,您将使用Rinkeby

单击顶部的网络名称:

从列表中选择Rinkeby网络:

MetaMask为您创建第一个帐户,并显示零Ether的余额。 如果要重命名帐户,请将鼠标悬停在帐户名称上,然后单击编辑:

呜啊! 您现在已经在Rinkeby网络上设置了MetaMaskEthereum帐户。 是时候告诉Unity这个好消息了。

通过单击三重省略号并选择Copy Address to Clipboard,从MetaMask复制您的地址:

在主场景中,找到游戏对象HighScoreController。 在检查器中,将Player Ethereum Account更改为刚从MetaMask复制的值。

通过单击三个点并选择Export Private Key,从MetaMask复制您的私钥(有时缩写为PK):

MetaMask会要求您确认密码。 此时,验证您是否在Rinkeby测试网络而不是实时网络:

然后,复制私钥:

在主场景中,找到GameObject HighScoreController。 在检查器中,将Player Ethereum Account PK更改为刚从MetaMask复制的值。

您准备好将一些Ether加入您的帐户吗?

后记

本篇主要讲述了Unity 和 Ethereum,感兴趣的给个赞或者关注~~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容