你知道為什麼遊戲裡被打倒的怪物要人間蒸發嗎?

更新於 發佈於 閱讀時間約 1 分鐘
Out of memory
我前陣子在玩暗黑破壞神三這款遊戲時候,注意到被打倒的怪物們「瞬間」人間蒸發!遊戲這種「屍骨無存」方式處理被打倒的怪物們就是記憶體管理機制,是程式設計的時候一定會被拿出來討論的一門技術。
CPU <=- reading from and writing to -=> RAM
電腦的運作是中央處理器 CPU 負責計算,資料就放在記憶體 RAM 裡面。程式的運作就是不斷讀取記憶體、計算數據再寫入記憶體的過程。但我們都知道每一台電腦的記憶體不管配備幾十、幾百個 GB 記憶體都還是有上限的。你可以想像記憶體就像一間超大型百貨公司,電腦的作業系統 OS,例如:Windows,就是樓管,它會負責提供記憶體空間給進駐展櫃的程式們使用,並確保程式間的記憶體空間是不會互相干擾。遊戲程式拿到的記憶體空間你可以想像成一個有很多格子的盒子,用來存放所有被創造出來的元件,包含我們的角色、環境與成群的怪物們的數據。因此遊戲的畫面越精緻、產生的物件跟怪物數量越多的話,格子被填滿的速度越快。遊戲為了有源源不絕的怪物出現,就必須處理被打倒的怪物們,「盡快」把佔用的記憶體空間回收回來,否則盒子就會很快爆滿,導致記憶體耗盡的錯誤,造成「當機」、「閃退」、「不斷重啟」等不穩定的結果,好不容易打到的進度就沒了。
近幾年發展的程式語言,像是 Java, C# 等,都有配備很好 GC 垃圾回收的機制,已經不太需要程式設計師自己手動管理記憶體,程式穩定度提升。有垃圾處理機制不代表問題消失,還是要幫自己建立良好的程式寫作習慣,解構用不到的物件讓垃圾處理機制發揮作用才是更好的作法。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
16會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
在軟體設計的工作裡除了你熟悉的 coding 技能外,還有一塊非常重要經常被忽略,那就是處理資料存儲的部分。我們現在用的軟體功能都很複雜,為了有更好的使用者體驗,軟體設計師會在後台儲存有很多的設定資料並且紀錄軟體運作過程中的資料流數據,為了更好的記錄應用這些資訊,通常會搭配一個資料庫在程式裡面
「我想要做軟體相關工作,不知道軟體工程師跟資訊科技(IT)工程師的差別在哪裡?要怎麼知道自己適合哪一種?」,所以這篇文章會幫助你分清楚這兩種職業的差別,提供四個觀察面向來幫助你進行評估,找到適合自己的切入點。
架設部落格或建立個人網站已經變成經營個人品牌必備的功夫。所以不管是自己要練技術、將來想賣自己的產品、參與聯盟行銷,又或者就只是單純搞個網站紀錄自己的人生軌跡...,都離不開架站話題。
在軟體設計的工作裡除了你熟悉的 coding 技能外,還有一塊非常重要經常被忽略,那就是處理資料存儲的部分。我們現在用的軟體功能都很複雜,為了有更好的使用者體驗,軟體設計師會在後台儲存有很多的設定資料並且紀錄軟體運作過程中的資料流數據,為了更好的記錄應用這些資訊,通常會搭配一個資料庫在程式裡面
「我想要做軟體相關工作,不知道軟體工程師跟資訊科技(IT)工程師的差別在哪裡?要怎麼知道自己適合哪一種?」,所以這篇文章會幫助你分清楚這兩種職業的差別,提供四個觀察面向來幫助你進行評估,找到適合自己的切入點。
架設部落格或建立個人網站已經變成經營個人品牌必備的功夫。所以不管是自己要練技術、將來想賣自己的產品、參與聯盟行銷,又或者就只是單純搞個網站紀錄自己的人生軌跡...,都離不開架站話題。
你可能也想看
Google News 追蹤
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
有類說法:開悟是回到純粹存在的狀態,並不進行任何心智表層的運作。 在這個狀態,就像進入作業系統後台,除了硬體與基本開機程序之外,並不運行任何其它的,包括不進入作業系統/信念系統,也不連結資料庫,也不連網。 這時候,沒有時間、沒有記憶、沒有認知、沒有任何可執行的想法或活動,除了維持基本生命機能必須
Thumbnail
遊戲是元宇宙的重要組成部分和試驗場。 在我的構想中,元宇宙可以成為一種綜合應用介面,使人們能夠在三維的環境中,更有效率地完成任務。 想像我們去超市時,自然地掃視貨架找到所需產品。若同樣情形換到網路購物平台,一個貨架的商品可能要分散在多個分頁中。
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
Thumbnail
覺得是需要來記錄一下,輸出才是好的整理學習的方式! 也能檢視一下整個過程! 這是個透過各式主題,讓大家,尤其是很少接觸的人,知道桌遊原來有這麼多面向,引起更多人的興趣! 老早就討論好了很多桌遊主題,但這次還是有了基本的遊戲問題,以前都是曝光度的問題XD。 那到底是怎樣的問題,差點讓活動變得2
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
Thumbnail
現在主機遊戲變得很多元,有一些需要靠著一個超級主機來支撐他的記憶體存量,這裡可以回答你的主機硬體必須知道的三件事!
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
有類說法:開悟是回到純粹存在的狀態,並不進行任何心智表層的運作。 在這個狀態,就像進入作業系統後台,除了硬體與基本開機程序之外,並不運行任何其它的,包括不進入作業系統/信念系統,也不連結資料庫,也不連網。 這時候,沒有時間、沒有記憶、沒有認知、沒有任何可執行的想法或活動,除了維持基本生命機能必須
Thumbnail
遊戲是元宇宙的重要組成部分和試驗場。 在我的構想中,元宇宙可以成為一種綜合應用介面,使人們能夠在三維的環境中,更有效率地完成任務。 想像我們去超市時,自然地掃視貨架找到所需產品。若同樣情形換到網路購物平台,一個貨架的商品可能要分散在多個分頁中。
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
Thumbnail
覺得是需要來記錄一下,輸出才是好的整理學習的方式! 也能檢視一下整個過程! 這是個透過各式主題,讓大家,尤其是很少接觸的人,知道桌遊原來有這麼多面向,引起更多人的興趣! 老早就討論好了很多桌遊主題,但這次還是有了基本的遊戲問題,以前都是曝光度的問題XD。 那到底是怎樣的問題,差點讓活動變得2
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
電腦的運作需要仰賴許多的硬體與軟體,統稱電腦系統 (computer system)。這篇文章會概略地介紹電腦系統中的重要角色,以及它們如何相互合作,來完成複雜的工作,比如說讓無所事事的宅宅如我,假日可以躲在房間玩一整天的遊戲。 電腦、程式、與使用者 說到電腦,你的腦中會浮現什麼呢? 是螢幕
Thumbnail
現在主機遊戲變得很多元,有一些需要靠著一個超級主機來支撐他的記憶體存量,這裡可以回答你的主機硬體必須知道的三件事!