- 博客(28)
- 收藏
- 关注
原创 游戏开发日志(1)
很久没有在自己的Blog发表文章了,感觉有点过意不去。于是今天试过N次密码后终于以管理员的身份进入了久违的专栏。(自己的记性是越来越差了!) 掐指一算,进入游戏开发这个行业已经有一年半的时间了,想当初刚进公司的时候,还是一个懵懂的顽童,现在也可算是久经沙场啦。原来在一家台湾的制造企业里打工,不知不觉过了两年,两年的时间里经历许多事情,但总体上还是比较平凡的,没有什
2006-08-11 17:09:00
1343
3
原创 游戏开发日志(1)
很久没有在自己的Blog发表文章了,感觉有点过意不去。于是今天试过N次密码后终于以管理员的身份进入了久违的专栏。(自己的记性是越来越差了!) 掐指一算,进入游戏开发这个行业已经有一年半的时间了,想当初刚进公司的时候,还是一个懵懂的顽童,现在也可算是久经沙场啦。原来在一家台湾的制造企业里打工,不知不觉过了两年,两年的时间里经历许多事情,但总体上还是比较平凡的,没有什
2006-08-11 17:04:00
1299
原创 勿在浮沙築高台
前段時間我寫了一些關於Quake源碼分析的文章,發現一到圖形渲染部分自己就傻眼了.很多代碼不知所云,很是苦惱.看來這是基礎不牢的緣故,對3D渲染中常用技術的理解尚待提高.所以如今又將書本捧起,決心弄個水落石出,但進展緩慢,一些低層的實現我是通過英文版圖書來尋找答案的,讀起來甚是費勁.不由感嘆國內相關書籍的匱乏,而引進又不能緊跟,讓讀者無從下手.
2004-11-05 09:21:00
1347
原创 Quake源代碼分析(草稿).5
網絡部分補充說明: 負責傳送網間封包Sys_SendPacket()函數,調用了sendto這個Win socket API,它的作用是: The sendto function is normally used on a connectionless socket to send a datagram to a specific peer socket ident
2004-10-12 09:31:00
1713
3
原创 Quake源代碼分析(草稿).4
Quake網絡部分總結:(1) 網絡部分被分為接收和傳送兩個部分.(2) 傳送部份被分為本地數據包傳輸和異地數據包傳輸兩個部分.(3) 本地封包傳輸由NET_SendLoopbackPacket()負責.(4) 異地封包傳輸由Sys_SendPacket()負責.(5) 數據包傳輸又可以分為單包傳輸和多包傳輸.(6) NET_SendPacket()可以傳送本地或異地不超過一個封包大小的數據包.也
2004-10-11 13:55:00
1867
2
原创 Quake源代碼分析(草稿).3
消息處理: 我把Quake的消息分為兩類,一種是常用輸入設備產生的消息,譬如KeyBoard,Mouse,JoyStick等. 另一種就是網絡或本地傳輸數據包時引發的消息. 引擎中Com_EventLoop()函數負責將抓獲到的消息根據事件的類型分發給對應的處理函數,Com_GetEvent()可以從com_eventQueue和eventqueue數組隊列
2004-10-10 10:57:00
1717
2
原创 圖形及遊戲開發者的 3D 數學初級教程(翻譯).3
第二章 笛卡兒座標系 3D數學包含了所有3D空間中測量位置,距離,以及精確的角度的問題.最頻繁被使用到執行這些測量的框架稱之為笛卡兒座標系.笛卡兒數學是以雷內.笛卡兒的名字命名的,他是很有才氣的法國哲學家,物理學家,生理學家和數學家.生於1596年,死於16
2004-10-04 15:20:00
1711
4
原创 圖形及遊戲開發者的 3D 數學初級教程(翻譯).2
1.1 甚麼是 3D 數學這是一本關於3D數學的書, 研究3D世界中幾何體背後的數學. 3D數學與計算幾何相關, 它可以用算法解決幾何問題.3D數學與計算幾何在使用計算機建模或是理解3D世界的這些領域內有著廣泛的應用.例如 圖形, 遊戲, 模擬器, 機器人, 虛擬現實以及電影術. 這本書覆蓋了理論和使用C++的實現.理論部分解釋數學與幾何在3D中的關係.它也可以作為技術與公式的手冊使用.實踐
2004-10-04 12:36:00
1598
1
原创 圖形及遊戲開發者的 3D 數學初級教程(翻譯).1
圖形及遊戲開發者的 3D 數學初級教程 目錄 第一章 介紹 1.1 甚麼是3D數學 1.2 為甚麼你應該讀這本書 1.3 甚麼是你在讀這本書之前應該知道的 1.4 概览 第二章 笛卡兒座標系
2004-10-04 10:32:00
1773
原创 Quake源代碼分析(草稿).2
在上一篇文章里,我談到過Quake的各個邏輯模塊被封裝在不同的DLL中,它們之間的交互利用了引出函數作為接口.這一點有點像COM,不同的是COM需要對DLL進行註冊,因為COM有時要提供給多個應用程序來使用,應用程序通過註冊表裡的GUID定位DLL,然後再載入到程序的進程空間中.但是Quake的DLL就不同了,它不必讓所有的應用程序都知道它的存在,它是專屬於引擎的,離開了引擎它一無
2004-10-03 17:05:00
2145
4
原创 Quake源代碼分析(草稿).1
Quake是Id Software公司推出一款風迷全球的FPS遊戲.至今為止已經發展到了第三代,而且作為一個優良的遊戲引擎,它也被大量的運用到其他公司開發的遊戲當中.例如我們所熟知的CS,它就是在Quake2引擎上改良而來的.雖然裡面的代碼實現並不完全相同,但是整體框架還是Quake2的,只要是稍微接觸過Quake引擎的人都很容易看得出來.(它是那麼的經典,以至於一直沿用到今天,個
2004-09-30 09:40:00
3457
5
原创 明天要請假到銀行去取回磁卡,十一就指望它了.
真是倒霉,前天我的磁卡被ATM機無情地吞噬了.讓我哭笑不得. 剛開始本想取點小錢花花,沒有想到第一次把密碼給輸入錯了,我只好按下取消鍵.這一按可好,卡片是出來了,可是等我再次將磁卡插入ATM的時候,竟然被告知我的磁卡被沒收了,叫我第二天去銀行辦理取卡手續,搞我一肚子火氣. 分析出問題的關鍵是那台ATM機處理速度太慢,導致急於取錢的我還沒有磁卡完全彈
2004-09-29 16:25:00
1313
1
原创 Quake源碼的一個參數引用技巧
曾經在Quake源碼里看到下面一段代碼: int VM_Call( vm_t *vm, int instruction, ... ) { va_list argptr; int arg0; int arg1; int arg2; int arg3; int arg4; int arg5; int arg6; if( !vm ) { Com_Error( ERR_F
2004-09-29 14:33:00
1996
5
原创 關於引用指針的使用
今天有朋友又問我一個關於引用指針的問題:const int a=4;const int *pi = &a; const int *&ri = pi; // ok const int *&ri = &a error 他說為甚麼 const int *&ri = &a會出現錯誤,而const int *&ri = pi卻可以通過編譯.ri不也是一個指針嘛,它為甚麼不能夠接收a變量的
2004-09-29 13:36:00
1298
4
原创 朋友一個問題引發了我一連串的思考.
const int& ri = i; //ok,引用不區分類型 ri++; //error, ri為常量,不可變 i++; //ok,=右邊的變量與引用無關 ri=b; //error, ri為常量 i=j; //ok,=右邊的變量與引用無關 int & const ri = i; //error,不存在這種形式,沒有意義 他問我為甚麼ri++會出現編譯錯誤,而i++卻不會.ri,i
2004-09-28 12:14:00
1226
原创 VB新發現
最近本人在開發VB程序時發現VB竟然提供了Main函數入口.以前我總是認為用VB寫的WIN32應用程序都是以某個窗體作為整個程序的入口,如果沒有窗體,那麼就不是一個完整的程序.現在這個觀念應該被修正了,沒有窗體,程序一樣可以運行. 如果你在Modules中定義了一個Public的Main函數,並在Project菜單里的Project Properties選項窗口中把Start
2004-09-27 10:42:00
1065
7
原创 遊戲開發心得(3)
OpenGL的最大優勢是具備跨平台性,它可以運行在眾多操作系統上(UNIX,LINUX,WINDOWS等).但DirectX卻只能運行在Windows平台上.不過世界上大多數PC都安裝了Windows,所以DirectX對Windows的依賴並沒有給它的發展帶來太多的麻煩.相反DirectX正因為是MircoSoft自己研發的,所以它的最優化工作在Windows平台上要比OpenG
2004-09-27 10:23:00
983
转载 如何用正确的方法来写出质量好的软件的75条体会
1. 你们的项目组使用源代码管理工具了么?应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。 2. 你们的项目组使用缺陷管理系统了么?应该用。ClearQuest太复杂,我的推荐是BugZilla。3. 你们的测试组还在用Word写测试用例么?不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是
2004-09-24 10:45:00
1177
1
原创 遊戲開發心得(2)
引擎從架構上講分為以下幾個部分: 1. 圖像渲染. 2. 物理效果模擬. 3. 輸入控制. 4. 音效. 5. 網絡傳輸. 6. 內存資源管理. 7. 文件資源管理.[1] 圖像渲染是整個引擎當中技術含量最大的部件.許多大型的遊戲引擎都在這個方面下足了功夫.Quake就是一個很好的例子,毫不客氣的說,它的代碼體現
2004-09-23 15:07:00
1030
1
原创 遊戲開發心得(1)
今天的遊戲產業已經初俱規模,尤其網絡遊戲這一塊更是如日中天,於是乎就有很多青年人投身到了這個領域來.他們壞揣著美好的夢想,希望有那麼一天可以開發出一款令人難忘的遊戲.當然我也算是他們其中的一員,我同樣嚮往著那一天,可是我知道如果沒有打好堅實的基礎,那麼一切都將成為空談. 首先我談談做好一個遊戲需要具備那些知識和能力.第一要有頑強的意志力,因為無論開發甚麼類型的遊戲都要
2004-09-23 12:53:00
1099
1
原创 Oracle 数据库的备份与恢复
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的
2004-09-23 09:36:00
732
1
转载 師說
·(唐)韩愈· 古之学者必有师。师者,所以传道受业解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。生乎吾前,其闻道也固先乎吾,吾从而师之;生乎吾後,其闻道也亦先乎吾,吾从而师之。吾师道也,夫庸知其年之先後生於吾乎!是故无贵无贱无长无少,道之所存,师之所存也。嗟乎!师道之不传也久矣,欲人之无惑也难矣。古之圣人,其出人也远矣,犹且从师而问焉;今之众人,其下圣人也亦远矣,而耻学
2004-09-22 14:50:00
980
原创 如何使用VSS來管控你工程代碼
VSS(Visual Source Safe)是微軟隨同Visual Studio一起推出的版本控管軟件.它可以集中管理工程代碼. 一般情況下一個項目可能有很多人一起開發,每一個人只負責一個或幾個模塊的編寫與修改,那麼這就導致了代碼分散在不同的機器上,而且每台機器上的代碼版本會與實際版本不一致.今天如果A對某個模塊的代碼進行了修改,而這個模塊會對B的模塊造成影響,
2004-09-22 14:45:00
1467
1
原创 VB中類模塊實現與C++中類實現的比較(1)
VB6.0從本質上說不是一種純面向對象的語言,而是一種基於對象的語言.換句話就是面向對象的簡化,去除了一些對於初學者可能理解比較困難的面向對象的語言元素(例如繼承,重載...),使原來習慣使用面向過程語言編程的程序員開發起來更加得心應手. 但正是由於對Basic的使用慣性,導致在用VB6.0開發軟件時忽略了它對基於對象的支持.這個很像我們以前習慣用C來寫程序,一旦
2004-09-22 14:03:00
864
原创 使用子類化的方法來實現VB對特殊消息的響應
VB系統默認的窗體消息和控件消息處理函數並不能完全滿足我們的需求,有些消息我們不能對其進行處理,譬如說:WM_PAINT.如何才能獲取這些系統消息並處理它們呢?子類化的方法就顯示出了它的威力.子類化的意思是指將你之前創建窗體時提交給系統的消息處理函數替換掉,用另外一個新的函數暫時取代它,這樣你就可以接管所有由系統傳遞給這個函數的消息處理任務.待你的執行完你的消息處理代碼後,再將控制權移交回原來
2004-09-22 11:39:00
761
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人