寫在最前面
仔細看看,上一篇博文是10月5號了,有很長的時間沒有寫部落格了。
升入大三以後時間愈發的少了,要忙著各種事情,也在糾結該繼續讀書還是找工作,讀書是讀國內的還是讀國外的…
libgdx這個系列的文章開篇一年有餘了,期間得到了很多朋友的鼓勵和意見,總的來說感覺還是蠻不錯的。
想了很久,我決定給這個系列的文章畫上一個句號。
就原因來說是多方面的:
第一是libgdx的版本從0.92到了今天的0.97版本,雖然總體架構變化不大,但是細節上的介面還是有很多差異了,早期的一些文章的執行個體代碼可能無法直接運行了,我又沒有精力細細檢查和修改,可能新入手的朋友們會遇到一些問題。
第二就是這個系列本身的問題,我開始寫的時候也沒有想什麼具體的東西,就是有一篇寫一篇的,整個系列來看沒有一種整體的駕馭性,繼續寫下去我感覺意義不大。
第三就是個人原因了,我其實並沒有做過太多的遊戲開發,當初接觸libgdx也是相當偶然的原因。一些對於遊戲開發更深入的東西我沒有研究,不敢隨意寫出來。
文章接下來的內容是一些極為零碎的東西,希望能夠有所用處。
Libgdx是什麼
我最感到慶幸的就是這個系列的文章的標題【android遊戲開發架構libgdx的使用】,雖然最開始瞭解不深入,但是這個標題卻是正確的。
Libgdx是一個遊戲開發架構,它不是一個遊戲引擎。
它的主要代碼是java,其中對於效率要求較高的部分是由C和C++寫成的。
它是跨平台的,支援Windows、Mac OS、Linux、Android(1.5+)、GWT,它對IOS的支援是基於MonoTouch和IKVM。
它是免費的,基於Apache License 2.0協議。
Libgdx的優勢是什嗎?我為什麼選擇它?
說實話,現在的遊戲架構和引擎有很多,選擇的面也很廣。比如龐大的cocos2d家族。
如果你的主要語言是Java,那麼推薦你使用Libgdx。
如果你主要涉足Android遊戲領域,那麼推薦你使用Libgdx。它可以方便的在案頭環境調試你的遊戲邏輯,你可以輕鬆地和那個緩慢的模擬器說拜拜了。
如果你希望更自由的開發,你希望控制和掌握你的代碼,那麼推薦你使用Libgdx。它的封裝比較低級,你可以基於它開發自己的遊戲引擎,而不是接受其他引擎的那套模式和理論。當然你不想太底層但又希望一定的自由,2D的UI庫和Stage給出了一套簡單的解決方案。
如果你追求高效,那麼推薦你使用Libgdx。也許你帶著有色的眼光…這貨是Java的吧!好吧,我也沒有做個相關的測試,不過推薦你看看這篇文章,它比較了主流的遊戲架構的方方面面。
Libgdx好用嗎?比起XX怎麼樣?
我經常在QQ和Email裡面看到這樣的詢問,說實話,我覺著這種問題意義不大。首先我沒有深入的研究過其他的遊戲架構和引擎,不敢斷言。其次個人的喜歡和需求是不同的,也許你喜歡Libgdx的這套API設計,也許你就是看不慣某種設計模式,這種問題很難有標準的答案,甚至常常引起爭端。
如果你想知道哪款開發架構或引擎適合你,你可以都試試再做出選擇。如果你覺得沒有時間或者這個功夫,那就雙眼一閉,隨便選一個吧。
Libgdx的使用廣嗎?有哪些遊戲使用了它?
我清楚問這個問題的人的意思和顧慮。但是我覺得一款遊戲的好壞和它使用什麼技術手段開發沒有大的關係。遊戲的美工,構思設計還有宣傳等等都會有很大的影響。
當然使用廣泛與否一定程度上關係著反饋的快捷和擷取協助的難易程度。我只能告訴你社區很活躍,任何問題都不會拖過半天(起碼我遇到的情況是這樣的)。我原來看過一個國外的網站,它統計了市場中的遊戲使用了第三方庫的情況,Libgdx的排名在20位以內,具體的資料和網址我記不清楚了。
如果你想知道什麼遊戲使用了Libgdx,你可以去社區看看,有一個列表專門收集基於Libgdx的遊戲。如果你硬要我舉個例子,不知道Google最近吸引不少眼球的Ingress能不能滿足你的心理期待。
Libgdx支援中文嗎?
很遺憾的告訴你不完全支援。不完全支援的意思是原生不支援,但是你可以通過一些辦法實現。你可以使用Herio或者TTF字型檔。
Libgdx的缺點那麼那麼多…
如果你真心實意的問這個問題,那麼我只能說你可以選擇別的,或者發揮你的實力改造它。
但是有些時候請先仔細琢磨琢磨再開口。我不止一次的看到了類似的問題:
- Libgdx使用的圖片寬與高皆為2的整數次冪,好麻煩
- Libgdx的文檔好少
- Libgdx沒有情境過渡效果
- Libgdx沒有XX功能
我應該如何開始
群上比較常見的問題就是 我是新手,我應該怎麼學習Libgdx。
我個人來看最好的例子就是官方的Wiki,從理念到搭建環境再到每個細節都有說明和介紹,可以先從那裡入手有個基本的瞭解。
然後就是官方的Demo,可以看看怎麼編寫一個個完整的項目。不過這裡注意一個問題,Demo的風格不敢說迥異,但也算各有不同。參考的時候一定多注意。
哪裡可以擷取協助
遇到問題的時候我推薦自己多想想,如果要擷取協助的話可以去論壇問,如果不習慣英文可以去群上問:
Libgdx遊戲引擎(1群)(148848483)
Libgdx遊戲引擎(3群)(187378034)
從字面看應該有2群的,不過我沒有加…還有其他群的話歡迎大家在下面留言。
總的來說QQ群還是比較活躍的。
除了我之前的文章可以參考意外,我推薦Mkey libgdx系列教程,雖然沒有很完整的體系,但是給出很多細節的解決方案。同時推薦這個項目https://code.google.com/p/c2d-engine/,它是基於Libgdx的,感覺看著不錯,起碼它給出了一部分人特別想要的情境切換的解決方案。
一些其他想法
最近接觸了Markdown,感覺就網路分享方面比Latex方便,同時又看了很多關於遊戲設計和其他引擎的理念的文獻,想把之前的東西整理一下做成一個稍微成體系的Libgdx中文文檔出來。
不過具體的題目和結構還在構想就是了…
組織方式和一部分內容已經完成,閱讀地址是http://libgdx.sinaapp.com/index.html,項目地址是https://github.com/htynkn/way-of-libgdx
最後這個以前文章的一個離線版本(不是我打包的哈),大家不想看線上看的話可以下載,不過我覺得效果不怎麼好就是了。
:http://pan.baidu.com/share/link?shareid=168280&uk=4127624209