链游开发稳定版丨链游系统开发详细及方案丨链游源码交付

简介: shader中传入面片的中心点的世界坐标,以及摄像机的right和up在world space的方向,中心点直接沿着right和up方向计算四个顶点的世界坐标,定点数据中包含了每个顶点的偏移信息。然后乘以ViewProjection矩阵,作为输出。

区块链+游戏的发展潜力

  基于区块链的去中心化、不可篡改、共识算法、匿名性与跨平台等特性,区块链+游戏将带来如下变革:

  1.去中心化运营

  游戏中的各系统设置使用智能合约技术开发,游戏数据存储在区块链上,不依赖中心化服务器;

  2.数据可信任

  结合区块链技术开发游戏,重要的数据存储在区块链上,游戏运营方无法随意篡改与删除游戏数据,稀有道具内容、数量及抽签概率等算法完全公开,使得游戏数据透明化,可信任化,成为一个可信任的去中心化游戏应用;

  3.虚拟资产确权

  玩家游戏中的商品、道具使用区块链技术存储于区块链上,而不是存储在游戏厂商的数据库里,真正做到虚拟商品所有权属于玩家,已经购买的虚拟资产如皮肤、道具、视频等可完全根据玩家自身意愿进行调取、交互、转让等行为,不再受厂商限制;

  4.加强安全保护

  基于区块链技术有高冗余分布式共识,用户信息有强隐私保护和强安全保护,用户的信息和虚拟资产都存储区块链上,由用户持有私钥,用户数据能够得到有效保护;

  5.打破孤岛经济

  在游戏中使用加密数字资产作为结算方式,玩家的数字资产基于区块链上可在各游戏平台流通,而不再局限于单一游戏内,有望形成多游戏生态互通;

  关于billboard技术,原理就是计算出来一个始终朝向摄像机的面片,可以在CPU里计算,也可以在GPU里实现。应用的场合很多:

  游戏角色的头顶文字,血条

  场景的树,草

  特效粒子片

  3d场景里的2d角色

  world space计算

  思路:shader中传入面片的中心点的世界坐标,以及摄像机的right和up在world space的方向,中心点直接沿着right和up方向计算四个顶点的世界坐标,定点数据中包含了每个顶点的偏移信息。然后乘以ViewProjection矩阵,作为输出。

  这里有个trick的地方,就是从object space到world space是没有旋转的,只有偏移,所以摄像机在世界空间的right就是模型空间的right。MV的逆矩阵相当于View到Object的变换,转置是为了去列向量好取。

  CGPROGRAM#pragma vertex vert

  #pragma fragment frag

  struct appdata{

  float4 vertex:POSITION;

  float2 uv:TEXCOORD0;

  float2 vertexOffset:TEXCOORD1;

  };

  struct v2f{

  float2 uv:TEXCOORD0;

  float4 vertex:SV_POSITION;

  };

  sampler2D _MainTex;

  v2f vert(appdata v)

  {

  v2f o;

  //这里相当于取列向量

  float3 right=UNITY_MATRIX_IT_MV[0].xyz;

  float3 up=UNITY_MATRIX_IT_MV[1].xyz;

  v.vertex.xyz+=v.vertexOffset.xright+v.vertexOffset.yup;

  o.vertex=mul(UNITY_MATRIX_VP,float4(v.vertex.xyz,1.0));

  o.uv=v.uv;

  return o;

  }

  fixed4 frag(v2f i):SV_Target{

  //sample the texture

  fixed4 col=tex2D(_MainTex,i.uv);

  return col;

  }

  ENDCG

  unity c#中生成mesh的代码

  Vector3[]vertices=new Vector3[4]

  {

  worldPos,

  worldPos,

  worldPos,

  worldPos};

  int[]indices=new int[6]

  {

  0,2,1,0,3,2

  };

  Vector2[]uvs=new Vector2[4]

  {

  new Vector2(0,0),

  new Vector2(0,1),

  new Vector2(1,1),

  new Vector2(1,0),

  };

  Vector2[]uv2s=new Vector2[4]

  {

  new Vector2(-0.5f,-0.5f),

  new Vector2(0.5f,-0.5f),

  new Vector2(0.5f,0.5f),

  new Vector2(-0.5f,0.5f),

  };

  meshFilter.mesh.vertices=vertices;

  meshFilter.mesh.triangles=indices;

  meshFilter.mesh.uv=uvs;

  meshFilter.mesh.uv2=uv2s;

  clip space计算

  思路:还是传入中心点的世界坐标,以及4个顶点的偏移信息。把中心点转到

  clip space,然后按照偏移信息缩放。这个适用的场合是面片不随距离摄像机的远近而缩放。

  CGPROGRAM#pragma vertex vert#pragma fragment frag struct appdata{

  float4 vertex:POSITION;

  float2 uv:TEXCOORD0;

  float2 vertexOffset:TEXCOORD1;

  };

  struct v2f{

  float2 uv:TEXCOORD0;

  float3 color:TEXCOORD1;

  float4 vertex:SV_POSITION;

  };

  sampler2D _MainTex;

  v2f vert(appdata v)

  {

  v2f o;

  o.vertex=mul(UNITY_MATRIX_MVP,v.vertex);

  o.vertex.xyz/=o.vertex.w;

  o.vertex.xy+=v.vertexOffset.xy*float2(0.2,0.05);

  o.vertex.w=1;

  o.uv=v.uv;

  return o;

  }

  fixed4 frag(v2f i):SV_Target{

  //sample the texture

  fixed4 col=tex2D(_MainTex,i.uv);

  return col;

  }

  ENDCG

  view space计算

  上面两种方式都是通过传入中心点坐标到shader进行计算,但是有时候并不能获得面片的中心点坐标,比如Unity中的SpriteRenderer,这时候的思路是:把中心点即(0,0,0,1)(Object space)转到View Space,然后顶点再做偏移。

  o.pos=mul(UNITY_MATRIX_P,

  mul(UNITY_MATRIX_MV,float4(0.0,0.0,0.0,1.0))

  +float4(i.vertex.x,i.vertex.y,0.0,0.0));

  CPU计算

  思路:面片的位置发生变化,或者摄像机发生变化的时候,重新计算一下面片的旋转,让它始终朝向摄像机

  private void CalcBillboard()

  {

  if(instance!=null)

  {

  instance.transform.rotation=Camera.main.transform.rotation;

  }

  }

