1. 程式人生 > >遊戲編程算法與技巧 Game Programming Algorithms and Techniques

遊戲編程算法與技巧 Game Programming Algorithms and Techniques

其中 單位 它的 服務 正則 正則表達式 啟發式 著色 話題

http://gamealgorithms.net

第1章 遊戲編程概述

第2章 2D圖形

第3章 遊戲中的線性代數

第4章 3D圖形

第5章 遊戲輸入

第6章 聲音

第7章 物理

第8章 攝像機

第9章 人工智能

第10章 用戶界面

第11章 腳本語言和數據格式

第12章 網絡遊戲

第13章 遊戲示例:橫向滾屏者(iOS)

第14章 遊戲示例:塔防(PC/Mac)

第1章 遊戲編程概述

  遊戲編程的發展

世界上第一款商業遊戲Computer Space在1971年推出.是後來Atari的創辦人Nolan Bushnell 和 Ted Dabney 開發的.這款遊戲當時並不是運行在傳統計算機上的.它的硬件甚至沒有處理器和內存.它只是一個簡單的狀態機,在多個狀態中轉換.Computer Space的所有邏輯必須在硬件上完成.

隨著"Atari 2600"在1977年推出,開發者們有了一個開發遊戲的平臺.這正是遊戲開發變得更加軟件化的時候,再也不用設計復雜的硬件了.從Atari時期一直到現在,仍然有一些遊戲技術保留著

家用機推出的時候,它的硬件就會被鎖定5年多,稱為一個"世代".家用機的優點也在於其鎖定了硬件,使得程序員可以有效利用機能.

    Atari時期(1977-1985年)

這個時期的程序員需要對底層硬件有一定的理解.CPU運行在1.1MHz,內存只有128字節.這些限制使得用C語言開發不太實際.大多數遊戲都是完全用匯編語言開發的. 更糟糕的是,調試是完全看個人能力的.沒有任何開發工具和SDK.

    NES和SNES時期(1985-1995年)

然而到了1983年,北美遊戲市場崩潰了.主要原因在於,市場上充斥著大量質量低下的遊戲.

直到1985年推出的紅白機(NES)才把產業帶回正軌.

到了超級任天堂(SNES)時代,開發團隊進一步擴大.隨著開發團隊的擴大,不可避免地會變得更加專業化.

NES和SNES的遊戲仍然完全用匯編語言開發,因為內存依然不足.幸運的是任天堂有提供SDK和開發工具,開發者不再像Atari時期那麽痛苦.

    PS和PS2時期(1995-2005年)

    Xbox360,PS3和Wii時期(2005-2013年)

    遊戲的未來

盡管遊戲開發多年來有許多變遷,有趣的是,許多早期概念到現在仍然適用,20年都沒變的核心概念的基礎部分: 遊戲循環, 遊戲時間管理和遊戲對象模型

  遊戲循環

整個遊戲程序的核心流程控制稱為遊戲循環.之所以是一個循環,是因為遊戲總是不斷地執行一系列動作直到玩家退出.每叠代一次遊戲循環稱為1幀.大部分實時遊戲每秒鐘更新30~60幀.如果一個遊戲跑60FPS(幀/秒),那麽這個遊戲循環每秒要執行60次.

遊戲開發中有著各種各樣的遊戲循環,選擇上需要考慮許多因素,其中以硬件因素為主

    傳統的遊戲循環

    多線程下的遊戲循環

  時間和遊戲

    真實時間和遊戲時間

    通過處理時間增量來表示遊戲邏輯

  遊戲對象

    遊戲對象的模型

    遊戲循環中的遊戲對象

  相關資料

    遊戲編程的發展

    遊戲循環

    遊戲對象

第2章 2D圖形

  2D渲染基礎

    CRT顯示器基礎

    像素緩沖區和垂直同步

  精靈

    繪制精靈

    動畫精靈

    精靈表單

  滾屏

    單軸滾屏

    無限滾屏

    平行滾屏

    四向滾屏

  磚塊地圖

    簡單的磚塊地圖

    斜視等視角磚塊地圖

  相關資料

    Cocos2D

    SDL

第3章 遊戲中的線性代數

  向量

    加法

    減法

    長度,單位向量和正規化

    標量乘積

    點乘

    問題舉例:向量反射

    叉乘

    問題舉例:旋轉一個2D角色

    線性插值

    坐標系

  矩陣

    加法/減法

    標量乘法

    乘法

    逆矩陣

    轉置

    用矩陣變換3D向量

  相關資料

