链游开发公司

简介: 现在的区块链游戏即为一类特殊的dApp,拥有更复杂的智能合约(后端)与更精美的前端,而NFT可以为游戏中的物品提供所有权记录,促进游戏中的经济发展,甚至可以在游戏完成后将其出售来获取利益,因为NFT可以超越游戏本身,始终存在于区块链上。

与传统的一般电子游戏相比,区块链游戏有着以下特点:

  1)去中心化,区块链游戏的所有执行代码和游戏数据都存储在区块链上,由于区块链分布式账本的特性,这意味着游戏运行方式是完全开放透明的.

  2)资产所有权,玩家对游戏内资产的所有权层级在游戏之上,也就是说,即便游戏不再更新、运营,甚至不再有玩家参与游戏,但是玩家在游戏中获得的虚拟资产仍然永久存在于游戏所依托的区块链中,只要资产存在市场,就可以出售其获取代币。

  3)游戏性不同,从游戏的角度看,区块链游戏的优势是其建立在区块链上所获得的天然经济体系,潜在的盈利能力使得老玩家具有粘性,也能吸引新玩家的加入。另一方面,由于区块链的分布式账本在处理数据时,必须经过验证、记账、存储、维护和传输等一系列操作,且是在去中心化的网络上完成,导致处理所需要的时间较之中心化网络更长,去中心化属性与高性能、低延迟难以兼得,意味着区块链游戏在即时响应的性能上较弱。
  静态物体的核心类是UStaticMesh,它有两个成员变量分别是FStaticMeshSourceModel以及FStaticMeshRenderData。FStaticMeshSourceModel包含了FMeshDescription数据,而FMeshDescription数据则是由FBX文件解析得来的。换句话说FStaticMeshSourceModel是对FBX原始数据的一份拷贝,并对其进行了整理。

  FStaticMeshRenderData是供UE4引擎渲染的数据,它由两个重要的部分组成,分别是FStaticMeshLODResourcesArray和FStaticMeshVertexFactoriesArray。

  StaticMesh的每一层LOD都要生成对应的渲染资源,FStaticMeshLODResourcesArray数组包含了所有LOD层的FStaticMeshLODResources。FStaticMeshLODResources中包含了FStaticMeshVertexBuffers及各种Index Buffer。FStaticMeshVertexBuffers中包含了FPositionVertexBuffer,FPositionVertexBuffer是由FVertexBuffer继承而来的,而FVertexBuffer中包含了图形API的渲染数据FRHIVertexBuffer,因为我调试使用的是DX12,所以对应的实际资源是FD3D12VertexBuffer。FPositionVertexBuffer中存储了cpu端的数据,FD3D12VertexBuffer中存储了GPU端使用的ID3D12Resource资源。

  由流程图中可以看到FPositionVertexBuffer数据是由FMeshDescription转换而来的,这个过程是在逻辑线程中完成的,而创建ID3D12Resource资源则是在渲染线程中执行,因为逻辑线程中保证了提交指令的顺序,所以渲染线程会先创建资源,然后才会使用资源。

  FStaticMeshVertexFactoriesArray中包含了每一个LOD层的VertexFactory,VertexFactory中包含了多个FVertexStream,每一个FVertexStream对应了一个FVertexBuffer,这个FVertexBuffer就是上面创建的ID3D12Resource资源。另外每一个FVertexStream还对应了一个FVertexElement,VertexFactory会根据FVertexElement创建顶点描述资源,也就是DX12的D3D12_INPUT_ELEMENT_DESC,具体流程可以参考上面的流程图。

  资源准备完毕后,我们看看这些资源是如何被渲染的。对于静态物体,在创建Actor的时候渲染指令就会生成。创建Actor的时候会创建UPrimitiveComponent组件,这个组件代表actor会在场景中渲染。UPrimitiveComponent组件中包含了UStaticMesh。UPrimitiveComponent是逻辑线程使用的组件,FPrimitiveSceneInfo是渲染线程使用的组件,因此中间加了一个FPrimitiveSceneProxy来做数据的传递。逻辑线程会将新创建的FPrimitiveSceneInfo加入到FScene中。
  逻辑线程Tick的时候会调用ENQUEUE_RENDER_COMMAND(UpdateScenePrimitives)命令调用渲染线程处理场景中增加,更新或删除的FPrimitiveSceneInfo。根据FPrimitiveSceneInfo中的数据进行Batch合并,将场景中的物体组织成FStaticMeshBatch,而FStaticMeshBatch则会转变成FMeshDrawCommand供底层渲染。对于静态物体来说FScene会将FMeshDrawCommand缓存起来。

  不同的Pass及不同的变体会生成不同的FMeshDrawCommand。UE4中的Pass是写死的,因此想要扩展UE4中的Pass必须要改UE4源码。

  动态物体每一次tick的时候都会进行Batch的合并以及生成对应的FMeshDrawCommand,当然这些动态物体必须是通过可见性剔除留下的物体。

  最后每一个FMeshDrawCommand会调用SubmitDraw()将渲染指令加入到RHICmdList中,RHI线程会读取RHICmdList指令将其转换成对应图形API的操作。

