當前位置: 妍妍網 > 碼農

DIY經典遊戲,輕松學Rust編程——重溫兒時遊戲夢,用Rust寫出屬於自己的小遊戲!

2024-07-12碼農

文末贈書

【譯者序】「重溫兒時遊戲夢」,我感覺這本書的作者是挺講情懷的,這也是我看完這本書以後感覺它與眾不同的一點。這本書不是死板的教程,更像是作者在給你講故事,講怎麽做好一個遊戲,怎麽在此過程中學習Rust編程,有點「邊玩邊學」的感覺。

從未有一門語言像 Rust 這樣,自推出之後在使用者的口碑中如此兩極分化。有人說 Rust 就是一場「騙局」,難學又難用,早晚會在吃盡苦頭後放棄;有人卻說 Rust 是「神器」,足以秒殺其他系統程式語言,但凡用不好,就只能怪自己學藝不精。

不管怎麽說,大家似乎都認同一點,Rust 確實不是一門很容易就能學會的程式語言。那麽,Rust 語言到底難在哪兒?下面羅列的幾條應該算是主要原因了。

· 所有權和借用檢查 ,所有權系統是 Rust 的核心特性之一,它透過編譯時的借用檢查來保證記憶體安全。這一機制避免了數據競爭和野指標等問題,但也要求開發者在編寫程式碼時必須考慮變量的生命周期和作用域,這在 Java/Python/Go 中通常由垃圾收集器處理,在 C/C++ 中則由手動記憶體管理處理。

· 生命周期標註 ,Rust 要求開發者在函式和方法中明確標註參照的生命周期,這就要求開發者對變量的使用場景有清晰的了解。

· 編譯時重構 ,Rust 的編譯器會強制進行程式碼重構以滿足安全要求,這令一些開發者不滿,他們有時只想寫「用完即丟」的程式碼,並不想為此花費大量時間,所以覺得Rust語言不好用。

也就是說,Rust 語言本身的一些特性是其學習門檻所在。那麽,有辦法能輕松學會 Rust 嗎?

這本書或許能給你帶來一些啟發—— 一邊玩,一邊學 Rust 編程。我們在接下來的學習中會了解到,Rust並不是一個帶你入坑的「騙局」,而的確是一門強大的新興語言。現在我們來探究一下,學會 Rust 要經歷哪兩個階段。

Part.1

學好Rust要經歷這兩個階段

Rust 的定位是系統程式語言,它既具備 C/C++ 這樣的語言深入系統底層的能力,又擁有出色的效能,最重要的是它的記憶體安全性。所以,學習 Rust 的第一階段是掌握它的記憶體管理,第二階段是在實踐中套用好記憶體管理機制。

第一階段,熟悉 Rust 記憶體管理模式

首先,要理解所有權機制,知道它為什麽能在編譯時確保記憶體安全。

對於絕大多數熟悉 Python、Go、Java 等具備自動記憶體管理功能語言的開發者而言,可能缺少對底層記憶體結構、存取方式的深入理解。

這樣在編寫一行程式碼的時候很少去思考,這一行程式碼導致了多少記憶體分配;記憶體是分配在棧上還是堆上;這塊記憶體是否會被多個執行緒共享;記憶體何時釋放等問題。

因此對於這個階段而言,往往 C/C++ 的開發者轉換到 Rust 語言的難度會更小。而其他語言的開發者就需要花時間去補足這方面的功課。

第二階段,在實踐中體會並套用好 Rust 記憶體管理機制

所有權、生命周期等機制的存在,確實會從一定程度上限制開發者隨心所欲編寫程式碼的能力。

目前市面上絕大多數的 Rust 學習資料都是就一個個獨立的知識點進行講解,給出的範例程式碼也是與某個知識點相關的 demo 片段,這就導致很多 Rust 初學者開始學習時,感覺每一個知識點都可以理解。但當自己開始寫一個實際的計畫時,隨著計畫規模變大,各模組之間所有權、生命周期的相互制約,往往會導致開發者陷入「編譯器教你做人」的窘境。

因此,在這一階段,無論是 C/C++ 開發者,還是其他語言的開發者,都需要閱讀一些優秀計畫的程式碼,學習如何在實際問題中使用 Rust 的記憶體安全模型。

