咱們的目標,首先是爲邏輯開發程序員屏蔽掉底層細節。其次給他們提供簡明易用,同時又能夠擴展的類和接口。程序員
那麼對於遊戲邏輯的開發者來講,遊戲是什麼?數據庫
對這個問題的答案,我是從話劇中獲得的靈感。話劇是在一個布好景的舞臺上,一些演員按照劇本做出的行爲。遊戲跟這個很相似,只是多了玩家控制這個因素,能作出動做的也不只是演員,還包括許多其餘有響應的物體。所以遊戲基本能夠定義成:在一個或多個舞臺上,對象在玩家輸入或AI的控制下做出的行爲。網絡
由這個定義,獲得三個基本的類。舞臺類Stage,對象類Object和行爲類Action。之前的遊戲許可能是把行爲做爲對象的成員函數來實現,實踐證實那樣的設計不盡合理,更好的設計是把行爲從對象中分離出來,用不一樣的行爲組合來實現特定對象的功能。cocos2d自己就是這麼設計的,這裏沿用cocos2d的設計思想。由於存在不少行爲,行爲類Action其實是個類族,有不少派生類。框架
爲了管理舞臺的切換和加載,增長一個管理類StageManager。函數
玩家輸入和部分輸出由UI控制。UI是個比較大的系統,難以用一兩個類抽象,暫時先放到一邊。線程
再加上網絡消息管理NetManager,模塊間事件通信EventManager,以及程序啓動和配置類Application,就基本能夠知足遊戲邏輯開發的所有須要。這些類能夠屏蔽掉圖形、線程和網絡細節。剩下的數據庫/存取盤相對要複雜一些,能夠有相似Saver這樣的類提供讀寫操做,可是具體讀寫哪些內容可能還須要邏輯層寫至關數量的代碼,沒有想到比較好的通用方案。設計
這些類及其提供的接口,就是邏輯開發須要打交道的所有東西了。夠不夠呢?是否任何遊戲類型的任何遊戲邏輯,均可以用,而且只用這些類相關的詞彙來描述?就個人經驗來說,應該能夠知足絕大部分的需求了。對象
若是再進一步的話,道具,任務這種並不是全部,可是不少遊戲都會用到的系統,是否是能夠通用化?這個已經超出了簡單框架的範圍,留着之後考慮。接口