大表姐——Cocos 引擎生态总监,从事游戏行业9年。在市场热门游戏品类中均有深厚的研发经验,曾任《乱江湖》、《捕鱼达人》系列等爆款游戏主程,现主要负责引擎研发、游戏产品更新,统筹 Cocos 生态拓展。

说到游戏引擎Cocos,相信大家一定不会陌生。从Cocos2d-x第一个版本到现在,Cocos历经了11年的发展,目前是国产引擎中的领先者,并且在全球拥有150万的注册开发者,30万的月活跃开发者,遍布全球超过 203个国家和地区,使用Cocos引擎制作的游戏及应用覆盖超过16亿玩家设备。像“刀塔传奇”、“ COK(列王的纷争)”、“ 梦幻西游”、“ 动物餐厅”、“最强蜗牛”等知名游戏,都是基于Cocos引擎研发的。

游戏引擎被称为“中间件”,是因为它们向游戏开发者提供了一系列可视化开发工具和可重用组件,并集合了游戏开发所需要的全部核心功能。这些工具通过与开发环境进行集成,方便开发者简单、快速进行数据驱动方式的游戏开发。为了提高游戏开发人员的开发效率,引擎开发者会开发出大量游戏所需要的软件组件。

Cocos是100%开源的、轻量的、易用的跨平台引擎。许多优秀的开源项目例如前端三大框架 Angular、React 和 Vue 均已支持 TypeScript ,Angular2 和 Vue 3.0 都是直接用 TypeScript 开发的!大多数第三方JavaScript 库都提供了对TypeScript 的支持。

作为全球领先的2D &3D数字内容开发引擎,Cocos具备完整开发大型3D游戏所需的全部能力,那么Cocos具体都有哪些3D技术能力呢?

 1 

Deferred Shading延迟渲染

前向渲染是大多数引擎使用的标准,在绘制物体的时候会立即进行光照计算,在场景中,每渲染一个物体,都会考虑所有光源对它的影响,然后再渲染下一个物体,以此类推。传统的前向渲染思路是,正常把物体从头到尾按流程渲染到render target.。其主要缺点就是光照计算跟场景复杂度和光源个数有很大关系。假设场景里有 n 个物体,m 个光源,且每个物体受所有光源的影响,那么复杂度就是O(m*n)。由于最终看到的画面都是 2D 的,只能看到有限的像素数,理论上只要处理最终可以看到的像素就够了,多余的处理是浪费的。而延迟渲染就是为了解决这样的问题而诞生。

去年6月, Cocos Creator v3.1 中,Cocos 和华为 HMS CoreCG Kit 团队合作,实现了延迟渲染管线。延迟渲染管线改变了渲染物体的方式,在延迟渲染管线里,物体会先被绘制到G-Buffer中,这样可以获得渲染到某个像素的最终物体的所有信息,在下一个渲染pass里面就可以根据G-Buffer里面的信息进行光照计算,这个步骤里就只需要进行一次光照计算。因此,如果场景里有 n 个物体,m 个光源,复杂度仅为 O(n+m)。

因此,可以简单总结一下延迟渲染的优缺点:

  • 优点:只渲染可见像素,去除无用计算;对后处理支持良好;对使用大量光源的场景优势很明显。

  • 缺点:读写 G-buffer 的内存带宽用量大;对透明物体的渲染存在问题;对多重采样抗锯齿(MSAA)的支持不友好。

 2 

Light Culling 光源剔除技术

图片中可以看到开启灯光和关闭灯光的渲染差别,尤其是在色彩以及细节方面。在整个场景中有上百个这样的光源,即使有了延迟渲染管线,每个像素对所有光源都进行一次光照计算这样的计算量也是很大的。但是不是所有的光源都会影响到像素,尤其是在很多光源照射范围比较小的时候,我们需要剔除掉影响不到像素的光源。按照距离选取离像素最近的几个光源来渲染。在demo 里面我们的光源基本都是静态的光源,也就是不会移动的,我们只需要在场景初始化的时候将整个世界在 3D 空间里面划分成 16 x 16 x 16 的格子。接着计算每个光源到格子的距离,将能影响到格子并且最近的几个光源(这个数量可以控制)的信息放到格子中。这样的在光照计算阶段的时候就可以根据GBuffer 中世界坐标信息计算出当前像素所在的格子,然后只需要计算格子里存储的光源信息就可以。

 3 

Reflection Probe

