1. 程式人生 > >做服務端開發所需要的知識

做服務端開發所需要的知識

layer eat 推薦 基本上 strong 層次 經驗 tor hang

網上流傳一篇文章叫<Linux C++服務器端開發技術>,也就是做Linux C++開發需要哪些技術,內容如下

1、基本知識:掌握C/C++語法,熟悉STL標準庫、ACE庫、Boost庫。

2、應用技能:多線程編程、網絡編程、Oralce數據庫、內存管理、正則表達式。
3、內功修煉:算法與數據結構操作系統、軟件工程、數據庫原理、設計模式。
4、綜合素質:溝通能力、表達能力、人際交往能力、英文閱讀能力。
5、工具使用:GDBGCCMakefile、單元測試SVN版本管理、UML
6、其他技能:Python語言、shell語言、XML語言、Linux常用命令。

我做遊戲後端開發兩年多,想說一說自己的看法,其實裏面的ACE庫是非常老的庫了,基本上很少有公司用,我呆的第一家公司用過這個庫,他是用到一個網上的一個開源通訊框架,底層就是用的這個, 網絡庫,我呆過的公司基本是都是有自己的一套網絡通訊框架,數據庫學mysql和redis就夠了,設計模式,我層次的就也是了解,比如說我自己經常用的也就是單例模式和適配器模式,單例寫配置文件用的, 適配器是用於函數轉換 ,比如boost bind函數

但是我工作看公司的遊戲代碼會用到各種各樣的設計模式,

2,觀察者模式 又叫發布-訂閱(Publish/Subscribe)模式

觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己

onPlayerHpChanged()

一般情況下,比如你一個事件的改變可能影響其它行為的操作,都可以使用觀察者模式。比如,玩家在遊戲中使用了一個添加經驗的道具,執行使用道具的操作可能是有物品系統執行的,添加經驗之後,角色可能會升級,要根據經驗計算角色是否升級,還有可能任務系統需要統計某個角色添加了多少經驗之後可能觸發完成某個任務

3.命令模式

把一個請求看做一個對象。這樣用戶就可以參數化客戶端請求,實現請求的隊列操作和日誌管理,並且支持對操作進行撤銷回

講出了命令模式的核心思想:把一個命令看做一個對象。這樣做就能讓命令擁有所有對象所擁有的優勢

GM 指令一般來說能夠模擬玩家操作來快速獲得遊戲的一些資源或者推進遊戲進度。如果為玩家操作的命令類型實現一個 toScript() 方法

4. 代理模式

客戶端通常需要顯示其它玩家,而又不需要知道其它玩家的全部信息,只需要代理其他玩家。

5. 工廠方法模式 遊戲角色的產生

創建一個角色,創建一個AI XXFactory::createPlayer() XXFactory::createMonster()

工具cmake要學一下,

還有lua語言,

另外推薦兩本書網絡編程的書< Linux高性能服務器編程>,< Linux多線程服務端編程:使用muduo C++網絡庫>, 非常不錯,網上都有電子版的,如果找不到的話,留郵箱,我發到會發給大家,有錢還是買書哈,我自己就買了這兩本紙質書

第一次開博客寫文章,寫的先放到這裏

做服務端開發所需要的知識