天天看點

SDL農場遊戲開發 11.總結1.總結2.把遊戲編碼為子產品的一個思路

1.總結

到目前為止,整個遊戲的開發已經完成了,整個開發過程跨時比較長,實作的基本上是比較完整的遊戲了,當然了,單純的農場類遊戲目前可能有些無趣,是以下面我提供一個思路,以便于将不同遊戲結合起來。

2.把遊戲編碼為子產品的一個思路

一個遊戲内有多種經典元素已經是司空見慣的,像我個人比較喜歡的符文工房3,就是集各種玩法為一體的遊戲。

舉個例子,現在的硬體廠家都是把各種傳感器封裝成一個子產品,一般情況下子產品需要:

  • 供電。
  • 規定的輸入。
  • 規定的輸出。

而若想要把一個遊戲封裝為子產品,最重要的同樣也是處理好輸入輸出。

以農場遊戲為例:

輸入輸出分為StaticData和DynamicData,其中StaticData僅為遊戲的輸入;而DynamicData既有輸入,又有輸出。

StaticData              =>               FarmStaticDataDelegate

  1. CropStruct* getCropStructById(int id)
  2. ExtensibleSoilStruct* getExtensibleSoilById(int id)
  3. getValueForKey() 等三個和一些宏

DynamicData       =>               FarmDataDelegate

  1. void updateCrop(Crop*crop);
  2. void updateSoil(Soil* soil);
  3. void shovelCrop(Crop* crop);
  4. int getFarmExpByLv(int lv);
  5. void addGood();
  6. void subGood();
  7. Value& getValueOfKey();
  8. void setValueOfKey();

這兩個委托器可以放置到FarmScene中。除此之外,FarmScene需要成為單例類或者在子節點中使用強制類型轉換來通路動靜态資料,個人傾向于後者,單例類相對比較麻煩;最後,還需要有兩個靜态方法:

  1. preloadResources() 預加載資源
  2. unloadResources() 解除安裝資源

這兩個函數來提供資源的加載和解除安裝。

繼續閱讀