我们通常还需要通过计算周围环境对物体的影响来增加渲染的真实感,比如街上的水滩会倒映出旁边的墙体,房间里的镜子会反射出房间里的家具等。一个常用的实现方法是通过将整个世界烘焙到一张环境贴图中,渲染镜面的时候根据视角跟物体表面法线计算出反射方向,从环境贴图中读取反射方向的光照信息,整合到光照计算中。

在手机端上出于性能的考虑一般都只用一张天空盒作为环境贴图,或者一整个世界烘焙出一张环境贴图。但是环境中显示的反射就可能会比较容易穿帮,比如镜子里反射出来的物体可能是穿过好几堵墙外的物体。为了真实感尽可能在不同的区域中放置反射球,每个反射球只烘焙这一个区域中的环境信息。当世界中的反射球比较多的时候又会出现上面多光源中碰到的问题,我们应该尽可能只计算影响到当前像素的反射球信息。利用已有的Cluster Light Culling 逻辑,很容易就可以扩展实现 Cluster Reflection Probe 的逻辑。问题是每次渲染中贴图的数量是有限的,如果分开存储每个反射球的环境贴图,数量是肯定不够的。一种方法是把多张cubemap 上传到 3d 贴图中,一张 cubemap 就是 3d 贴图中的一个 z 分量。一种方法是把多张 cubemap 合起来打到一张cubemap atlas 上,但是反射算法得自己写,并且很容易采样到不相关像素造成画面溢出。

 4 

Cocos Runtime

Cocos Runtime已经成为轻量化运行环境中的行业默认标准,也是针对多源异构设备,提供流畅、3D化、高效率低成本工具中的首选。

《抢金币》中,游戏端会被放置在智慧屏中运行,而手机仅作为手柄实现操控。当游戏开始时,智慧屏会弹出设备选择页面,选中附近的华为手机作为手柄输入端,建立连接,初始化设备。建立连接之后,智慧屏会通过senDataToRemote接口来告知手机端作为控制器可进入游戏状态。而手机端作为手柄则通过onRemoteRequest接受游戏可开始操作的信号,开始发送操控数据给智慧屏。

官方表示,在整体游戏过程中,所有操控数据都可以通过这两个接口进行传输和反馈,实现捡金币、捡锤头及抢金币的游戏逻辑。

Cocos充分利用HarmonyOS“分布式技术”带来的设备流转和协同的便利性,多设备协同的游戏模板,让开发者可以通过该模板,快速创建支持多设备协同的游戏或者应用。带来更多有趣应用和游戏体验场景以及全新的互动模式。

从移动游戏出发,Cocos引擎不断致力于为实时渲染的数字交互内容提供完善的技术支持和行业解决方案。经过多年发展,Cocos 已经成长为横跨多领域的普适性工具,基于Cocos引擎创建的内容场景涵盖了在线教育、智能座舱、XR、互动营销、数字孪生、教育、工业4.0等领域。

在虚拟数字人场景,Cocos目前已经实现创造虚拟人所需的建模、口型、动捕、渲染、AI接入五大关键技术,帮助开发者创造足够逼真的3D形象。

智能汽车领域,Cocos 在ADAS,HMI 等方面已经有了方案积累,在人与车、车与外界的不同场景上实现了功能互动,可助力智能座舱打造全新的 HMI、VPA、自动驾驶可视化、游戏内容等。Cocos还打造了服务主机厂、Tier 1、车联网企业等智能座舱 PaaS 服务平台,基于 Cocos 3D 渲染引擎打造的多模态交互智能座舱产品也将陆续推出。

目前 XR 项目可通过Cocos 引擎以源码的方式开发,未来还将帮助开发者快速完成 3D 向 VR 版本的转化。在率先落地的虚拟展会场景,Cocos 已与法国智奥会展集团达成了深度战略合作,并已服务于ChinaJoy Plus 等多个线上展会。

在线教育领域,Cocos 推出了面向教育从业者的Cocos ICE 课件编辑器,这是一款无需编码,即可快速上手的互动课件编辑器,强大的兼容性,可定制化的特性能满足绝大多数教育机构的需求,已获得多家教育领域龙头企业青睐,Cocos已经占据该领域中国市场超过 90 %的份额。

想要了解更多Cocos游戏引擎,8月19-20日深圳华侨城洲际,届时大表姐将在2022K+全球软件研发行业创新峰会上与大家分享《Cocos:高效赋能游戏研发,开源拓宽应用生态边界》,帮助游戏开发者极大提升游戏开发效率。

