網路遊戲伺服器開發,有哪些經典書籍?

知道遊戲伺服器開發需要具備網路編程,資料庫編程和大規模並發編程的知識。有沒有經典的書籍推薦。

讀過實體書《網路遊戲Server編程》,作者是一個韓國人,譯者也是一個韓國人,句子翻譯得有些不通順;正在讀《網路遊戲伺服器端編程》。


不勝了解,因為我入行時這方面沒有什麼書籍可以看。我覺得學習網遊伺服器開發可以從兩個方面下手:

  1. 基礎知識
  2. 架構知識

作為推薦,這裡我主要還是推薦自己仔細研讀過的書,而我讀過的書中某些可能已經很老了,甚至內容已經過時了,因此,這隻算是拋磚引玉,大家可以選擇類似的更新、更權威的書籍學習。

基礎知識主要包括:

  1. 語言。這裡之所以拿出來說,是因為某些語言可能導致你使用完全不同的思路來設計伺服器。一般來說,C/C++、Java、C# 之類可以歸為一類,而 Go、Erlang 和他們區別很顯著。關於語言的經典書籍太多,這裡就不說了。
  2. 網路。想了解協議底層實現,可以看《TCP/IP 詳解 卷2》。上層開發時,Windows 下可以看《Network Programming for Microsoft Windows》,Linux 下可以直接看看官方相關的 API 文檔。Windows 下 IOCP,Linux 下 epoll(其他類 Unix 下的技術類似)是需要掌握的。實際開發中,網路庫可能自己實現,也可以基於某些開源庫開發,所以,無論是出於學習還是使用目的,都可以研究一下開源庫,例如 libuv、libevent、boost ASIO。
  3. 操作系統相關。類 Unix 系統比較好的書籍就是《Advanced Programming in the UNIX Environment》了,Windows 下則可以看看《Windows核心編程》。系統相關的最核心的東西可能就是線程、進程,以及相關同步的內容了,看看《Multithreading applications in Win32》挺不錯(包括類 Unix 系統下的開發者)
  4. 資料庫。主要看你選擇 SQL 還是 NOSQL。基本上搞搞 mysql、redis 不會錯。
  5. 一些思想。光會各種技術是不能寫出好的代碼的,可能還需要學習一些更抽象的知識,所謂的一些」哲學「或者開發的指導思想。比較推薦的是《UNIX 編程藝術》,還有一本書《精益思想》,這本書和編程完全無直接關係。

架構知識:

關於架構的東西,需要經驗,我是沒有看過相關的書的。以我的經驗來說,閱讀一些伺服器源碼,理解他們的架構是一種重要的學習手段。還好,現在開源的遊戲伺服器框架也不少見,不乏有高質量的框架。另外就是在圈子裡多混,具體來說就是多看看在伺服器領域專研了多年的開發者的博客,從中學習他們的想法,或者上上 QQ 群(扯淡的居多)。

除了學習更重要的是實踐。如果有可能的話,從零實現一個遊戲伺服器框架,這會有很重要的意義。

想表達的東西很多,可能有一些偏了。


&<網路遊戲核心技術與實戰&>日本人寫的網路遊戲伺服器端開發的書, 結合遊戲開發講到了伺服器端的方方面面, 但是相對的可能不夠深入. 適合入門, 對遊戲和技術有更好的理解. 然後就可以針對特定的技術領域, 比如網路, 數據存儲等找專門的書來看了. 單純從技術角度而言, 基礎的東西並沒有太多的不同. 只是網路遊戲伺服器端的應用領域相對狹窄, 所以市面上專門的書籍並不多.


unix 網路編程,tcp/ip詳解,Unix環境高級編程


要想學到東西一定要看正式的項目代碼 看這裡 hstcscolor/awesome-gameserver-cn.


讀過實體書《網路遊戲Server編程》,作者是一個韓國人,譯者也是一個韓國人,句子翻譯得有些不通順;


推薦閱讀:

遊戲服務端中的分散式 ,集群?
遊戲數據存儲方案?
如何評價微軟的orleans框架?
遊戲伺服器使用MongoDB作為資料庫,還有必要使用Redis緩存嗎?
作為遊戲客戶端開發,需要掌握哪些伺服器方面的知識,以及如何學習?

TAG:編程語言 | 遊戲伺服器 | 經典書籍 |