相关文章
|
4月前
|
存储 JSON JavaScript
链游模式系统开发搭建功能丨链游系统开发项目方案(技术成熟)
首先,NFT链游系统的开发能够实现真正的去中心化。区块链技术使得NFT链游戏能够实现真正的去中心化,这意味着所有对象都是直接交互的平等个体。这样一来,所有人都能够公平地参与到NFT链游戏中来。
|
区块链 测试技术
DAPP链游开发稳定版丨链游dapp/nft游戏系统开发成熟技术方案及源码详情
随着区块链技术的不断发展,智能合约农场在链游行业中扮演着越来越重要的角色。智能合约农场是一种基于区块链技术的应用程序,它可以帮助链游开发商快速、安全地上线定制游戏软件。本文将介绍智能合约农场在链游行业中的作用以及如何通过智能合约农场快速上线定制游戏软件。
IPPswap交易所系统开发详细指南丨需求设计丨教程方案丨源码项目
Based on the development of the IPPSwap exchange exchange exchange bottom pool LP pledge mining system you mentioned, the following is an overview of its basic process and elements
|
安全 Go
链游系统开发案例详情/NFT元宇宙链游系统开发方案项目/成熟技术/源码逻辑
Step 1: Requirements analysis and planning. At this stage, the development team needs to have in-depth communication with clients, understand their needs and expectations, and then develop development plans and project plans.
|
存储 算法 区块链
链游项目系统开发(方案设计)丨DAPP链游系统开发(案例分析)/成熟技术/区块链游戏开发/源码说明
  在区块链中,每个块包含了一定数量的交易信息和该块的唯一标识符,同时还包含了前一个块的哈希值。这样的设计保证了区块之间的顺序和完整性,一旦一个块被添加到区块链中,它就不可更改。This makes blockchain a secure and trustworthy distributed ledger that can be used to record and verify various types of transactions.
|
存储 区块链 vr&ar
链游系统开发 链游开发成本 链游开发源码
作为链游开发定制人员,对整个链上游戏开发行业动态密切关注。链游开发是互联网和社交媒体的下一次进化,利用实时 3D 技术连接物理和数字领域。
114 0
链游系统开发 链游开发成本 链游开发源码
|
区块链
链游开发丨3D链游系统开发(开发规则)丨DAPP链游系统开发(成熟及技术)丨源码
  区块链技术由此可以从多方面为企业赋能:提供可靠的共享数据,在各方之间建立信任;消除数据孤岛,即通过去中心化的,在一个网络中共享并支持获许可方访问的账本将数据集成到一个系统中;为数据赋予高度安全性
|
存储
佛萨奇2.0系统开发项目源码丨佛萨奇系统开发技术方案
佛萨奇2.0系统开发项目源码丨佛萨奇系统开发技术方案
352 0
|
存储 算法 安全
链游定制开发丨元宇宙链游系统开发详细程序丨链游开发成熟源码案例开发
 元宇宙是一个平行于现实世界,又独立于现实世界的虚拟空间,是映射现实世界的在线虚拟世界,是越来越真实的数字虚拟世界。而区块链是采用分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
链游定制开发丨元宇宙链游系统开发详细程序丨链游开发成熟源码案例开发
|
机器人 图形学
3D链游开发稳定版丨3D链游系统开发规则及详细丨3D链游源码部署(人物建模游戏开发)
首先,把Project-Standard Assets-Characters-ThirdPersonCharacter-Animation中的HumanoidIdle和HumanoidRun导入Animator,设置Speed超过一定值时进入HumanoidRun,Speed超过一定值时返回HumanoidIdle。