同样的游戏行业,腾讯游戏海外发行技术部数据平台总监周东祥将跨国连线Databricks资深专家/解决方案架构师王洋,于明晚八点在K+Talk直播间与大家共同探讨“多云环境下的数据中台”。

感兴趣的同学赶快扫码预约免费观看直播吧!

覆盖16亿玩家的游戏引擎都有哪些3D技术呢?相关推荐

  1. 探索开发一个游戏引擎需要那些知识和技术

    探索开发一个游戏引擎需要那些知识和技术 说到游戏引擎我们可能会想到Unity3D,虚幻引擎等.可是我们对于开发一个游戏引擎了解甚微,作为一名游戏开发者在开发游戏的同时我觉得也有必要了解并熟知如何开发一 ...

  2. 游戏引擎中的通用编程技术

    你是否正在考虑构建一个游戏引擎呢?你对如何构建一个游戏引擎是否已经有了一个明确的 计划呢?你是否已经对如何组织游戏引擎各个模块之间的关系有了一个通盘的考虑?如果没有, 那么本文将对你建立一个良好的游戏 ...

  3. 记录一次大厂的游戏引擎工程师的两次技术面试

    写这篇文章的起因 最近参加了某大厂的游戏引擎工程师校招.首先这次笔试面试我觉得是对我自学的一种肯定.非常感谢某大厂的两位面试官,感觉人都很NICE,虽然是视频面试,但是能够感受到某大厂这家公司的优秀文 ...

  4. 游戏引擎unity3d_安装Unity 3D游戏引擎

    游戏引擎unity3d Game development requires the use of an IDE along with one or two programming language(s ...

  5. Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎

    编辑本段简介 Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, And ...

  6. 3D游戏引擎剖析【较全面】

    转自:http://blog.csdn.net/is01sjjj/article/details/430125 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了 ...

  7. 游戏引擎全剖析(一)

    第1部分:  游戏引擎介绍,  渲染和构 造3D世界 介绍 自Doom游戏时代以来我们已经走了很远. DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎&quo ...

  8. 转:3D游戏引擎技术剖析

     转自 http://blog.csdn.net/jbjwpzyl3611421/article/details/12681047 3D游戏引擎技术剖析 分类: Unity3D2013-10-13 1 ...

  9. 【转】游戏引擎剖析(Game Engine Anatomy 101)

    游戏引擎剖析(Game Engine Anatomy 101) 原文作者:Jake Simpson 译者: 向海 Email:GameWorldChina@myway.com 英文原版下载 : 第1部 ...

最新文章

  1. Kubernetes基于Metrics Server的HPA
  2. zookeeper-一个关于paxos的故事
  3. caffe2安装篇(二) ubuntu16.04 安装方法
  4. [转]CTO谈豆瓣网和校内网技术架构变迁
  5. Nginx应用场景之HTTP服务器
  6. 在C++中,你真的会用new吗?
  7. 【转载】Linux安装nginx
  8. OpenGLGamma校正
  9. 博物馆施工组织设计方案
  10. 深度总结,带你玩转 NVIDIA GPU
  11. 【安全】如何防止他人恶意调试你的web程序
  12. 修改java游戏分辨率怎么调_怎么修改jar游戏的分辨率
  13. Web前端开发:HTML、CSS
  14. 如何设置计算机自动连接宽带,宽带连接怎么设置,怎么设置宽带自动连接
  15. 某游戏公司测试工程师面试题
  16. 异步处理需要消息补偿闭环
  17. 小小总结—— 数字删除
  18. Linux下安装免费杀毒软件---ClamAV
  19. BA无标度网络(一):规则网络生成
  20. 经济危机下看SaaS厂商的突围策略

热门文章

  1. 山东省2022 年专升本 计算机大纲(新一代信息技术)
  2. 【Semantic框架学习日志】(7)segment的使用
  3. c# 第二节 c#的常用IDE环境
  4. 好评较高的图片转文字软件免费的有哪些?看看这篇文章就知道了
  5. cad自定义菜单cui_CAD中如何制作自定义菜单
  6. 黄金3月...人才招聘高峰期,找工作真的有这么难吗?
  7. 圆与三角形(圆与三角形是否相交)
  8. Java多线程----java 对象锁
  9. CGB2202二进制
  10. 70-C语言-判断7的倍数或者含7的数