unity 3d shaderlab 开发实战详解_Unity之3D游戏的万人同屏技术详解!

前言的前言

在讲述万人同屏的技术问题前。一定要先回答一个问题,游戏中万人同屏究竟有什么意义?但这并不是一个问题而是三个问题他们分别是。

1,显卡绘制1万个高质量模型有什么意义?

2,游戏服务器承载1万个玩家互动有什么意义?

3,在客户端或单机中1万个高智能的游戏角色有什么意义?

显卡绘制1万个高质量模型的意义无需多说了。人的眼睛有多挑剔,对显卡性能的要求就有多高。高性能显卡为什么卖的比低性能的贵。用过苹果的人绝对不会再去用诺基亚。一场宏大绚丽的场景可以产生一半的游戏内容。所以好的游戏对显卡性能的追求就像吊丝对女神的向往。

游戏服务器承载1万个玩家互动的意义。玩家的互动是网游的灵魂。游戏的内容总会有被玩尽的时候。一个游戏能存活20年依靠的就是玩家的互动。互动产生的乐趣才是无穷无尽的。人和人之间的斗争才是无穷无尽的。这就是为什么围棋被玩了几千年的原因。在几十个人的战场里玩家被裹挟着只能冲锋!冲锋!再冲锋!但在几百个人的战场里,决定胜负的可能只是偷得一把大门钥匙。

在客户端或单机中1万个高智能游戏角色的意义。网络还是单机游戏不一定都是千篇一律的场景。在随机地图中来一次玩家独特的大冒险。参与到两个部落之间旷日持久的大混战中。让每个玩家拥有自己独特的经历。只有数量庞大的沙盒游戏才能做到。

万人同屏技术与其说是一种技术,不如说是对游戏上限的突破。除非你的游戏完全由剧情组成。否则绚丽的视角,复杂的互动,高随机的可玩性。都是在从技术角度极大扩展了游戏的内容。给了游戏更高更广的设计空间。技术上限的提高代表着更多的可能。也代表着你会做出一款特别的游戏。

b0437ae615b72bb58cedac7a03fd8218.png

前言

3D游戏的万人同屏是非常古老的话题。从网游的传奇,永恒之塔到单机的战争模拟器,骑马砍杀,刺客信条。是什么限制了3D游戏的万人同屏。为什么万人同屏很难做。问题出在哪?怎么去解决?要实现3D游戏的万人同屏,就必须解决以下2个问题。

第一个问题,万人同屏受限于显卡的渲染能力。

第二个问题,万人同屏受限于对1万个人的逻辑处理能力。

渲染的瓶颈

哪么我们先来看第一个问题。什么是显卡的渲染能力呢?我们知道3D环境下最小绘制面积单位是三角面。显卡以每秒60次的频率将这些三角面投影到2D平面。而CPU同样需要以每秒60次的频率将要显示的数据准备好。并提交给显卡进行处理。

我刚巧有一台10年前的笔记本。也就是和永恒之塔同时代的笔记本。这台笔记本的渲染能力是以每秒60次的频率绘制2万个三角面。2万个三角面是什么概念呢?一个游戏角色大概要500到1千个三角面。哪么2万个三角面可以绘制40个左右的玩家。而游戏里最基本的正方形需要12个三角面。如果使用这台笔记本玩万人同屏的游戏。哪么你只能看1万个三角形在蓝色背景下奔跑。或者看见1666个正方形在蓝色背景下奔跑。

而在最新版的AMD R7-4800U内置的显卡里可以每秒60次的频率绘制500到1000万个三角形。勉强可以实现1万个游戏角色在蓝色背景下狂奔。在显卡性能允许范围内万人同屏是质量和数量的选择。万人同屏相当于把显卡性能平分1万份。这样每份的质量肯定会比较差。而在10年前把显卡性能平分1万份,就只能保证1万个三角形的同屏。在10年前只有高端显卡可以在质量和数量上满足万人同屏。所以万人同屏的技术在10年前只有少数高端玩家可以体验。而随着硬件技术的发展,显卡性能的显著提升。今天就是CPU的内置显卡也能在满足一定程度的万人同屏。

aea70320858544c48ba0491842dac44c.png

既然现在的硬件条件已经有很大的改善,为什么能够做到万人同屏的游戏还哪么少呢?

这主要是3个方面的问题。

第一个原因是虽然硬件性能不断提升,玩家对画质的要求也在不断提升。在质量和数量的比较下,策划选择了游戏质量。在游戏中技术是对策划和美术的基本支持。游戏选择质量还是数量都是策划对游戏玩法的设定。无论策划做出那种选择都能够实现是公司技术实力的体现。技术给了策划更多的选择,就意味着策划有更大的舞台,能够做出更内容更丰富的游戏。

