cocos編寫農場偷菜小遊戲的總結

源碼及效果圖見GitHub:https://github.com/bigsinger/Farm

起因是要做遊戲保護,需要了解遊戲引擎並創建demo進行自測使用。於是先從比較簡單的cocos瞭解,由於本人對Lua腳本比較熟悉,而且手頭有一些從其他遊戲裏扒出來的資源和Lua腳本,想着可以複用,所以打算從cocos2dx-lua開始着手。

慢慢地發現Lua寫起來也很費勁,倒不是對設計模式和腳本的不瞭解,而是cocos導出的接口什麼的不熟悉,雖說可以查官方文檔,但畢竟是非強類型的動態腳本語言,返回的類型什麼的不確定,而且沒有智能提示,寫起來很是痛苦。

遂放棄Lua腳本,想着對 C++ 很熟悉,於是轉用 cocos2dx 4.0的C++版本,代碼寫起來是順手多了,而且設計模式和框架搭建也很輕鬆。但是,但是,在UI界面設計上卻是非常麻煩,不能所見即所得,往往是界面設計遠遠跟不上代碼的編寫,很是痛苦。

於是C++版本的農場偷菜小遊戲,也就寫了個大概就果斷終止了。

然後看cocos官網,瞭解到了cocos creator,下載體驗一番後,發現在UI界面設計上的確是個神器,可以不寫一行代碼就可以快速出原型,而且是所見即所得,速度非常之快。

但是,也有一個問題,就是代碼編寫遠跟不上UI界面的設計速度(至少是少了一個遠),因爲是使用的JavaScript語言,這個語言我一直不太滿意,也比較牴觸。但是沒辦法,JavaScript的江湖地位是有原因的,特別是隨着web和移動互聯網的發展一路崛起和火熱,這是跟着時代的潮流走對了方向,本人是很噁心這門語言。

但是拋開個人感情色彩理性地去考慮,JavaScript和Lua腳本一樣,都屬於非強制類型的動態腳本語言,它們的優點也是它們的缺點,在快速開發和系統性設計及大型項目中,有 2 個天然不足:類型不明確不支持智能提示、沒有面向對象思想,要知道這些缺點可是致命的。

所以,我也就快速搭建了下UI界面效果,沒打算多寫JavaScript代碼。

於是思考:特麼的,爲什麼就沒有一個腳本語言能有強類型而且支持面向對象思想嗎?

幸運地是,翻看網上博客的時候瞭解到了TypeScript,強類型而且支持面向對象,尼瑪簡直就是我所需要的,想想也是,我能感受到痛苦其他開發者也一樣感受到痛苦,編程語言往往就是這樣應運而生的。

翻看TypeScript百科,原來它誕生很多年了,是一種由微軟開發的開源、跨平臺的編程語言。它是JavaScript的超集,最終會被編譯爲JavaScript代碼。

從網上瞭解到這貨前幾年已經很火了,感嘆自己爲何現在纔去瞭解?因爲一直都秉持:技術的編程語言都差不多,掌握自己熟知的語言就足夠,沒必要學那麼多讓人眼花繚亂的編程語言,看來這個想法是錯誤的,編程語言可以不去學,但是一定要知道有這個東西,可以嘗試去了解其設計思想,有何優點有何缺點,背後誕生的動機。

可以去類比的語言諸如csharp、Python、go、kotlin、php等等,想明白了就知道爲什麼kotlin不會火起來,爲什麼C/C++、Java可以長盛不衰。

回頭再去看TypeScript,它正是解決了我上述遇到的痛點,解決了廣大的開發者的痛點。

然而,解決了這些問題還並不是很完美,再回到cocos creator上來。

UI設計太強勁了,而且可以跨多種平臺,讓開發者的效率成百倍的提升。

