這一次更新的間隔是很漫長的。之前的教程得到很多朋友的支持,讓我感到責任的沉重。一般說來,技術博客的文章通常是自己的學習筆記,但是作為一份被期望“零起步”的教程,我更多時候感到這份東西不僅僅是為我自己寫的。
SDL庫作為主要為游戲開發提供簡單易用的支持的API,相信很多朋友學習它的目的,也是跟我一樣,希望能做出自己夢想中的游戲吧。作為游戲,我始終相信一個觀點:(網絡)游戲,是以電腦和網絡為媒介,人與人之前的交流。游戲是我們營造“共同經歷”的一種方式。作為交流的主要工具,網絡起著決定性的作用。所以,本著對網絡這一部分的高度重視,我對SDL_net寄予厚望。
但是,現實是殘酷的。我不可否認SDL_net已經對網絡編程做了很好的封裝,但是問題是,socket編程本身并不是件簡單的事情。所以,實際上的情況是,僅僅靠學習SDL_net的函數庫,也許我們根本不可能搞明白網絡編程究竟是什么東東。必要的基礎知識是必須學習的,我逐漸明白這一塊我始終是不可能跳過去的。
既然必須要補上這一塊的知識,在具體的實現平臺上,我們必須做出選擇。經過均衡,我還是選擇從BSD socket入手。這不僅僅是因為BSD上的socket實現是最早的TCP/IP實現,是業內的事實標準;也是因為Win32 API實在是不能引起我的好感。
當然,我們不可否認Windows有他先進的地方。至少,在socket編程方面,基于線程而非Linux以進程為基礎的核心結構,可以更加有效的控制線程,并且線程的調度也更加均勻。在Linux下,無論是fork還是pthread,在我看來其實還是比不上WinThread的。但是,這反過來似乎也可以說明,在Linux下這兩個東西幾乎已經“夠用”了。況且,從原理上去學習和了解;去了解傳統和習慣形成的原因,是有助于我們理解這些通常在學術派的C/C++教科書上不會涉及到的知識:進程,線程,流程控制,通訊,甚至包括操作系統的基本原理。在我看來,這些知識是實際使用電腦編寫程序完全無法回避的內容,是一個實踐者必須掌握的知識。學術界對于程序的一般定義就是:數據+算法。而在今天我們看來,多進程,多線程,socket通訊等等,已經完全改變了傳統的編寫程序的方式和思路。如果讓我來定義,我覺得至少在前兩者的基礎上,還必須加上流程控制(包含了通訊的意思),這樣才能算是當代計算機程序的完善定義。
第十四章的內容,估計會比較長,也會比較難。我會按照從socket到SDL_net的順序去寫,當然爭取還是做到“零起步”的通俗易懂。這一部分,也會有一個單獨的名字《Linux socket編程入門教程》。雖然是用Linux的名字,但是大家應該知道所有的Linux上TCP/IP的實現,甚至UNIX上的TCP/IP實現,基本上都是源于BSD的TCP/IP實現的,并且直到今天,這些實現都是相互源代碼級兼容的。WinSock一般的說法也是源自socket,但是具體的函數會有不同。
接下來的知識對于我來說也是個很大的挑戰。因為涉及的面太廣了。想全部學完是不現實的,我們必須根據自己的需要,從這些知識中尋找出我們需要的部分,恩,努力吧!
posted on 2008-07-08 01:18
lf426 閱讀(3447)
評論(5) 編輯 收藏 引用 所屬分類:
SDL入門教程