第二个原因是网络游戏服务器的“相位技术”并不普及,只被魔兽和EVE等少数厂家垄断。导致网络游戏的承载人数非常有限,大多数游戏公司的技术只能满足5百到1千人左右的水平。受到服务器技术水平的限制,导致网络游戏的客户端无法实现万人同屏。

第三个原因是单机技术水平不足。单机游戏显然并不受到服务器处理能力的限制。显卡能力也可以得到充分释放。但要满足万人同屏需要每秒钟处理60亿条以上的游戏数据。普通的游戏厂商没有这个技术实力。

网络游戏中的难点

稍后我们来详细了解第三个原因。先简单的说下第二个。网络游戏的特点就是所有数据的处理都在服务器完成。一个是为了能够同步给其他的玩家,也是为了数据的安全。整个处理过程是玩家通过键盘鼠标生成请求命令并发往服务器。服务器接到命令后处理相关数据,并生成返回消息发给玩家和相关的玩家。玩家客户端接到命令后通过3D引擎设置相关数据,并显示到屏幕上。例如玩家移动的消息。键盘控制玩家角色向前移动,这个消息发送给服务器后,服务器记录移动数据,并将数据转发给周围的玩家。这样周围的玩家才能看这个玩家在移动。所以网络游戏中客户端功能被分为了三大部分。第一接收键盘鼠标的输入。第二网络发送并接收服务器数据。第三根据返回数据调用相应的资源并显示在屏幕。哪么能否万人同屏就受到两个条件的制约。第一个是显卡能否按游戏要求的品质显示出足够数量的对象。第二个服务器能否支持足够多的玩家在线。

我们通过前面对渲染的介绍可以知道。显卡降低游戏品质哪怕是只显示1万个三角形。也是可以实现万人同屏的。所以今天的游戏引擎和显卡性能都不是制约网络游戏中万人同屏技术的关键。只要游戏服务器能够支撑足够多的玩家就可以实现客户端的万人同屏。在上一篇文章中,我介绍了游戏服务器《使用redis实现5万人同服的“相位技术”》的文章。有兴趣的同学可以去了解下。

在单机中的难点

下面我要重点介绍单机3D游戏如何实现万人同屏。下面默认的语言环境是使用go语言。包括go语言中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Unity 3D ShaderLab开发实战详解》是一本介绍Unity 3DShaderLab开发实战教程的PDF电子书。ShaderLabUnity中用于创建和编辑着色器的工具,通过编写自定义着色器可以实现各种特效和材质效果,提升游戏的视觉效果。 这本书的目的是帮助读者掌握ShaderLab的基本概念和技巧,并通过实例演示来深入了解如何创建高质量的着色器。书中的内容涵盖了ShaderLab开发的各个方面,从基础的着色器语法开始讲解,逐步介绍如何创建材质、纹理、光照效果、透明效果、反射效果等。书中还详细讲解了Unity的着色器渲染管线和渲染流程,帮助读者理解着色器是如何与场景、摄像机、光源等组件进行交互和渲染的。 在书中,作者通过大量的示例代码和图文说明,帮助读者理解和掌握ShaderLab的使用方法和技巧。同时,书中还提供了一些实用的开发技巧和调试技巧,帮助读者解决在实际开发中可能遇到的问题。 《Unity 3D ShaderLab开发实战详解》适合有一定Unity开发经验的读者阅读,对于对着色器开发感兴趣的游戏开发者来说,这本书是一个很好的学习资源。通过学习这本书,读者可以深入了解Unity的着色器开发技术,掌握创建高质量视觉效果的方法,提升游戏的质量和表现力。 ### 回答2: 《Unity 3D ShaderLab开发实战详解》是一本介绍UnityShaderLab开发实战指南。Shader是用来描述渲染效果的程序,而ShaderLab则是Unity的内建语言,用于编写和调试Shader。 该书包含了ShaderLab开发的基础知识和高级技巧。首先,它涵盖了ShaderLab语言的基本语法和结构,包括材质和渲染管线的理解,以及Shader中常用的算法和函数。读者可以通过逐步学习这些内容来掌握ShaderLab的基本编写和调试技巧。 书中还介绍了一些常见的渲染效果,如水面、光照、阴影等。读者可以通过学习这些案例来了解如何在实际项目中应用ShaderLab开发出高质量的渲染效果,并通过对案例代码的分析和修改来加深对ShaderLab的理解。 此外,该书还介绍了一些高级的ShaderLab开发技术,如使用GPU编程语言HLSL优化Shader性能、通过贴图及纹理坐标实现特定效果等。这些技术可以帮助读者深入理解ShaderLab的内部原理,并运用到实际项目中。 总的来说,《Unity 3D ShaderLab开发实战详解》提供了一个系统和全面的学习ShaderLab开发的平台。通过阅读本书,读者可以逐步掌握ShaderLab语言的基础知识和技巧,并学会如何应用它来实现各种炫酷的渲染效果。无论是初学者还是有一定经验的开发者,都可以从中获得实践和提高的机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值