版本记录
版本号 | 时间 |
---|---|
V1.0 | 2019.02.16 星期六 |
前言
Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、WebGL(需要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有点像JavaScript
或C#
的子集。学习Solidity超出了本教程的范围。
程序在虚拟机内的节点上运行。虚拟机就像是在节点上的主操作系统内运行的独立操作系统。该虚拟机是EVM(Ethereum Virtual Machine)
。 EVM有助于防止程序执行诸如擦除节点硬盘驱动器之类的坏事。 EVM还提供程序运行的标准环境。节点可能使用Windows
或Linux
作为其主要操作系统,在任何一种情况下,都将提供相同的标准化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
Nethereum
是Ethereum
的开源.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
网络上设置了MetaMask
和Ethereum
帐户。 是时候告诉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,感兴趣的给个赞或者关注~~~