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驗證,...