unity2d碰撞检测_超精华的unity2d同屏显示9千人,看完还怕学不会?

a16095f4c82931597658db11e265bd59.png

前言

多线程与单线程的自由切换一直是个有趣的话题。

开发人员喜欢在单线程下开发,准确有序不容易出错。

但是他们也舍不得放弃多线程带来的效率提升。

为了提升unity2d的性能限制。这里使用 http:// surparaller.org 制作的pelagia。他可以在单线程和多线程之间自由切换。像开发其他的单线程软件一样使用pelagia。只要通过简单的设置就可以在单线程和多线程间自由切换。

0535d563c13624254a9e603f58082683.png

比如

1.最近骑马与砍杀的游戏非常流行。

2.让沙盒技术又受到了关注。

3.沙盒技术是指在游戏中玩家可以自由发展获得不同的游戏剧情。

4.最为有名的沙盒游戏还有P社的系列,其中包括维多利亚,钢铁雄心,欧陆风云等。

5.让沙盒游戏好玩的关键是创建大量的游戏角色。

6.例如骑马与砍杀每次都要创建上千个士兵。

d9b785a27fd82342ae75bf7943ff746c.png

从而

创建大量游戏角色是对游戏引擎和游戏开发者的巨大挑战。

这种挑战来自2个方面:

  1. 使用恰当的技术,让游戏支持动态扩展。
  2. 将游戏分解到不同的线程,让系统资源使用最大化。

下面将用3个例子来说明如何进行操作。

第一个来自unity官方的示例roguelike.你可以在下面的地址找到它的介绍和代码.

https://learn.unity.com/project/2d-roguelike-tutorial

https://github.com/surparallel/unity_example_of_pelagia/tree/master/Roguelike

这个示例在性能方面有3个问题.

1,协程导致游戏阻塞。

2,不支持摄像头跟随。

3,碰撞检测会失败,导致npc的重叠。

所以针对上述3个问题我制作了Big Roguelike。

你可以在下面的链接找到它。

https://github.com/surparallel/unity_example_of_pelagia/tree/master/Big%20Roguelike

Big Roguelikefe非常适合进行压力测试。我将地图扩大1千倍。并将npc数量设定到3000。

11b6e3eeab21713f66f8b79d30ecb66c.png

这样就达到了单线程下的极限。

dc3e93d8da91fbb26d291b94dc4cca93.png

为什么说单线程,因为只有一个线程处于满负荷的工作状态。

7d29d2b616fe835a19282863fd316cc1.png

当你完成了第一个挑战之后,会发现再多的软件优化也无法大幅提升性能。

这时就要考虑更为激进的优化方案。

普通的技术水平是远远不能满足沙盒游戏的。

几个人甚至十几个人的战斗会让人昏昏欲睡。

为了解决一核有难多核围观的问题。我创建了示例Ultimate Roguelike。

你可以在下面的链接找到他。

https://github.com/surparallel/unity_example_of_pelagia/tree/master/Ultimate%20Roguelike

Ultimate Roguelike在屏幕上可以创建9千个npc.

780faaa557720a2bbe0b940f5946a568.png

对unity压力也非常的小。

1ed6fd67585045aa23223a294e704def.png

cpu的负载能力可以提升到60%。

4a3d6909ce8fbd0ac1011f99beda4bca.png
将游戏分解到不同的线程,看着似乎非常简单。
但99%的游戏厂商都做不到。所以被玩家讥讽为单核游戏。
游戏设计者需要的是简单的技术就可以使游戏丰富多彩。
这样才能有余力设计更多复杂生动的剧情。

多线程优化有很多方案可以选择。从头学习多线程知识要花上好几年的时间。pelagia只需要你知道基本的异步消息概念就可以写出高质量的多线程软件。

a053d0bd0de1127db64a36ba702b607f.png

如果unity是创建了一个世界,逻辑层级就是这个世界不同形式的镜像。unity是用颜色组成的世界,逻辑层是用其他数据组成的世界。通过异步消息将这些数据汇总起来就是在unity中看到的世界。pelagia根据使用数据的方式,读写或者逻辑依赖。将数据自动划分为不同的逻辑层,并为每个逻辑层配备消息路由,硬盘读写缓存等组件。这样就可以快速构建分层的世界。并把每个层放入不同的线程中。这与我们在实践中拆分软件系统所使用的方法是一样的。pelagia仅仅是将这个复杂的过程自动化了。

dadfd9abd9312c09ec741432e3e3327c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值