相关文章
|
6月前
|
存储 人工智能 物联网
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
|
8月前
|
存储 算法 安全
元宇宙链游开发丨盲盒系统开发技术方案(成熟技术)
智能合约作为一种计算机技术,不仅能够有效地对进行处理
|
安全 区块链
区块链Gamefi链游(游戏)开发丨Gamefi链游(游戏)系统开发技术实现原理丨成熟技术丨Gamefi链游开发源码运营版
 链游,又称“Gamefi”,字面理解就是区块链游戏。Gamefi即game+finance,字面理解就是游戏化金融。
|
区块链 Windows
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
118 0
|
存储 安全 调度
NFT链游项目系统开发技术方案丨NFT链游铸造定制开发技术
NFT链游项目系统开发技术方案丨NFT链游铸造定制开发技术
103 0
|
存储 算法 区块链
链游系统开发(Gamefi链游开发详情)丨NFT链游系统开发(元宇宙游戏开发源码)
 智能合约是运行在区块链系统可复制、共享账本上的计算机程序,可以处理信息,接收、储存和发送价值。基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。
|
存储 算法 区块链
链游系统丨链游系统开发(区块链游戏开发定制)丨链游开发源码交付
  智能合约是运行在区块链系统可复制、共享账本上的计算机程序,可以处理信息,接收、储存和发送价值。基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。
|
NoSQL Redis 容器
浅谈泰山众筹%系统开发技术(成熟技术开发)
浅谈泰山众筹%系统开发技术(成熟技术开发)
108 0
|
架构师 区块链
CryptoMines链游系统开发
NFT是Non-FungibleTokens的缩写,意思是不可互换的代币,也称为非同质代币,就像艺术品一样,每件都独一无二。基于区块链技术的去中心化、防篡改、时间戳等技术优势,将链下物品价值对标NFT,能实现艺术品所有权确权且交易可查询。现阶段NFT主要有三种底层协议标准,分别是ERC721、ERC1155及ERC998,三种底层协议标准之间存在差异。
CryptoMines链游系统开发
|
存储 安全 算法
NFT链游系统开发的解决方案(币安英雄系统开发)
互联网的普及让手游成为了新的焦点,许多好的手游能创造出更大的价值,但传统手游的虚拟装备是不能交易的,这让玩家的体验感没能更好的体现出来,NFT开发的链游打造的是可交易的平台,优化了玩家不能交易装备的弊端。 NFT是区块链技术发展的产物,要想做好交易首先要解决的就是信任问题,同属与区块链技术开发下的dapp能为交易提供智能合约,买卖在符合条件的情况下才可以进行,打破的不止是信任,还可以让交易变得简易、安全。