書籍信息
中文名: 大型多人線上遊戲開發
作者: 亞歷山大 (ThorAlexander)譯者: 史曉明
圖書分類: 軟體
資源格式: PDF
版本: 掃描版
出版社: 人民郵電出版社
書號: 9787115152671
發行時間: 2006年12月01日
地區: 大陸
語言: 簡體中文
內容簡介
《大型多人線上遊戲開發》是一本系統介紹MMP(大型多人,Massively Multiplayer)線上遊戲開發知識的文集,匯集業內最優秀的遊戲開發人員智慧的精華。《大型多人線上遊戲開發》不僅從MMP遊戲的角度對客戶端技術進行了討論,還深入剖析了MMP遊戲設計、架構、服務端開發、資料庫技術以及MMP遊戲核心繫統等特定於MMP遊戲的知識。
目錄
MMP設計技術
1.1 《卡通城線上》:面向大眾的大型多人遊戲 Mike Goslin 2
1.1.1 遊戲設計問題 2
1.1.2 社會性問題 10
1.1.3 總結 13
1.2 每個人都需要某個人:怎樣讓線上遊戲玩家進行合作 Derek Sanderson 15
1.2.1 玩家不會進行合作,除非他們必須合作 16
1.2.2 角色扮演是主流:玩家間的合作在玩家可以提供獨特的功能時最為有效 17
1.2.3 提供功能:預先定義還是通過能力定義 17
1.2.4 為遊戲角色提供挑戰 18
1.2.5 保持功能的完整性 19
1.2.6 幫助玩家彼此找到對方 20
1.2.7 幫助玩家進行交流 21
1.2.8 總結 21
1.2.9 參考文獻 22
1.3 MMP遊戲中的遊戲平衡 Ben Hanson 23
1.3.1 為遊戲中的數值建立基線(baseline) 23
1.3.2 為數值編寫模擬程式 24
1.3.3 建立遊戲中的度量(Metric) 26
1.3.4 內部和外部測試 26
1.3.5 在發布後對遊戲進行平衡 27
1.3.6 對新功能進行平衡 28
1.3.7 總結 28
1.4 使用支付矩陣來設計遊戲平衡和AI John M. Olsen 29
1.4.1 什麼是支付矩陣? 29
1.4.2 “War”紙牌遊戲 30
1.4.3 囚徒困境(Prisoners Dilemma) 31
1.4.4 簡單的格鬥遊戲 31
1.4.5 不對稱的能力 33
1.4.6 延遲和停止 34
1.4.7 自動化 34
1.4.8 總結 36
1.4.9 參考文獻 37
1.5 使用用例來描述遊戲行為 Matthew Walker 38
1.5.1 什麼是用例? 38
1.5.2 為什麼要使用用例來開發MMP遊戲? 38
1.5.3 怎樣編寫用例? 39
1.5.4 如何識別用例? 39
1.5.5 用例中的元素:一個標準模版 40
1.5.6 漂亮的圖表 45
1.5.7 開始實現 46
1.5.8 用例的指導方針 50
1.5.9 總結 54
1.5.10 參考文獻 54
1.6 使用生命值來設計轉換因子 John M. Olsen 55
1.6.1 武器的價值 55
1.6.2 治療、防具和減輕傷害 58
1.6.3 從NPC獲得的戰利品 59
1.6.4 製造業 60
1.6.5 無關物品 61
1.6.6 檢驗 61
1.6.7 總結 61
1.7 在MMP遊戲設計中加入故事情節 Paul McInnes 62
1.7.1 為了一個更有意義的MMP 62
1.7.2 遊戲與故事情節:尷尬的結合 63
1.7.3 故事情節在計算機遊戲中的功能 63
1.7.4 挑戰更多的認知能力 64
1.7.5 使用有意義行動的最佳場所 65
1.7.6 為MMP遊戲模式加入故事情節 66
1.7.7 公共目標 68
1.7.8 總結 69
1.7.9 參考文獻 69
1.8 客戶服務和玩家聲望:一切都和信任有關 Paul D. Sage 70
1.8.1 搗亂(grief) 70
1.8.2 規則只是工具 71
1.8.3 意圖 72
1.8.4 當前的服務部門正在這樣做,或許他們還沒有意識到 72
1.8.5 聲望 73
1.8.6 正當行為 73
1.8.7 惡意行為 74
1.8.8 多樣性導致了所有的差異 75
1.8.9 當前使用的行為模式跟蹤方法 75
1.8.10 更多的問題 76
1.8.11 使用聲望 76
1.8.12 總結 76
MMP體系結構
2.1 為MMP遊戲製作仿真框架,第一部分:結構建模 Thor Alexander 80
2.1.1 體系結構縱覽 80
2.1.2 支持類 81
2.1.3 核心類 83
2.1.4 管理器類和工廠類 87
2.1.5 仿真類 88
2.1.6 總結 89
2.1.7 參考文獻 89
2.2 為MMP遊戲製作仿真框架,第二部分:行為建模 Thor Alexander 90
2.2.1 把用戶和行動者關聯起來 90
2.2.2 動作請求 90
2.2.3 動作調度 92
2.2.4 事件廣播和處理 92
2.2.5 服務端事件處理 93
2.2.6 客戶端事件處理 94
2.2.7 客戶端代理 94
2.2.8 仿真與表示分離 95
2.2.9 總結 96
2.3 為遊戲腳本創建一個“安全沙盤” Matthew Walker 97
2.3.1 腳本語言與MMP開發 97
2.3.2 使用沙盤的理由 98
2.3.3 安全沙盤的設計 99
2.3.4 在安全沙盤中編寫遊戲代碼 106
2.3.5 總結 108
2.3.6 參考文獻 108
2.4 大型多人遊戲中的單元測試 Matthew Walker 110
2.4.1 為什麼MMP遊戲需要單元測試 110
2.4.2 單元測試的定義 111
2.4.3 單元測試框架 114
2.4.4 測試先行的設計 117
2.4.5 實用因素 118
2.4.6 總結 121
2.4.7 參考文獻 121
2.5 使用Twisted框架進行MMP服務整合 Glyph Lefkowitz 123
2.5.1 DIY(Do It Yourself)所帶來的問題 124
2.5.2 付費找別人來做帶來的問題 124
2.5.3 問題小結 125
2.5.4 構造一個解決方案 125
2.5.5 簡介:通用的延遲執行機制 125
2.5.6 高層網路服務:全景代理 127
2.5.7 基於Web的工具 135
2.5.8 整合獨立對象 137
2.5.9 底層整合:協定與網路 139
2.5.10 開發社區 141
2.5.11 總結 141
2.5.12 參考文獻 142
2.6 Beyond 2:構建虛擬世界的開源平台 Jason Asbahr 143
2.6.1 縱覽 143
2.6.2 服務端架構 144
2.6.3 客戶端架構 146
2.6.4 仿真模型 146
2.6.5 總結 148
2.6.6 參考文獻 149
2.7 使用並行狀態機來創建可信的角色 Thor Alexander 150
2.7.1 狀態模式(State Pattern) 151
2.7.2 並行(Parallel)狀態層 152
2.7.3 狀態管理器 158
2.7.4 跨層阻止(Cross-Layer Blocking) 159
2.7.5 總結 160
2.7.6 參考文獻 160
2.8 在MMP服務中使用觀察者/可觀察者設計模式 Javier F. Otaegui 161
2.8.1 觀察者/可觀察者設計模式 161
2.8.2 基本架構 162
2.8.3 服務端架構 162
2.8.4 客戶端架構 166
2.8.5 增強 170
2.8.6 總結 171
2.8.7 參考文獻 171
服務端開發
3.1 無縫伺服器:優點和缺點 Jason Beardsley 174
3.1.1 殺死怪物不止一個方法 174
3.1.2 無縫世界模式的原型 176
3.1.3 無縫世界模式的優點 178
3.1.4 無縫世界的缺點 179
3.1.5 總結 184
3.2 服務端對象的更新頻率 John M. Olsen 186
3.2.1 視覺連貫性與精確度 186
3.2.2 需要傳送哪些數據 187
3.2.3 頻寬限制 187
3.2.4 每個用戶在服務端需要的數據 188
3.2.5 管理數據大小 188
3.2.6 更新佇列 189
3.2.7 預設的更新頻率 190
3.2.8 計算範圍 190
3.2.9 調整優先權 190
3.2.10 調整佇列 191
3.2.11 總結 192
3.3 MMP伺服器開發和維護 William Dalton 193
3.3.1 基本問題 193
3.3.2 對複雜度進行管理 196
3.3.3 總結 199
3.4 小型入口:使用手持設備來接入MMP遊戲世界 David Fox 200
3.4.1 無線設備和網路 200
3.4.2 J2ME 201
3.4.3 BREW(二進制的無線運行時環境) 202
3.4.4 無線界面和遊戲設計總覽 202
3.4.5 對象設計 203
3.4.6 網路設計:使用代理伺服器 208
3.4.7 總結 208
3.4.8 參考文獻 208
3.5 使用Python進行精確的遊戲事件廣播 Matthew Walker 209
3.5.1 事件驅動編程 209
3.5.2 延遲調用 211
3.5.3 事件廣播 215
3.5.4 精確的事件廣播 220
3.5.5 總結 226
3.5.6 參考文獻 226
3.6 在MMP遊戲中實現移動和物理模組的注意事項 Jay Lee 228
3.6.1 我們可以發布這個遊戲了嗎? 228
3.6.2 這是一場戰爭 229
3.6.3 服務端永遠是對的 229
3.6.4 移動的代價 230
3.6.5 移動速度 232
3.6.6 玩家可以從這裡到那裡嗎? 232
3.6.7 碰撞檢測 234
3.6.8 物品放置 236
3.6.9 侵入檢測(Hack Detection) 237
3.6.10 總結 238
3.6.11 參考文獻 238
客戶端開發
4.1 客戶端移動預測 Mark Brockington 240
4.1.1 遊戲的開發需要良好的移動預測 240
4.1.2 命令時間同步 241
4.1.3 合併路點 242
4.1.4 插值和推導 244
4.1.5 為瞄準延遲使用反向仿真 246
4.1.6 總結 247
4.1.7 參考文獻 247
4.2 保持流暢:異步客戶和時空穿梭 Jay Patterson 249
4.2.1 共享狀態的基本問題 250
4.2.2 航位推測法:時空探索者會做得更好 251
4.2.3 仿真時間表示:為時空穿梭建立通道 252
4.2.4 直接操縱時間 253
4.2.5 總結 255
4.2.6 參考文獻 256
4.3 使用程式生成遊戲世界:避免數據激增 Sean ONeil 257
4.3.1 運行時生成的優點 257
4.3.2 運行時生成的缺點 258
4.3.3 地形生成算法的分類 259
4.3.4 修改程式生成的地形 261
4.3.5 高效地渲染程式生成的地形 264
4.3.6 生成貼圖 266
4.3.7 在程式生成的地形進行碰撞檢測 267
4.3.8 大型遊戲世界中的比例問題 267
4.3.9 總結 270
4.3.10 參考文獻 270
4.4 為固定大小的對象編寫一個高速有效的分配器 Tom Gambill 272
4.4.1 C++中的記憶體分配 272
4.4.2 一個簡單的向量分配器 273
4.4.3 用戶友好的分配器模板 275
4.4.4 降低分配器的記憶體開銷 277
4.4.5 總結 279
4.5 使用貼圖定製三維角色 Todd Hayes 280
4.5.1 角色定製的類型 280
4.5.2 貼圖合成簡介 282
4.5.3 分層 283
4.5.4 貼圖定製模版和樣本 284
4.5.5 樣本集合 285
4.5.6 總體實現 286
4.5.7 對定製系統的進一步改進 288
4.5.8 系統的局限性 289
4.5.9 總結 289
4.6 遊戲機平台上MMP遊戲的獨特挑戰 John M. Olsen 290
4.6.1 環境 290
4.6.2 登錄 291
4.6.3 解析度 291
4.6.4 聊天頻道 291
4.6.5 選擇目標 293
4.6.6 選單 293
4.6.7 背囊管理和交易 294
4.6.8 持久化存儲空間的問題 295
4.6.9 補充界面 295
4.6.10 總結 296
資料庫技術
5.1 關係資料庫管理系統入門 Jay Lee 298
5.1.1 表 298
5.1.2 數據查詢和關聯 298
5.1.3 關係類型 300
5.1.4 屬性 301
5.1.5 正規化 302
5.1.6 操縱數據 302
5.1.7 總結 303
5.1.8 參考文獻 303
5.2 使用關係資料庫管理系統來編寫數據驅動的MMP遊戲 Jay Lee 304
5.2.1 最明顯的方法——為什麼它不可行 304
5.2.2 可行的方法 305
5.2.3 獲取數據 306
5.2.4 常量模組 306
5.2.5 查找表 308
5.2.6 字元串表 310
5.2.7 向客戶傳送數據 311
5.2.8 本地化 312
5.2.9 總結 313
5.2.10 參考文獻 313
5.3 MMP遊戲中的數據驅動系統 Sean Riley 314
5.3.1 在MMP遊戲中使用數據驅動系統的優點 314
5.3.2 在MMP遊戲中使用數據驅動系統 316
5.3.3 不同類型的數據源 316
5.3.4 由數據驅動的遊戲架構的類型 319
5.3.5 總結 323
5.3.6 參考文獻 323
5.4 使用資料庫來管理遊戲狀態數據 Christian Lange 324
5.4.1 模型(schema)設計 324
5.4.2 數據 326
5.4.3 注意事項 328
5.4.4 其他方法 329
5.4.5 總結 331
5.4.6 參考文獻 331
遊戲系統
6.1 從原料到成品:社會經濟中的職業生涯 Artie Rogers 334
6.1.1 原料獲取和加工 335
6.1.2 社會經濟中的合作製造 337
6.1.3 物品製造在社會經濟中起到的作用 339
6.1.4 總結 342
6.2 玩家房屋供給:我的房屋就是你的房屋 Paul D. Sage 343
6.2.1 成長之路 344
6.2.2 商業方法 344
6.2.3 地段、地段、地段! 345
6.2.4 應該把戟放在哪裡? 345
6.2.5 經驗與教訓 346
6.2.6 總結 347
6.3 社會遊戲系統:促進玩家社會化及提供遊戲回報的另一個途徑 Patricia Pizer 348
6.3.1 什麼是社會遊戲系統? 348
6.3.2 為什麼要讓玩家社會化? 350
6.3.3 目前使用的社會系統 352
6.3.4 回報社會性遊戲的創新方法 355
6.3.5 總結 358
6.3.6 參考文獻 359
6.4 為創建和管理行會設計靈活的命令集 John M. Olsen 360
6.4.1 創建 361
6.4.2 領導 361
6.4.3 標識 362
6.4.4 行會維護 364
6.4.5 財產 365
6.4.6 專用區域 366
6.4.7 交流 366
6.4.8 總結 368
6.5 創建聲望系統:《無冬城之夜》中的仇恨、寬恕和投降 Mark Brockington 369
6.5.1 友誼和仇恨的實現 369
6.5.2 寬恕 372
6.5.3 投降 375
6.5.4 玩家對戰的設定 376
6.5.5 總結 377
6.5.6 參考文獻 377
6.6 城邦政府在線上社區中的作用 Artie Rogers 378
6.6.1 公民生涯 379
6.6.2 參與城邦工作 381
6.6.3 定義政治過程 384
6.6.4 總結 386