3D 小游戏「卷」出新高度!这款 3D MMO 到底有多强?
Shader 动画应用场景
其核心就是在 Shader 中,对顶点位置和 UV 进行干扰,从而借助 GPU 实现高性能动画。如下所示:
void main () { StandardVertInput In; CCVertInput(In); mat4 matWorld, matWorldIT; CCGetWorldMatrixFull(matWorld, matWorldIT); vec4 pos = In.position; vec4 normal = vec4(In.normal,0.0); float scale = 0.002; float speed = .5; //加入扰动 float disturbance = sin(cc_time.x*speed pos.y) * scale; pos.xyz = normal.xyz * disturbance; pos = matWorld * pos; v_position = pos.xyz; CC_TRANSFER_FOG(pos); vec4 position = cc_matView * pos; v_normal = normalize((matWorldIT * normal).xyz); #if USE_NORMAL_MAP v_tangent.xyz = normalize((matWorld * vec4(In.tangent.xyz, 0.0)).xyz); v_tangent.w = In.tangent.w; #endif v_uv = a_texCoord * tilingOffset.xy tilingOffset.zw; #if USE_VERTEX_COLOR v_color = a_color; #endif gl_Position = cc_matProj * position; }
流光 Shader
奇迹中,高级装备和武器的流光效果,也算是经典特色之一。
这种流光 Shader,一般使用两层流光加一层扫光来实现。不仅能够提升画面品质,还可以用很低的 GPU 开销实现各种武器光效,性价比是非常高的。
我们需要准备适合的发光图片和噪声图。
3D MMORPG 这类游戏的场景复杂度较高,同屏单位也不可控。为了兼顾更多的设备,我们也做了很多性能优化策略。
场景管理采用了四叉树管理,场景资源分帧加载,保证场景内不会一桢同时实例化多个物体造成卡顿。大量采用代理机制。草、水面、地表都做了代理。实现了这些可视物对应的模型数量都压到极低的水平。掉落物光柱和掉落钱币用 DymaicMesh 来动态合批,实现了最少的绘制调用。UI 动态特效,有一部分类型用 Shader 替代了序列帧,减少了内存纹理占用。减少 Mask 组件使用数量。使用 Cocos Creator 提供的引用计数机制来控制资源的引用和释放。场景中需要大量显示的草和副本怪物启用了 GPU Instancing,大大减少了 DrawCall,提高了渲染效率。使用分帧来处理逻辑,平滑帧率,避免一帧中执行太多任务导致卡顿。为什么选择 Cocos
超快的联机游戏开发调试效率
如果你用 Cocos Creator 做过网游,你就知道他到底有多方便。开发机上一但编译成功,就可以在内网的任何一台机器上玩到最新版本。
在同一台机器上,也可以通过多开网页实现多角色联机调试。通过 URL 参数,还能做到免输入账号,缩短调式进入时间。
而 Cocos Creator 的代码在原生、小游戏、Web 端几乎是一致的。90%的问题在Web上测试通过,在其他平台上也不会有问题。
真•跨平台在我们的公司,有多种类型的游戏产品。包括页游、原生手游以及小游戏。面对如此多元的产品线,我们需要一种能够轻松实现跨平台(原生、小游戏、H5)需求的解决方案。
Cocos Creator 在原生平台拥有高性能 C 内核,在 Web和小游戏上,有 Web3D 内核。使得它不管在哪类平台上,都能够以“原生”的方式支持,从而获得最优的平台兼容和性能表现,这就是我们选择使用 Cocos Creator 的原因。
内核开源,极致性能优化对于 MMO 类型的游戏,为了呈现更丰富的内容以及增加更多的设备覆盖率,常规的优化手段通常不能 100% 达到目的。
这个时候,开源的内核让我们可以根据自己的需求剔除掉不必要的流程,或者根据我们的具体需求重写某些流程,以实现最小化性能消耗。
社区活跃Cocos Creator 的社区非常活跃,很多问题都可以在社区中找到答案。这不仅大大提高了我们解决问题的效率,也让我们能够跟随社区的步伐,了解到最新的技术动态,不断提升我们的开发技能。
总的来说,Cocos Creator 以其超快的联机开发与调试能力、出色的跨平台能力、友好的开发环境以及活跃的社区,成为了我们游戏开发的首选工具。它不仅符合我们现有产品的需求,也为我们未来的产品开发提供了强大的支持。
相关文章
猜你喜欢