工作日誌 2007 9 27

2021-04-13 11:22:54 字數 3208 閱讀 6637

kevin lynx

2007.9.27

mainly about recent work.

從pacshooter開發完成後,我的學習進度明顯慢了下來。可能自己真的懂得愛惜自己的身體,

所以即使慢了下來,心裡也不至於很內疚。最近慢慢恢復了一些,只是突然間覺得需要做

的事情又多了起來。習慣問題,我需要對過去一段時間,以及將來一段時間做出總結以及計

劃。從pacshooter開發完成,到現在差不多接近兩個月。接觸的東西主要包括(其他的太瑣碎了,

記不得了):

1.整理irrlicht論壇上乙個日本人的**,使其不用修改irrlicht引擎**就可以使用free

type實現中文。

2.修改那個日本人的**,將其結合進hge裡,使得在hge裡可以使用freetype實現中文輸出。

3.接觸了angelscript指令碼系統,然後將hge引擎繫結到該指令碼系統裡,使的可以直接寫指令碼

**來使用hge

4.這樣就到了9月,接觸lua,讀了lua的一些文件以及的部分篇章,

然後將hge繫結到lua中,使用了tolua++庫來結合lua和c++.

5.9月上旬在一遊戲公司待了幾天,大致地讀了一分mmorpg的客戶端**,對網路遊戲中宿主

程式與指令碼程式之間的協作,以及客戶端程式,客戶端指令碼,網路,伺服器端之間的協作有

了初步認識。

6.離開那個公司,繼續自己的學習。開始要求自己認真閱讀

一書。很早以前讀過這本書講directx的部分,這一次則是讀後面講製作rpg遊戲的章節。

對指令碼在rpg遊戲中的運用有了更深的認識,以及加強讀**的能力。

然後時間到了現在。這幾天想開發乙個自己的2d遊戲引擎的想法越來越強烈。很早之前我就

做過打算,如果我還能讀大三的話,我就要寫乙個自己的引擎。這個時候我覺得是很合適的。

我寫過八萬行(可統計的)的c++**,從如何實現乙個程式功能,到如何改善程式結構,再

到迷戀物件導向軟體架構,迷戀漂亮的設計模式,再到程式功能和**架構兩者兼顧。我

接觸過很多開源庫,雖然大部分都停留在使用、擴充套件的層次,但是即使如此,我還是獲得

很多軟體架構的感性認識。

因此,現在來著手寫一款自己的2d遊戲引擎,是再適合不過的時機了。我的目標不僅僅只是

單純地封裝一些底層**,並不是單純地玩玩facade模式,我的目標是要盡我所能地將它

做成乙個擴充套件性強,模組度高,功能讓大部分遊戲程式設計師滿足的遊戲引擎。但是我不會貿然

地就開始。我深知要孕育這麼乙個高度的庫不是容易的事。我更不願意我現在所說的一切,

將來永遠成不了現實。

就目前而言,在我心裡面,這個引擎包含的特點有:

1.基於功能的介面,這樣靈活性更大,但是會以外掛程式的形式提供乙個框架**,框架會讓

引擎更易上手。

2.使用硬體加速,跨平台圖形庫。這個引擎整體的設計會大面積地運用抽象機制,並且將

外掛程式化思想貫徹到整個設計中。因此,圖形庫將不單侷限於directx或opengl。目前的

想法是實現directx8.0和opengl兩個版本,也許將來還會加入directx9.0。

具體設計時可能會以system->loadrenderer( "d3d8renderer.dll )的形式處理,這樣

可以讓使用者在不修改引擎**的基礎上就加進新的底層渲染引擎。

3.支援常見的格式。為了加強靈活性(主要考慮到資源打包等情況),會將手動

載入到記憶體然後再處理。可能會涉及到使用一些檔案解析庫。

在設計時可能會做成類似於system->registerimageloader( new tgaloader() )之類的

形式,這樣使使用者可以再不修改引擎**的前提下就能擴充套件引擎支援的格式數量。

4.支援三種字型系統:gdi(windows下),字模,freetype。同理,使用者可以通過

註冊的方式來決定引擎使用哪乙個字型系統。其中,預設情況下gdi和freetype系統

可以支援中文輸出。後期完善可能會提供建立字模的工具。

5.設計自己的io檔案庫,同理,可以以註冊的方式註冊進新的io處理,引擎預設將提供

讀取zip壓縮格式的io檔案庫。當然,也可以直接讀取檔案。

6.掛接到cegui的gui系統,這也將使用註冊的方式,這使得不喜歡cegui的使用者不用將

cegui連線進工程。對於小遊戲,cegui也許太過龐大,因此也考慮建立自己的gui

系統,或者掛接guichan.

7.簡易的幀動畫引擎,主要我覺得我很早前寫的cspriteanim類不錯,被用在我的很多

遊戲裡。後期完善可考慮提供乙個動畫編輯工具。

8.支援對資源的指令碼定義,以及提供讀取指令碼配置檔案的功能。指令碼檔案將考慮ini和

xml兩者。這裡也許沒有必要提供註冊功能,如果使用的ini和xml解析庫本身就是

跨平台的話,就不需要。但是,有時候註冊的方式只是為了增強引擎的可定製能力。

後期完善可能會提供資源指令碼檔案編輯的工具。

9.聲音處理也將使用註冊的方式,可使用bass庫,或者fmod庫,目前考慮到時候提供

這兩個music manager,當然採用註冊機制,也就允許使用者建立自己的聲音處理器。

10.輸入部分也許會考慮直接使用ois庫,從而跨平台。如果不使用這個庫的話,到時候

我就需要進行一定的linux平台程式設計。引擎第一版可能就只支援linux和windows兩個

平台,其他的作業系統我沒有。

11.可能會提供基本的碰撞檢測什麼的,是否提供象素級的檢測,可能性比較小。

基本上目前想得到的就是這些,引擎定位於開發casual games,因此我沒加網路部分。

24號讀了2d引擎**,比較簡單,25號到今天讀了另乙個2d引擎**,稍微複雜點,

有些地方目前我也沒懂。值得注意的是,後者使用了很多boost的東西,讀的過程中也算是

接觸了下boost.

剛才在硬碟上找第三個引擎,準備繼續讀**。突然發現,每準備新讀乙個引擎**,就

感覺自己要面臨乙個新的世界。

打算未來一段時間學習opengl,對其基本的工作模式有個了解,這樣在我設計引擎抽象層

時,才會考慮到一些細節。將來寫openglrenderer的時候更是需要足夠的opengl知識。不

過這個不是難點,在有了足夠的學習經驗後,這些都是小事。

在gamedev找到一篇貌似是講解引擎開發的系列文章,接下來幾天打算好好讀下,不打算

翻譯出來。然後是接觸opengl,再然後是繼續讀一些引擎**,這個時候就可以讀基於

opengl的引擎**。

20070323工作日誌

11 32 今天先來第一件事就把昨天查詢的開題報告資料copy到電腦上 然後就開始寫開題報告,這個開題報告真麻煩 分開題報告 文獻綜述和任務書三個部分 開始以為有怎麼資料,湊湊copy應該就差不多,後來發現pdf中copy出來的都是imag 根本沒法用,那只好晚上找 找了半天,弄弄,還是沒搞完 頭都...

20070329工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...

20070330工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...