自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

游戲開發(fā)者需要注意的4個內(nèi)存使用問題

移動開發(fā) 游戲開發(fā)
從銷售角度來看,你的全新手機(jī)游戲總是應(yīng)該適用于今天人們所使用的大多數(shù)設(shè)備。“大多數(shù)設(shè)備”可能會讓開發(fā)者感到驚訝。在2015年1月,世界各地的手機(jī)用戶數(shù)已經(jīng)達(dá)到36億人。所以開發(fā)者的工作便是讓游戲/應(yīng)用能夠適應(yīng)這些設(shè)備的種種硬件約束條件。開發(fā)者們在開發(fā)像游戲等需要耗費內(nèi)存的軟件時需要進(jìn)行更多思考。通過編寫這篇文章,我希望能夠幫助一些不了解技術(shù)的人進(jìn)一步理解一些內(nèi)存問題,而這也是他們在致力于2D游戲項目時需要考慮的內(nèi)容。

[[151106]]

作者:Aditya Kulkarni

從銷售角度來看,你的全新手機(jī)游戲總是應(yīng)該適用于今天人們所使用的大多數(shù)設(shè)備。“大多數(shù)設(shè)備”可能會讓開發(fā)者感到驚訝。在2015年1月,世界各地的手機(jī)用戶數(shù)已經(jīng)達(dá)到36億人。所以開發(fā)者的工作便是讓游戲/應(yīng)用能夠適應(yīng)這些設(shè)備的種種硬件約束條件。開發(fā)者們在開發(fā)像游戲等需要耗費內(nèi)存的軟件時需要進(jìn)行更多思考。通過編寫這篇文章,我希望能夠幫助一些不了解技術(shù)的人進(jìn)一步理解一些內(nèi)存問題,而這也是他們在致力于2D游戲項目時需要考慮的內(nèi)容。

1)內(nèi)存泄露:內(nèi)存泄露指的是未被釋放的分配內(nèi)存塊。

類比:讓我們想象你在一個擁有3個方形儲物柜的房間尋找一個儲物柜。

[[151107]]

lockers(from gamecareerguide)

1.John和Danny“需要”儲存自己的裝備,而一個儲物柜便足以滿足他們每個人。所以現(xiàn)在我們擁有2個已被使用的儲物柜,以及1個閑置的儲物柜。

2.這時候John需要儲存他的頭盔,并且不再需要他之前儲存的裝備。所以現(xiàn)在最理想的情況是他應(yīng)該拿出之前的裝備并將頭盔裝進(jìn)去。但是他卻向管理者請求另一個儲物柜并希望將頭盔放在全新儲物柜中。從邏輯上看,在這之后所有的儲物柜便都滿了。而現(xiàn)在的John會忘記自己儲存在***個儲物柜中的裝備。

3.現(xiàn)在Danny需要儲存2個頭盔并需要2個儲物柜,所以他決定拿掉自己的裝備并空出1個儲物柜。然后他向管理者申請了一個新的儲物柜,但是因為所有儲物柜都滿了所以遭到了管理者的拒絕。

在這里,即使John從儲物柜中拿掉無用的裝備,Danny也不能再使用多出來的儲存空間。

2)相同紋理的多個例子:一個紋理將占用寬度*高度*4(游戲邦注:紅色,綠色,藍(lán)色和透明度各占據(jù)1個字節(jié))的儲存空間。所以一張512×512規(guī)格的圖像將占據(jù)1.05兆的內(nèi)存。而同樣的紋理將占據(jù)其3倍的儲存空間,也就是3.15兆。所以如果我們想要使用這些圖像作為紋理的話我們便需要準(zhǔn)備多出3倍的內(nèi)存。

類比:讓我們以一張呈現(xiàn)出你最喜歡的角色“buttman”并且不能***次使用的方形貼紙為例。

[[151108]]

sticker(from gamecareerguide)

你需要將這個新角色呈現(xiàn)給3個不同的人。所以你能夠:

