当前位置: 首页 > 科技观察

游戏开发人员需要注意的4个内存使用问题_0

时间:2023-03-22 12:37:30 科技观察

作者:AdityaKulkarni从销售的角度来看,您的全新手机游戏应该始终可以在人们当今使用的大多数设备上运行。“大多数设备”可能会让开发人员感到惊讶。2015年1月,全球手机用户已达36亿人。因此,开发人员的工作是使游戏/应用程序适应这些设备的各种硬件限制。开发人员在开发游戏等需要大量内存的软件时需要多加思考。通过写这篇文章,我希望能帮助一些非技术人员进一步了解一些内存问题,这是他们在从事2D游戏项目时需要考虑的问题。1)内存泄漏:内存泄漏是指分配的内存块没有被释放。打个比方:假设您要在一个有3个方形储物柜的房间里找一个储物柜。储物柜(来自gamecareerguide)1.约翰和丹尼“需要”存放他们的装备,一个储物柜足够他们每个人使用。所以现在我们有2个使用过的储物柜和1个未使用的储物柜。2、此时约翰需要存放头盔,不再需要之前存放的装备。所以现在理想情况下,他应该拿出他以前的装备,把头盔放进去。但是他向管理员要了另一个储物柜,想把头盔放在新的储物柜里。从逻辑上讲,此后所有储物柜都已满。现在约翰会忘记他存放在第一个储物柜中的设备。3.现在Danny需要存放2个头盔和2个储物柜,所以他决定卸下他的装备并腾出1个储物柜。随后,他向经理申请更换储物柜,但被经理拒绝,因为所有储物柜都已满。在这里,即使约翰从储物柜中取出无用的设备,丹尼也无法再使用多余的存储空间。2)同一张贴图的多个实例:一张贴图会占用width*height*4(红、绿、蓝、透明各占1个字节)的存储空间。所以一张512×512的图像将占用1.05兆字节的内存。相同的纹理将占用三倍的存储空间,即3.15兆字节。所以如果我们想将这些图像用作纹理,我们需要准备3倍以上的内存。打个比方:让我们举一个方形贴纸的例子,上面有你最喜欢的角色“屁股男”,不能第一次使用。贴纸(来自gamecareerguide)你需要向3个不同的人展示这个新角色。所以你可以:1.得到2个相同的贴纸,得到3个木框来贴贴纸,然后你将这些木框交给那3个人。2.让3个人拿到自己的木框,让他们把贴纸贴在木框上。第二个例子对我们有用,因为我们可以一遍又一遍地使用同一个贴纸。这也适用于每个人都能同时想到buttman的软件程序。3)不必要的迭代:在资源中调用for/while循环比多次调用它更简单。您可以在一个循环中处理多个任务。打个比方:你是一名间谍,需要将包裹运送到3个不同的远距离地点。而你需要从这3个不同的地方的不同老板那里收集重要的秘密信息。因为你从不同的老板那里接到这些任务,你可以:1.根据不同的老板分配你的任务。比如,你可以先开到3个地方,完成老板A分配的任务,然后再开到同样的3个地方,完成老板B分配的任务,反之亦然。2.根据不同的地方分配你的任务。例如,你可以开车到第一个地方,送包裹和获取信息,然后再开车到下一个地方。如果你像案例1那样计划一个任务,你就是一个愚蠢的间谍,因为你需要花费更多的时间和资源来完成同样的任务。4)将未使用的对象保留在内存中:只有特定的对象可以随时使用或出现在屏幕上。由于我们拥有首选的内存空间,因此留在内存中的任何其他对象都是资源消耗。打个比方:您需要将一辆马车从A点推到B点。让我们假设,如果马车空载或负载最轻,这将是一项更容易的任务。但是因为你喜欢啤酒,所以你选择用马车来运一桶啤酒,从而增加了你的任务难度。所以这里最好的解决办法是放弃你心爱的啤酒。这里列出的问题肯定比我在一篇文章中写的要多。作为开发人员,您应该尽快识别这些问题并使用有效的解决方法。在发布产品之前克服这些挑战是一个真正令人兴奋的游戏开发过程。每个人一天只有24小时。对我们来说,人们花费宝贵的时间来尝试我们创造的东西这一事实是我们开发游戏的最大动力。