日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转载】浅析游戏引擎开发

發(fā)布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】浅析游戏引擎开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

淺析游戲引擎開發(fā)

1  引言
電腦游戲作為一種娛樂方式越來越為人們所接受。即時通訊開發(fā)對于電腦游戲來說, 游戲引擎是用于控制游戲功能的
主程序, 如接受玩家控制信息的輸入, 選擇合適的聲音以合適的音量播放等。2D 游戲或者3D 游戲, 不管游
戲是怎樣的形式(是角色扮演游戲、即時策略游戲、冒險解謎游戲或是動作射擊游戲) 都有類似的起控制作
用的代碼。游戲引擎相當(dāng)于游戲的框架, 框架打好后, 關(guān)卡設(shè)計師、建模師、動畫師可往里填充內(nèi)容。
2  需求分析
游戲引擎是一個很復(fù)雜的系統(tǒng), 在這個設(shè)計中主要涉及到了以下幾項(xiàng)功能:
(1) 光影處理: 光影處理是用來處理游戲場景中光源對游戲中的人、地、物所影響變化的效果。
(2) 物理系統(tǒng): 用于模擬現(xiàn)實(shí)生活中的物體物理運(yùn)動的一個系統(tǒng)。
(3) 碰撞檢測: 碰撞檢測在游戲引擎中如此重要, 原因是現(xiàn)實(shí)生活中隨處都有碰撞的發(fā)生。
(4) 畫影成像: 這是游戲引擎一項(xiàng)必不可少的功能, 否則在游戲中將看不到游戲的圖像。
(5) 輸入與輸出: 提供給玩家與游戲交互的功能, 這也是游戲與電影的區(qū)別。
3  系統(tǒng)設(shè)計
311  功能設(shè)計
作為一個游戲引擎, 它必須是可用的、穩(wěn)定的、可維護(hù)的。它的主要功能有如下幾點(diǎn):
(1) 圖像處理: 曲線繪制, 圖像成像, 陰影生成, 粒子效果。
(2) 輸入處理: 鼠標(biāo)和鍵盤數(shù)據(jù)處理, 游戲文件裝載, 腳本讀取。
(3) 輸出處理: 游戲信息輸出, 玩家信息顯示, 游戲存檔建立, 音樂、音效輸出, 圖像輸出。
(4) 游戲邏輯處理: 控制劇情發(fā)展, 控制人物移動, 控制畫面顯示。
312  結(jié)構(gòu)設(shè)計
游戲引擎開發(fā)采用的是三層結(jié)構(gòu)模型:
第一層是游戲引擎的基礎(chǔ), 它包括圖像處理系統(tǒng), 輸入輸出系統(tǒng)和音樂、音效系統(tǒng)。
第二層是接口層, 設(shè)定上層與底層的訪問接口。
采用接口技術(shù)的好處就是更新底層實(shí)現(xiàn)的時候, 只要接口不被修改, 那么就不需要改動上層代碼, 實(shí)現(xiàn)
系統(tǒng)層次化結(jié)構(gòu)提高了系統(tǒng)的可維護(hù)性與可重用性。
·55 ·
第三層是游戲工具庫, 在這里提供了游戲開發(fā)的一些輔助工具, 主要是封裝了一些對底層實(shí)現(xiàn)的操作。
它包括地圖編輯器、腳本解析器、人物對話模塊、角色類、NPC 類和物品類等等一些在游戲中用到的模塊。
313  游戲引擎的IPO 圖
圖1  IPO 圖
圖2  引擎整體結(jié)構(gòu)圖
4  系統(tǒng)實(shí)現(xiàn)
411  引擎開發(fā)基礎(chǔ)和開發(fā)環(huán)境配置
41111  引擎開發(fā)工具的選擇
在本次開發(fā)游戲的引擎開發(fā)中, 我們使用DirectXSDK開發(fā)包與VC + + 610 編譯器。
41112  游戲開發(fā)的核心知識
游戲開發(fā)需要多方面的知識, 它包括很多非計算機(jī)專業(yè)和計算機(jī)專業(yè)方面的知識。開發(fā)一個游戲引擎,
最基本的數(shù)據(jù)結(jié)構(gòu)的知識是必不可少的, 如隊(duì)列、堆棧、數(shù)組、鏈表、樹、遞歸等等。
數(shù)字建模是數(shù)學(xué)的術(shù)語, 也是計算機(jī)游戲的術(shù)語。一般情況下游戲中的每一個對象, 人物、動物和植物
包括水、氣體等非生物都要進(jìn)行數(shù)字建模。
412  引擎圖像子系統(tǒng)的實(shí)現(xiàn)
41211  采用圖片拼接的方式來編輯地圖, 將待繪頁面分成n 個單元格, 在每個單元格中貼入我們想要的對
象部分, 貼入后設(shè)置該圖塊的屬性。
41212  圖像子系統(tǒng)的功能分析
需求: 實(shí)現(xiàn)2D 貼圖、地圖合成、序列動畫、基本圖形圖像繪制、屏幕渲染、畫面顯示、粒子系統(tǒng)。
413  引擎的輸入輸出子系統(tǒng)與聲音控制子系統(tǒng)
·56 ·
41311  輸入輸出方式
在windows 中獲取鼠標(biāo)和鍵盤信息是使用消息方式來獲取的。在游戲中, 同樣也是使用消息方式來獲取
鍵盤和鼠標(biāo)信息。因?yàn)? 游戲的輸入不僅由用戶來提供操作鍵盤和鼠標(biāo)消息, 有時候比如在劇情發(fā)展的時
候, 需要虛擬鍵盤和鼠標(biāo)消息來自動化游戲的進(jìn)行; 有時我們要對鍵盤和鼠標(biāo)的消息進(jìn)行處理來實(shí)現(xiàn)一些效
果, 比如當(dāng)鼠標(biāo)移動到屏幕的邊緣時, 我們要滾動地圖。這樣就必須實(shí)現(xiàn)實(shí)時的截獲鼠標(biāo)和鍵盤消息, 然后
處理。
41312  輸入輸出子系統(tǒng)的實(shí)現(xiàn)步驟
在這里使用的是DirectX 的DirectInput 庫來完成輸入消息截取的。游戲的運(yùn)行過程大致可以分成擦除、
移動、繪制、等待、重復(fù)這幾個步驟。
確定了在什么位置獲取輸入后, 接下來就要看具體的實(shí)現(xiàn)過程了。DirectInput 和DirectDraw 一樣是虛擬
設(shè)備, 也就是說不管底層的硬件是如何實(shí)現(xiàn)的, 只要符合標(biāo)準(zhǔn)的接口, 都可以通過DirectInput 來獲取輸入。
DirectInput 的實(shí)現(xiàn)過程是Win32 應(yīng)用程序→Direct 輸入→HEL (硬件仿真層) 或HAL (硬件抽象層) →硬件設(shè)
備驅(qū)動→設(shè)備。理論上DirectInput 可以支持所有的輸入設(shè)備如鼠標(biāo)、鍵盤、游戲搖桿、方向盤、踏板等, 但
在本文中用到的只有鍵盤和鼠標(biāo), 所以只要獲取鍵盤和鼠標(biāo)消息即可。
下面是設(shè)置DirectInput 的基本步驟:
(1) 通過調(diào)用DirectInput8Create ( ) 來創(chuàng)建IDirectInput 接口, 返回值是IDirectInput8 接口。
(2) 查詢設(shè)備的GUID
(3) 調(diào)用CreateDevice () 傳遞一個GUID : GUID SysKeyBoard 主鍵盤的GUID ; GUID SysMouse 主鼠標(biāo)的
GUID。
(4) 設(shè)置設(shè)備的協(xié)作等級, 通過調(diào)用IDirectInputDevice8 : : SetCooperativeLevel () 來完成。
(5) 調(diào)用SetDataFormat () 來設(shè)置每一個設(shè)備的數(shù)據(jù)格式。
(6) 使用IDirectInputDevice8 : : SetProperty () 設(shè)置你想要的任何設(shè)備的性能。
(7) 調(diào)用IDirectInputDevice8 : : Acquire () 來獲取設(shè)備, 即與設(shè)備關(guān)聯(lián)。
(8) 調(diào)用IDirectInputDevice8 : : GetDeviceState () 來獲取設(shè)備的數(shù)據(jù), 在這里有兩種方式實(shí)現(xiàn)數(shù)據(jù)采集方
式, 一是直接模式; 二是緩存模式。
41313  聲音子系統(tǒng)實(shí)現(xiàn)的步驟
實(shí)現(xiàn)音樂和音效處理, 我們用到的是Directx 中的DirectSound 和DirectMusic 庫。DirectSound 是控制音效
的, DirectMusic 是控制音樂播放的, 它是一種新的基于DLS 數(shù)據(jù)的實(shí)時音樂編排和回訪技術(shù)。
操作DirectSound :
(1) 初始化DirectSound , 聲明DirectSound 對象, 調(diào)用DirectSoundCreate ( ) 創(chuàng)建DirectSound 對象。
(2) 設(shè)定協(xié)作等級, 調(diào)用SetCooperativeLevel () 函數(shù), DirectSound 一共有四個協(xié)作等級: 普通級、優(yōu)先
級、排他級和Write Primary 級。
(3) 建立緩沖, 聲明DirectSound 緩沖, 調(diào)CreateSoundBuffer () 來創(chuàng)建緩沖對象。
(4) 把聲音寫入緩沖, 鎖定( Lock () ) 、寫入、解鎖( Unlock () ) 。
(5) 控制聲音播放: 播放聲音, 調(diào)用play () 函數(shù); 停止播放聲音, 調(diào)用stop () 函數(shù); 控制音量, 調(diào)
SetVolume () 函數(shù); 調(diào)整頻率, 調(diào)用SetFrequency () 函數(shù); 改變聲道平衡, 調(diào)用SetPan () 函數(shù)。
414  游戲工具庫開發(fā)
41411  地圖編輯器與腳本解析器的概述
地圖編輯器與腳本解析器是游戲開發(fā)的重要工具, 它們綜合利用底層的操作來實(shí)現(xiàn)游戲開發(fā)過程中比較
高級的功能。
41412  地圖編輯器的作用與功能介紹
地圖編輯器主要的功能是創(chuàng)建、編輯和保存游戲場景地圖文件。游戲場景地圖一般分為三層結(jié)構(gòu), 地面
層、物體層、天空層。地面層是用來貼入游戲場景的最底層圖片的, 如土地, 沙漠, 草地這些都可以歸結(jié)到
·57 ·
地面層; 物體層在這里不單單是一層, 物體層可分為上層和下層, 上層的物體可以遮擋人物, 下層的物體可
以阻擋人物, 所以在設(shè)計中把人物定位在物體的下層; 天空層是用來作效果處理的, 如想實(shí)現(xiàn)天黑效果, 你
不得不在物體層的上面加上一張黑色圖片。創(chuàng)建一張游戲場景地圖主要有以下幾個步驟: (1) 裝載進(jìn)入背景
圖; (2) 顯示背景圖; (3) 在圖上畫出格子; (4) 在某一格子貼入確定的景物; (5) 設(shè)置景物屬性; (6) 保
存地圖
41413  地圖編輯器技術(shù)實(shí)現(xiàn)
41414  腳本解析器技術(shù)實(shí)現(xiàn)
5  測試
在游戲引擎開發(fā)完之后, 游戲的創(chuàng)作就由設(shè)計師與美工來完成。首先, 創(chuàng)作游戲劇本, 確定了劇本之
后, 我們就要對劇本進(jìn)行分鏡處理, 確定在什么場景出現(xiàn)什么人物, 和什么樣的人物有什么樣的對話; 其
次, 使用地圖編輯器來制作游戲場景地圖; 最后, 編寫游戲的腳本文件, 編寫時要確定關(guān)卡和事件發(fā)生地
點(diǎn), 人物對話就按分鏡處理后的劇本就可以了。
6  結(jié)論
綜上完成了一個通用的2DRPG游戲引擎的基本功能。該引擎的主要特點(diǎn)是采用了模塊化設(shè)計思想來構(gòu)
建引擎的底層程序, 因此該引擎具有較強(qiáng)的擴(kuò)展性和可維護(hù)性。該引擎的工具庫具有高度的可重用性, 只需
經(jīng)過少許的改動就可以適應(yīng)新格式地圖的編輯。該游戲引擎是按照網(wǎng)絡(luò)游戲引擎設(shè)計的, 所以游戲引擎可以
進(jìn)一步的升級為一個網(wǎng)絡(luò)游戲的引擎, 用于網(wǎng)絡(luò)游戲客戶端程序的開發(fā)。如果對引擎的底層圖形系統(tǒng)進(jìn)行優(yōu)
化, 可以將引擎升級為215D 的引擎。本文限于篇幅部分環(huán)節(jié)省略, 部分程序代碼沒有給出。

總結(jié)

以上是生活随笔為你收集整理的【转载】浅析游戏引擎开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。