但是代碼開發上我覺得仍然不是很完美的,即使是採用TypeScript,我說說幾點個人感受:

  • 代碼編輯依賴外部專業的編輯器,IDEA的webstorm應該是最專業的了,但是貌似用起來又太重,VSCODE不算完美但是輕巧,所以官方也是推薦用VSCODE,但說實話VSCODE還是差的太多,連自家的VisualStudio都差一大截。
  • 代碼編寫還是蹩腳,寫起來不順,綁定關係看着有點暈,說是數據和功能分開,但是真搞不清,可能我對這個工具還是不熟
  • 程序啓動邏輯不夠系統化,都是分散的片段、片段……

雖然上面的各種不爽,但是估計是對前端開發人員來說可能已經足夠好了。cocos creator利好的可能是美工人員以及H5小遊戲的開發者。

鑑於以上的經歷和認識,後面代碼我是不打算寫了,這次摸清了幾件事:

  • 以後不碰JavaScript了,有TypeScript就選擇TypeScript,沒二話!
  • cocos creator 做原型設計,UI界面沒話說,快就一個字!與之對應的白鷺引擎可能也是類似的,有機會也體驗一下吧。
  • 有空可以看看cocos creator的官方示例和視頻教程,瞭解優秀的設計思想。
  • 有空可以看看其他人寫的cocos creator+TypeScript例子,看看是否真正解決了自己的痛點,還是說它本身就是這麼回事。
  • 最後感嘆:程序員似乎都是在爲他人解決痛點,很少能爲自己的同行解決,如此看來,csharp、Java還真是目前思想和設計上一流的語言。
  • 腳本編寫也是基於cocos2dx引擎的,引擎本身才是核心,遊戲腳本編寫會了又怎樣?也不過是搬磚,但話說話回來也可以去實現自己心中理想的遊戲世界,有情懷的也可以去創造自己的作品。
  • 會寫小遊戲跟寫一個好玩的遊戲、能賺錢的遊戲之間還差十萬八千里,會寫只是說入門了,可以開始搬磚了,但話說話回來也可以去實現自己心中理想的遊戲世界,有情懷的也可以去創造自己的作品。
  • c++ 這塊的語言優勢沒有利用起來,建議是讓引擎、ui設計與遊戲代碼開發分開,cocos creator生成的界面也能爲 c++ 版本使用,界面數據可以分離導出使用,這塊可以參考protobuff的設計思想,有一個自動生成的工具。
  • 要想一下unity比cocos更火的一個原因,除了遊戲ui設計(這塊最終都會差不多),它還採用了一個絕佳的編程語言csharp
  • cocos亂象,什麼cocos、cocos2dx、quick、 什麼studio、什麼creator 讓人眼花繚亂,分不清都是什麼跟什麼,烏七八糟。
  • TypeScript(含js)會繼續熱下去,也會一直是小遊戲的主流語言,沒辦法,趨勢如此定位如此,跨平臺及前端大軍的市場份額已經很難再動搖其地位了。
  • 可以多瞭解下游戲的周邊工具,真的蠻有意思,設計也很有創意,這次就從零接觸了:cocos creator、Tiled Map Editor、Cocos Studio、TexturePacker、TextureUnPacker、DragonBones,推而廣之,就是很多東西你可以不必深入學習掌握,但是瞭解下也能開開腦洞和思維。

最後,把效果圖貼上來,這個效果如果簡單瞭解cocos creator的用法(如果不瞭解也沒關係,花5分鐘就可以瞭解了,就是如此神器),幾分鐘就可以搭建出來了,主要是素材的積累。素材在真實項目中要靠美工,我這個全是網上搜索的,有一部分使用了Farm: SDL SDL_Engine開發的一個農場類遊戲裏的資源,有一部分是從老版本的率土之濱裏扒出來的資源,以上資源均是學習研究使用,均沒有做其他目的使用,如果侵權請告知,會在第一時間刪除。

把項目也全部開源上傳到GitHub,有興趣的可以參考學習,也可以在上面迭代。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章