Rust游戲開發實戰( 簡體 字) | |
作者:[美]赫伯特·沃爾弗森(Herbert Wolverson) | 類別:1. -> 程式設計 -> 綜合 2. -> 遊戲 -> 遊戲程式 |
出版社:人民郵電出版社 | 3dWoo書號: 56401 詢問書籍請說出此書號! 有庫存 NT售價: 500 元 |
出版日:5/1/2024 | |
頁數:298 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115626608 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 一部分 初識Rust
第 1章 Rust及其開發環境 2 1.1 安裝Rust 2 1.1.1 在Microsoft Windows上安裝Rust 3 1.1.2 在其他操作系統上 安裝Rust 3 1.1.3 完成安裝 3 1.1.4 驗證安裝是否成功 4 1.1.5 測試Rust能否正常使用 5 1.1.6 版本更新 5 1.2 安裝并配置開發環境 6 1.3 用Cargo管理項目 7 1.3.1 為代碼選擇一個主目錄 7 1.3.2 用Cargo來開啟一個新項目 7 1.3.3 運行Hello,World 8 1.3.4 與版本控制系統的集成 8 1.4 創建第 一個Rust程序 9 1.4.1 Cargo的元數據 9 1.4.2 Hello,World程序 10 1.5 用Cargo來構建、檢查并運行項目 11 1.6 修正代碼格式 12 1.7 用Clippy來發現常見錯誤 13 1.8 用Cargo進行包管理 15 1.9 小結 16 第 2章 Rust的第 一步 17 2.1 創建一個新的項目 17 2.2 捕捉用戶輸入 17 2.2.1 提示訪客輸入姓名 18 2.2.2 用變量存儲姓名 18 2.2.3 接收鍵盤輸入 19 2.2.4 讀取用戶輸入 20 2.2.5 用占位符實現格式化打印 21 2.2.6 完整的問候程序 21 2.3 將輸入處理邏輯移入函數 22 2.4 修剪輸入數據 23 2.5 在數組中存儲字符串 24 2.5.1 聲明一個數組 25 2.5.2 在數組中查找元素 26 2.6 用結構體來組織數據 27 2.7 用向量來存儲數量可變的數據 32 2.7.1 派生調試信息 32 2.7.2 用向量代替數組 33 2.7.3 用break跳出循環 34 2.7.4 為向量添加新元素 34 2.8 用枚舉體來實現分類 36 2.8.1 枚舉體 36 2.8.2 使用枚舉類型和整數類型的數據成員 37 2.8.3 將枚舉類型賦值給變量 38 2.8.4 枚舉體的匹配 38 2.9 小結 41 第3章 構建第 一個Rust游戲 42 3.1 理解游戲循環 42 3.1.1 什么是bracket-lib以及bracket-terminal 44 3.1.2 創建一個使用bracket-lib的新項目 45 3.1.3 Hello,bracket Terminal 46 3.1.4 存儲狀態 46 3.1.5 Codepage 437: 由IBM擴展的ASCII字符集 50 3.2 創建不同的游戲模態 50 3.2.1 根據當前模態做出反應 51 3.2.2 play()函數的樁形式 52 3.2.3 主菜單 52 3.2.4 游戲結束菜單 54 3.2.5 完整的游戲控制流 54 3.3 添加游戲角色 55 3.3.1 渲染游戲角色 56 3.3.2 墜向不可避免的死亡 56 3.3.3 扇動翅膀 57 3.3.4 實例化玩家 57 3.3.5 常量 58 3.3.6 完善游戲程序的play()函數 59 3.3.7 扇動翅膀 60 3.4 創建障礙物并實現計分邏輯 60 3.4.1 渲染障礙物 61 3.4.2 一頭撞到墻上 62 3.4.3 記錄得分和障礙物的狀態 63 3.4.4 在play()函數中加入障礙物和計分邏輯 64 3.4.5 將得分顯示在游戲結束畫面上 64 3.4.6 在重玩游戲時重置得分和障礙物 65 3.4.7 Flappy Dragon游戲效果 65 3.5 小結 65 第二部分 開發地下城探險類游戲 第4章 設計地下城探險類游戲 68 4.1 設計文檔必備的幾個段落標題 68 4.1.1 為游戲命名 68 4.1.2 游戲的簡要介紹 68 4.1.3 游戲劇情 69 4.1.4 基本的游戲流程 69 4.1.5 最簡可行產品 69 4.1.6 延展目標 70 4.2 小結 70 第5章 編寫地下城探險類游戲 72 5.1 將代碼劃分為模塊 72 5.1.1 crate與模塊 72 5.1.2 新建一個空的地圖模塊 73 5.1.3 模塊的作用域 74 5.2 用prelude模塊來管理導入項 74 5.3 存儲地下城地圖 76 5.3.1 圖塊在程序中的表示方法 77 5.3.2 創建一個空地圖 77 5.3.3 為地圖建立索引 78 5.3.4 渲染地圖 79 5.3.5 使用地圖模塊的API 80 5.4 加入探險家 81 5.4.1 擴展地圖的API接口 81 5.4.2 創建玩家角色的數據結構 82 5.4.3 渲染玩家角色 83 5.4.4 移動玩家角色 83 5.4.5 使用玩家模塊的API 84 5.5 創建地下城 85 5.5.1 編寫地圖生成器模塊 86 5.5.2 用石墻把地圖填滿 87 5.5.3 開鑿房間 87 5.5.4 開鑿走廊 88 5.5.5 建造地圖并放置玩家角色 91 5.5.6 使用MapBuilder組件的API 91 5.6 Graphics,Camera,Action 92 5.6.1 地下城所使用的 Programmer Art 92 5.6.2 圖層 94 5.6.3 制作攝像機 95 5.6.4 用攝像機來渲染地圖 97 5.6.5 將玩家角色關聯到 攝像機 98 5.6.6 清理圖層,并關聯函數和攝像機 98 5.7 小結 99 第6章 創建地下城居民 100 6.1 名詞解釋 100 6.2 用組件編排出實體 101 6.3 安裝并使用Legion 102 6.3.1 將Legion添加到prelude中 103 6.3.2 刪除一些老代碼 103 6.3.3 創造游戲世界 104 6.4 編排出玩家角色 105 6.5 使用系統來實現復雜的邏輯 107 6.5.1 多個文件組成的模塊 108 6.5.2 理解什么是查詢 109 6.5.3 將處理玩家輸入作為一個系統 111 6.5.4 批量渲染 114 6.5.5 地圖渲染系統 115 6.5.6 實體渲染系統 116 6.6 添加怪獸 119 6.7 碰撞檢測 121 6.8 小結 123 第7章 與怪獸交替前行 124 7.1 讓怪獸隨機游走 124 7.2 在回合制的游戲中移動Entity 127 7.2.1 存儲回合狀態 127 7.2.2 輪番上陣 128 7.2.3 拆分調度器 129 7.2.4 結束玩家的回合 131 7.3 發送意圖消息 133 7.3.1 實體還可以當作消息來 使用 133 7.3.2 接收消息并進行移動 133 7.3.3 簡化玩家輸入處理邏輯 135 7.3.4 怪獸的移動消息 137 7.4 小結 137 第8章 生命值和近身戰斗 138 8.1 為實體賦予生命值 138 8.2 添加平視顯示系統 139 8.2.1 添加另一個渲染圖層 139 8.2.2 渲染平視顯示區 141 8.2.3 為怪獸添加名字 143 8.2.4 為怪獸添加名稱和生命值 143 8.2.5 用懸浮提示來區分怪獸 145 8.2.6 注冊各個系統 147 8.3 實現戰斗功能 148 8.3.1 刪除碰撞檢測系統 148 8.3.2 表示攻擊意圖 148 8.3.3 玩家主動攻擊 149 8.3.4 創建戰斗系統 151 8.3.5 怪獸的反擊 153 8.3.6 運行各個系統 154 8.4 將等待作為一種策略 155 8.5 小結 157 第9章 勝與負 158 9.1 創造更聰明的怪獸 158 9.1.1 標記新的行為 159 9.1.2 通過trait來支持尋路 160 9.1.3 映射地圖 160 9.1.4 在地圖中導航 161 9.1.5 具備熱成像追蹤能力的怪獸 164 9.1.6 定位玩家角色 165 9.1.7 迪杰斯特拉圖 165 9.1.8 追殺玩家角色 167 9.1.9 縮減玩家角色的生命值 169 9.2 實現游戲結束畫面 170 9.2.1 增加表示游戲結束的回合狀態 170 9.2.2 檢測游戲何時結束 171 9.2.3 顯示游戲結束畫面 172 9.3 尋找亞拉的護身符 173 9.3.1 構建護身符 173 9.3.2 安放護身符 174 9.3.3 判斷玩家是否勝利 177 9.3.4 恭賀玩家取得勝利 178 9.4 小結 181 第 10章 視場 182 10.1 定義實體的視場 182 10.1.1 圖塊的透明度 183 10.1.2 用HashSet來整理數據 183 10.1.3 用組件來存儲可見圖塊的集合 184 10.1.4 計算視場 187 10.1.5 渲染視場 189 10.1.6 隱藏實體 191 10.1.7 更新視場 192 10.2 限制怪獸的視場 193 10.3 添加空間記憶 195 10.3.1 逐步揭示地圖 195 10.3.2 更新地圖 196 10.3.3 渲染記憶中的地圖 196 10.3.4 視場的其他用途 198 10.4 小結 199 第 11章 更具可玩性的地下城 200 11.1 創建trait 200 11.1.1 拆分地圖建造器 201 11.1.2 用MapBuilder來提供地圖 建造服務 201 11.1.3 定義代表架構的trait 202 11.1.4 用參考實現來測試 trait 203 11.1.5 調用空地圖的架構 205 11.1.6 修改房間生成器 206 11.2 用元胞自動機算法來創建地圖 207 11.2.1 元胞自動機理論 207 11.2.2 實現元胞自動機 208 11.2.3 生成一些隨機噪聲 209 11.2.4 計算鄰居的數量 209 11.2.5 用迭代消除混亂 210 11.2.6 放置玩家角色 211 11.2.7 在沒有房間的情況下生成怪獸 213 11.2.8 建造地圖 214 11.2.9 調用基于元胞自動機的地圖架構 214 11.3 用Drunkard’s Walk算法來創建地圖 215 11.3.1 編寫初始代碼 216 11.3.2 用喝醉的礦工開鑿洞穴 216 11.3.3 評估地圖建造的完成度 217 11.3.4 一直挖到地圖生成完畢 218 11.3.5 激活新的地圖類型 220 11.3.6 隨機挑選架構 220 11.4 在地圖中使用預制區域 221 11.4.1 手工打造的地下城 221 11.4.2 放置金庫 222 11.5 小結 226 第 12章 地圖的主題風格 227 12.1 為地下城引入主題風格 227 12.1.1 用trait實現地下城主題風格 228 12.1.2 創建一片森林 229 12.2 使用主題風格進行渲染 230 12.2.1 挑選一個主題風格 231 12.2.2 使用選中的主題風格 232 12.2.3 根據主題風格來渲染地圖 233 12.3 釋放想象力 235 12.4 小結 235 第 13章 背包和道具 236 13.1 設計物品 236 13.1.1 用組件來描述物品 236 13.1.2 生成藥水和地圖 237 13.2 管理背包 239 13.2.1 撿起物品 240 13.2.2 顯示背包物品 241 13.2.3 發送物品激活消息 243 13.2.4 激活物品 245 13.2.5 應用治療特效 245 13.2.6 迭代物品并應用效果 246 13.2.7 處理療傷事件 247 13.2.8 添加到調度器 248 13.2.9 去掉通過休息恢復生命值 249 13.3 小結 250 第 14章 更深的地下城 251 14.1 為地圖添加樓梯 251 14.1.1 生成并渲染樓梯 251 14.1.2 更新地下城的行走邏輯 252 14.1.3 生成樓梯并替代護身符 253 14.2 追蹤游戲關卡 255 14.2.1 關卡切換狀態 256 14.2.2 切換關卡 257 14.2.3 找到玩家角色 258 14.2.4 標記需要保留的實體 258 14.2.5 刪除其余的實體 259 14.2.6 將視場設置為臟 259 14.2.7 創建新地圖 260 14.2.8 將玩家角色放置在新地圖中 260 14.2.9 創建亞拉的護身符或者樓梯 260 14.3 在平視顯示區中顯示當前關卡 261 14.4 小結 262 第 15章 戰斗系統和戰利品 263 15.1 設計數據驅動的地下城 263 15.1.1 讀取地下城的數據 265 15.1.2 擴展Spawner模塊 266 15.1.3 映射并加載模板 266 15.1.4 用數據驅動的方式生成實體 268 15.1.5 新春大掃除 272 15.2 擴展戰斗系統 274 15.2.1 由武器和爪子造成的傷害 274 15.2.2 傷害值組件 276 15.2.3 產生一些傷害 277 15.2.4 探險家不是八爪魚 278 15.3 添加更多寶劍 279 15.4 小結 280 第 16章 最后的步驟和潤色 281 16.1 打包游戲以進行分發 281 16.1.1 開啟發布模式和鏈接時 優化 281 16.1.2 分發游戲 282 16.2 開發屬于自己的地下城探險類游戲 283 16.3 更多內容 283 16.4 小結 284 第三部分 其他資源 附錄A ASCII/Codepage 437對照表 286 附錄B 簡短的游戲設計文檔 287 附錄C Rust語法速查表 294 本書主要介紹基于Rust語言開發游戲的方法,還介紹了適用于Unity、Unreal等游戲引擎的技巧。
本書先設置開發環境,然后引導讀者制作自己的Flappy Bird,借實例講解Rust語言的基礎知識。全書引導讀者逐步完成一個《地下城爬行者》(Dungeon Crawler)游戲項目,通過實戰幫助讀者掌握Rust的相關知識,掌握用Bevy開發游戲的方法,以及在不影響程序調試的情況下運行游戲系統,對所開發的游戲進行優化。 本書適合所有對Rust語言感興趣的讀者閱讀,也適合從事游戲開發的讀者參考。 |