第4章 3D圖形

  基礎

    多邊形

  坐標系

    模型坐標系

    世界坐標系

    視角/攝像機坐標系

    投影坐標系

  光照與著色

    顏色

    頂點屬性

    光照

    Phong光照模型

    著色

  可見性

    再探畫家算法

    深度緩沖區

  再探世界變換

    四元數

    3D遊戲對象的表示

  相關資料

第5章 遊戲輸入

  輸入設備

    數字輸入

    模擬輸入

  基於事件的輸入系統

    基礎事件系統

    一個更復雜的系統

  移動設備輸入

    觸屏和手勢

    加速器和陀螺儀

    其他移動設備輸入

  相關資料

第6章 聲音

  基本聲音

    原始數據

    聲音事件

  3D聲音

    監聽者和發射者

    衰減

    環繞聲

  數字信號處理

    常見數字信號處理效果

    區域標記

  其他聲音話題

    多普勒效應

    聲音遮擋

  相關資料

第7章 物理

  平面,射線和線段

    平面

    射線和線段

  碰撞幾何體

    包圍球

    軸對齊包圍盒

    朝向包圍盒

    膠囊體

    凸多邊形

    組合碰撞集合體

  碰撞檢測

    球與球的交叉

    AABB與AABB交叉

    線段與平面交叉

    線段與三角片交叉

    球與平面交叉

    球形掃掠體檢測

    響應碰撞

    優化碰撞

  基於物理的移動

    線性力學概覽

    可變時間步長帶來的問題

    力的計算

    歐拉和半隱式歐拉積分

    Verlet積分法

    其他積分方法

    角力學

  相關資料

第8章 攝像機

  攝像機的類型

    固定攝像機

    第一人稱攝像機

    跟隨攝像機

    場景切換攝像機

  透視投影

    視場

    寬高比

  攝像機的實現

    基礎的跟隨攝像機

    彈性跟隨攝像機

    旋轉攝像機

    第一人稱攝像機

    樣條攝像機

  攝像機支持算法

    攝像機碰撞

    揀選

  相關資料

第9章 人工智能

  "真"AI與遊戲AI

  尋路

    探索空間的表示

    可接受的啟發式算法

    貪婪最佳優先算法

    A*尋路

    Dijkstra算法

  基於狀態的行為

    AI的狀態機

    基礎的狀態機實現

    狀態機設計模式

  策略和計劃

    策略

    計劃

  相關資料

    通用AI

    尋路

    狀態

第10章 用戶界面

  菜單系統

    菜單棧

    按鈕

    打字

  HUD元素

    路點箭頭

    準心

    雷達

  其他需要考慮的UI問題

    支持多套分辨率

    本地化

    UI中間件

    用戶體驗

  相關資料

第11章 腳本語言和數據格式

  腳本語言

    折中

    腳本語言的類型

    Lua

    UnrealScript

    可視化腳本系統

  實現一門腳本語言

    標記化

    正則表達式

    語法分析

    代碼的執行和生成

  數據格式

    折中

    二進制格式

    INI

    XML

    JSON

  案例學習:<<魔獸世界>>中的UI Mod

    布局和事件

    行為

    問題:玩家自動操作

    問題:UI兼容性

    結論

  相關資料

第12章 網絡遊戲

  協議

    IP

    ICMP

    TCP

    UPD

  網絡拓撲

    服務器/客戶端

    點對點

  作弊

    信息作弊

    遊戲狀態作弊

    中間人攻擊

  相關資料

第13章 遊戲示例:橫向滾屏者(iOS)

  概覽

    Objective-C

    Cocos2D

  代碼分析

    AppDelegate

    MainMenuLayer

    GameplayScene

    ScrollingLayer

    Ship

    Projectile

    Enemy

    ObjectLayer

第14章 遊戲示例:塔防(PC/Mac)

  概覽

    C#

    XNA

    MonoGame

  代碼分析

    設置

    單件

    遊戲類

    遊戲狀態

    遊戲對象

    關卡

    計時器

    尋路

    攝像機和投影

    輸入

    物理

    本地化

    圖形

    聲音

    用戶界面

遊戲編程算法與技巧 Game Programming Algorithms and Techniques