NFT卡牌链游开发方案丨NFT卡牌链游系统开发(稳定版)丨NFT卡牌链游源码详情

简介:  静态物体的核心类是UStaticMesh,它有两个成员变量分别是FStaticMeshSourceModel以及FStaticMeshRenderData。FStaticMeshSourceModel包含了FMeshDescription数据,而FMeshDescription数据则是由FBX文件解析得来的。换句话说FStaticMeshSourceModel是对FBX原始数据的一份拷贝,并对其进行了整理。

  现在的区块链游戏即为一类特殊的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的操作。

相关文章
|
区块链 存储
NFT链游铸造合成项目系统开发(详情方案)|NFT链游模式开发项目原理
Web3技术的兴起已经带来了我们与互联网互动方式的重大转变using(MySqlCommand cmd=new MySqlCommand(select,Conn))
|
4月前
|
区块链
NFT卡牌游戏盲盒项目系统开发模式|技术方案
智能合约通常运行在区块链网络上,这意味着它们的执行是透明的,不可更改的,并且可以被任何人查询
|
4月前
|
区块链
NFT卡牌链游盲盒系统开发详情规则|技术方案
随着区块链技术的迅猛发展,智能合约逐渐成为人们关注的焦点
|
10月前
|
安全 区块链
NFT卡牌链游合成游戏合约系统开发技术原理
区块链技术的链式结构,当链的长度不断增加时,节点需要处理的数据量也会增加
|
安全 区块链
NFT卡牌链游系统开发详情指南(区块链游戏系统开发源码)丨NFT卡牌链游系统开发运营版/需求步骤/案例逻辑/源码说明
Requirement analysis and planning: Clarify the system's goals and functional requirements. Understand the characteristics and working methods of the NFT card chain game system. Collect user requirements, define system card rules, game modes, and transaction functions.
|
安全
卡牌NFT链动链游系统开发项目方案丨航海士NAGA链游系统开发技术
卡牌NFT链动链游系统开发项目方案丨航海士NAGA链游系统开发技术
|
安全 区块链
NFT卡牌游戏链游系统开发|NFT铸造合约模式系统开发(成熟技术)
区块链技术的点对点、共同参与等特点,保障了参与者最大程度上的自由和隐私
|
供应链 IDE 编译器
NFT元宇宙卡牌游戏链游系统开发(技术方案)
  智能合约可以简化交易流程并提高交易速度。它也可以用于供应链管理、资产追踪和其他领域。随着区块链技术的发展,智能合约将成为未来发展趋势之一
|
存储 前端开发 区块链
  NFT卡牌游戏系统开发(链游搭建)
 NFT卡牌游戏系统开发是一项复杂的任务,需要涉及多个方面的技术和知识。
|
存储 JSON 资源调度
NFT盲盒卡牌游戏开发方案设计 | NFT盲盒卡牌游戏开发源码示例
NFT通过区块链技术将养成类游戏与盲盒玩法结合,通过线下盲盒购买实物获得相关人物道具,每一个人物和道具都拥有唯一的身份识别码,通过线上游戏兑换获得相关道具人物,每一个盲盒可以开出一个人物和两张道具,同一人物在游戏中可进行升级,升级分三种形态,当到达高级形态后可兑换高级形态人物模型,邮寄到家。