2013年11月17日 星期日

libgdx

最近有空看了一下libgdx,還滿有趣的跟大家分享一下心得。
  • What's the libgdx?

 什麼是libgdx,在 http://libgdx.badlogicgames.com/ 下方是這個寫的 "Desktop/Android/HTML5 Java game development framework",也是一個在桌機上、Android、HTML5上的遊戲開發的框架!使用它來開發的話,就可以同時在桌機上、Android 和 支持HTML5的brower上執行!是不是很吸引人,但是什麼是game development framework啊?這要從application說起了!
  • Application

     

Application就是應用程式,一個應用程式裏面往往包含了Files, Audio, Input, Graphics等元件,而程式就是從input讀取操作,來反應相對應的行為。也是所有的應用程式都有著相同的構成要素!
  • Game framework

 那什麼又是Game framework呢?遊戲有一個gerneral 的行為模式,也就是




LoadAssets(); 
While(notFinished){
    processUserInput(); 
    updateGameWorld(); 
    renderGameWorld();
}

LoadAssets(); 遊戲為了反應速度可以順暢,所以在開始前會將所需的資源(ex. 圖片、聲音),先load至記憶體中,以省去到時讀取的時間
之後便是一個無窮的迴圈來執行遊戲,裏面主要有三個步驟:
processUserInput(); 處理玩家的輸入(ex. touch, keyboard, sensor等的輸入)
updateGameWorld(); 由輸入或者一些規則來更新遊戲中的世界 (ex. 被打到消失、球掉下來等)
renderGameWorld(); 後一步便是把更新後的世界呈現給玩家 (ex. 畫面更新、音樂的播放等)
這三個步驟重復的執行,便形成了一個遊戲的基本框架。   

  • libgdx function

 說了這麼多,怎麼都沒有看到有什麼和libgdx相關的,這就來了!libgdx有什麼用呢?java本身就是有提供了一些對於file、audio、graphic的操作了!但是對於遊戲來說有些不足,遊戲的畫面處理需要更多function來滿足,libgdx在這方面implement許多加強fuction來滿足。另一個目的就是提供統一的function來使得開發的遊戲可以在不同平台上面執行!
  • libgdx gram framwork

光是提供一些更便利的function還算不上是game framework,所以的game framework必需把之前所提的game framwork implement出來,讓game developer不需再考量framework如何運作,而可以把心力放在遊戲的內容本身!使用libgdx不需要寫一個無窮的while迴圈,因為這部分已經完成了,game developer便可以將心力集中在 game、screen、stage、actor等的安排上!