【Rust 遊戲開發實戰】 這本書就實作了兩階段的學習過程,幫助讀者深刻理解所有權機制,並且在一個完整的遊戲開發中強化並用好 Rust 記憶體管理機制。本書還引導讀者掌握遊戲開發知識,介紹了適用於 Unity、Unreal 等遊戲引擎的技巧。

本書作者 赫伯特·沃爾弗森 (Herbert Wolverson) 是一名非常有經驗的程式設計師,主要從事遊戲開發工作,是 RLTK 和 Nox Futura 開源計畫的開發者。他在遊戲開發社群非常活躍,為多個開源計畫做出過貢獻。

跟著技術大拿不僅能輕松學會 Rust,還能從 0 到 1 做出自己的第一個遊戲,趕緊嘗試一下吧。

Part.2

玩著遊戲輕松學會Rust

本書以【地下城爬行者】這款遊戲的開發過程,為我們講述 Rust 的語言特性與遊戲開發技巧

書中先是說明了 Rust 開發環境的搭建和基礎語法的學習,使讀者能夠快速理解並運用 Rust 的核心概念,如所有權、借用和模式匹配。接著介紹 Cargo 作為包管理工具和構建工具的使用,以及 Clippy 等代分碼析工具,幫助讀者提高編碼效率和程式碼品質。

書中還深入介紹了實體元件系統 (ECS) ,說明如何使用 ECS 來管理遊戲邏輯,實作程式碼復用,並簡化復雜系統的開發。探索 Rust 的高級特性,如 trait 和泛型,展示如何透過它們實作程式碼的模組化和可重用性。

在遊戲設計環節,透過建立遊戲設計文件,將遊戲概念具體化,引導讀者規劃和設計遊戲,包括遊戲機制和最簡可行產品 (MVP) 的確定。

編碼實踐從最簡單的「Hello, World」程式開始,以層層推進的方式構建具有圖形界面的完整遊戲。

書中詳細講解如何實作遊戲的關鍵機制,包括玩家控制、回合制移動、戰鬥系統、生命值管理,以及遊戲的勝利和失敗條件。介紹如何設計和實作不同主題的地圖,以及如何透過地圖生成演算法創造出具有挑戰性的地下城環境。

說明如何為遊戲添加背包系統、道具管理和升級獎勵機制,增加遊戲的深度和可玩性。在遊戲開發接近尾聲時,討論如何打包和釋出遊戲,同時提供進階開發技巧和建議。

怎麽樣,學完這本書,你是不是體會到了 Rust 的強大之處?現在你不僅輕松掌握了 Rust,第一個遊戲也開發成功!

Part.3

結語

話說興趣才是最好的老師,本書作者沃爾弗森就是從小接觸電腦遊戲,然後在父親的引導下從 BASIC 語言開始學習,歷經 Pascal、C/C++ 等語言,一直從事遊戲開發工作。

直到他遇見 Rust,相見恨晚,在深入使用之後,將自己的實踐經驗和盤托出,寫出了這本寓教於樂的好書。

本書一大特點是,不同於其他教材類圖書死板的說教,作者以一個 遊戲獨立開發者 的身份,介紹一個自由開發者如何發現生活中的靈感,如何享受遊戲開發帶來的樂趣。

另一大特點,則是 全面側重於實戰 ,強調務實的「做中學」方法,理論部份篇幅很短,隨後便是可供嘗試的具體例子。所以讀者在學習時,遇到抽象的概念不要鉆牛角尖,而應在動手編碼偵錯中去理解吸收。

精彩程式碼範例

讀者可以時刻感受到作者對遊戲開發的喜愛和熱情。透過閱讀,讀者或授權以在繁忙的工作中重新找回最初編寫程式時的喜悅和興奮。

誰還沒有一個遊戲開發的夢想呢?現在翻開 【Rust 遊戲開發實戰】 ,玩轉 Rust,實作自己的遊戲夢吧!

點選下方,即可購書

—END—

分享你心中的遊戲創意

在留言區參與互動,並點選在看和轉發活動到朋友圈,我們將選4名讀者獲得紙質書1本,截止時間7月15日。