1.獲得2張一樣的貼紙,獲得3個木質(zhì)框架能夠在上面貼貼紙,并且你將把這些木制框架遞交給那3個人。

2.讓那3個人去獲得屬于自己的木制框架并讓他們將貼紙貼到框架上。

第2個例子適合我們,因為我們可以反復(fù)使用同樣的貼紙。這也適用于軟件程序中,即所有人可以同時想到buttman。

3)不必要的迭代:比起多次調(diào)用,在資源中調(diào)用for/while循環(huán)更簡單。你可以在一個循環(huán)中處理多個任務(wù)。

類比:你是一個間諜,并需要向3個遙遠(yuǎn)的不同場所運輸包裹。并且你需要從這3個不同場所的不同boss那收集到重要的秘密信息。

因為你是從不同boss那接到這些任務(wù),所以你可以:

1.根據(jù)不同boss去分配你的任務(wù)。例如你可以駕車前往所有的這3個場所并先完成boss A所分配的任務(wù),然后再駕車前往同樣的3個場所完成Boss B所分配的任務(wù)。反之亦然。

2.根據(jù)不同場所去分配你的任務(wù)。例如你可以先駕車前往***個場所,遞交包裹并獲得信息,然后再駕車前往下個場所。

如果你所制定的任務(wù)計劃是像第1種情況那樣的話你便是一個愚蠢的間諜,因為你需要花費更多時間和資源去完成同樣的任務(wù)。

4)在內(nèi)存中保留未使用的對象:任何時候都只有一定的對象能夠被使用或出現(xiàn)在屏幕上。因為我們擁有優(yōu)先的內(nèi)存空間,所以任何被留在內(nèi)存里的額外對象都是在耗費資源。

類比:你需要將一輛馬車從A點推到B點。讓我們假設(shè)如果馬車未負(fù)載任何東西或者載著最輕的東西,這便是一個較簡單的任務(wù)。但是因為你喜歡啤酒,所以你選擇用馬車去載一桶啤酒,從而加重了自己任務(wù)的難度。

所以在這里的***解決方法便是放棄你所深愛的啤酒。

這里所列出的問題絕對超過我在一篇文章中能夠?qū)懴碌膬?nèi)容。作為一名開發(fā)者,你應(yīng)該盡快識別這些問題并使用有效的解決方法。先克服這些挑戰(zhàn)再發(fā)行產(chǎn)品是真正讓人興奮的游戲開發(fā)過程。每個人每一天只擁有24個小時。對于我們而言,人們能夠花費這些寶貴的時間去嘗試我們所創(chuàng)造的內(nèi)容便是推動著我們?nèi)ラ_發(fā)游戲的***動力。

責(zé)任編輯:倪明 來源: 游戲邦
相關(guān)推薦

2011-05-16 16:11:21

java

2009-04-07 11:24:16

Java開發(fā)注意事項

2013-08-13 09:44:42

iOS 7開發(fā)者

2016-12-26 18:51:34

AndroidJavascriptJSONObject

2023-10-04 00:03:00

SQL數(shù)據(jù)庫

2011-07-21 15:40:24

iPhone 內(nèi)存管理 對象

2024-05-16 15:15:14

2012-07-04 14:40:37

Ajax

2010-12-31 09:14:36

MongoDB

2015-05-14 14:28:52

2023-07-27 18:39:20

低代碼開發(fā)編碼

2015-09-28 11:13:50

2016-11-24 15:54:06

androidJSONObject

2016-03-23 09:46:40

移動前段開發(fā)

2013-06-28 14:19:20

2009-04-23 14:30:19

UML建模

2013-09-29 10:36:08

VMware虛擬化

2021-02-05 17:35:07

數(shù)據(jù)高管CIO技術(shù)

2020-10-26 14:01:22

Java泛型

2013-07-16 10:49:17

游戲開發(fā)手機(jī)游戲
點贊
收藏

51CTO技術(shù)棧公眾號