遊戲開發者需要注意的4個記憶體使用問題

2021-07-05 16:22:16 字數 2111 閱讀 8440

從銷售角度來看,你的全新手機遊戲總是應該適用於今天人們所使用的大多數裝置。「大多數裝置」可能會讓開發者感到驚訝。在2023年1月,世界各地的手機使用者數已經達到36億人。所以開發者的工作便是讓遊戲/應用能夠適應這些裝置的種種硬體約束條件。開發者們在開發像遊戲等需要耗費記憶體的軟體時需要進行更多思考。通過編寫這篇文章,我希望能夠幫助一些不了解技術的人進一步理解一些記憶體問題,而這也是他們在致力於2d遊戲專案時需要考慮的內容。

1)記憶體洩露:記憶體洩露指的是未被釋放的分配記憶體塊。

模擬:讓我們想象你在乙個擁有3個方形儲物櫃的房間尋找乙個儲物櫃。

1.john和danny「需要」儲存自己的裝備,而乙個儲物櫃便足以滿足他們每個人。所以現在我們擁有2個已被使用的儲物櫃,以及1個閒置的儲物櫃。

2.這時候john需要儲存他的頭盔,並且不再需要他之前儲存的裝備。所以現在最理想的情況是他應該拿出之前的裝備並將頭盔裝進去。但是他卻向管理者請求另乙個儲物櫃並希望將頭盔放在全新儲物櫃中。從邏輯上看,在這之後所有的儲物櫃便都滿了。而現在的john會忘記自己儲存在第乙個儲物櫃中的裝備。

3.現在danny需要儲存2個頭盔並需要2個儲物櫃,所以他決定拿掉自己的裝備並空出1個儲物櫃。然後他向管理者申請了乙個新的儲物櫃,但是因為所有儲物櫃都滿了所以遭到了管理者的拒絕。

在這裡,即使john從儲物櫃中拿掉無用的裝備,danny也不能再使用多出來的儲存空間。

2)相同紋理的多個例子:乙個紋理將占用寬度*高度*4(遊戲邦注:紅色,綠色,藍色和透明度各佔據1個位元組)的儲存空間。所以一張512×512規格的影象將佔據1.05兆的記憶體。而同樣的紋理將佔據其3倍的儲存空間,也就是3.15兆。所以如果我們想要使用這些影象作為紋理的話我們便需要準備多出3倍的記憶體。

模擬:讓我們以一張呈現出你最喜歡的角色「buttman」並且不能無限次使用的方形貼紙為例。

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

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

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

第2個例子適合我們,因為我們可以反覆使用同樣的貼紙。這也適用於軟體程式中,即所有人可以同時想到buttman。

3)不必要的迭代:比起多次呼叫,在資源中呼叫for/while迴圈更簡單。你可以在乙個迴圈中處理多個任務。

模擬:你是乙個間諜,並需要向3個遙遠的不同場所運輸包裹。並且你需要從這3個不同場所的不同boss那收集到重要的秘密資訊。

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

1.根據不同boss去分配你的任務。例如你可以駕車前往所有的這3個場所並先完成boss a所分配的任務,然後再駕車前往同樣的3個場所完成boss b所分配的任務。反之亦然。

2.根據不同場所去分配你的任務。例如你可以先駕車前往第乙個場所,遞交包裹並獲得資訊,然後再駕車前往下個場所。

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

4)在記憶體中保留未使用的物件:任何時候都只有一定的物件能夠被使用或出現在螢幕上。因為我們擁有優先的記憶體空間,所以任何被留在記憶體裡的額外物件都是在耗費資源。

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

所以在這裡的最佳解決方法便是放棄你所深愛的啤酒。

這裡所列出的問題絕對超過我在一篇文章中能夠寫下的內容。作為一名開發者,你應該盡快識別這些問題並使用有效的解決方法。先克服這些挑戰再發行產品是真正讓人興奮的遊戲開發過程。每個人每一天只擁有24個小時。對於我們而言,人們能夠花費這些寶貴的時間去嘗試我們所創造的內容便是推動著我們去開發遊戲的最佳動力。

開發者提交產品前需要注意的幾個點

第 二 再檢查一下分類 諸葛 兩條路子的各有各的利弊,如何取捨在於開發者的宣傳策略。這裡的訣竅在於,遊戲類產品可以設定2個分類。其中乙個作為主分類,另乙個則可以根據宣傳 運營策略進行選擇。唯一需要注意的是,無論在那種情況下,選擇與產品完全無關的分類很有可能被蘋果駁回 比如給 遊戲 設定 天氣 分類等...

遊戲開發者需要關注的遊戲ICON

開發者往往重視遊戲的名字,認為乙個好的遊戲名字能給玩家在茫茫遊戲海洋中留下深刻的印象,其實人類往往會先被吸引,然後才是文字。所以某種程度上來說,遊戲的icon反而更容易給玩家留下印象。icon色調 大家都知道現實生活中色調的不同,會給人帶來不一樣的感受。像橙色會給人帶來陽光 活潑的感受。藍色則代表著...

學習虛幻4需要儲備的知識(2D遊戲開發者向)

這些都是入門可讀的資料,所有英文資料都有中譯本。2d遊戲引擎可認為是3d遊戲引擎的子集 優化 可選 簡單的2d遊戲引擎可以基於draw 不用節點 和繼承樹 不用ecs 甚至沒多少繼承 直接堆class 而3d遊戲引擎則要複雜一些。各種效果術語掃盲 玩得更明白 顯示卡帝揭秘3d遊戲畫質特效 元件式引擎...