1. 程式人生 > >Java遊戲開發框架LGame-0 2 6釋出(含PC及Android版)

Java遊戲開發框架LGame-0 2 6釋出(含PC及Android版)

               

本次更新發布日期:2010-07-31

關於LGame-Android版的AndroidManifest.xml配置:

此框架Android版具備LGameAndroid2DActivity以及LGameOpenGLActivity兩種啟動用Activity(後者暫未提供),針對LGameAndroid2DActivity的AndroidManifest.xml配置如下所示:

[xhtml] view plain copy print?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3.       package="org.loon.test"
  4.       android:versionCode="1"
  5.       android:versionName="1.0">
  6.     <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  7.         <activityandroid:name=".Main"
  8.                   android:configChanges="orientation|keyboardHidden"
  9.             <intent-filter
    >
  10.                 <actionandroid:name="android.intent.action.MAIN"/>
  11.                 <categoryandroid:name="android.intent.category.LAUNCHER"/>
  12.             </intent-filter>
  13.         </activity>
  14.     </application>
  15.     <uses-sdkandroid:minSdkVersion="3"/>
  16.     <uses-permission
    android:name="android.permission.INTERNET"/>
  17. </manifest>
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="org.loon.test"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".Main"                  android:configChanges="orientation|keyboardHidden"             <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <uses-sdk android:minSdkVersion="3" />    <uses-permission android:name="android.permission.INTERNET"/></manifest>

關於LGame-Android版的初始化配置:

[java] view plain copy print?
  1. package org.loon.test;  
  2. import org.loon.framework.android.game.LAD;  
  3. import org.loon.framework.android.game.LGameAndroid2DActivity;  
  4. import org.loon.framework.android.game.core.LSystem;  
  5. import android.os.Bundle;  
  6. publicclass Main extends LGameAndroid2DActivity {  
  7.     publicvoid onCreate(Bundle icicle) {  
  8.         // 有Admob廣告,縱屏顯示,廣告居於螢幕下方,廣告ID為“XXXXXXXX”,廣告重新整理速度為60秒
  9.         this.initialization(icicle,false,LAD.BOTTOM, "XXXXXXXX",60);  
  10.         // 無Admob廣告,縱屏顯示
  11.         // this.initialization(icicle,false);
  12.         // 使用遊戲窗體Game
  13.         this.setScreen(new Game());  
  14.         // 設定FPS為60
  15.         this.setFPS(60);  
  16.         // 不顯示遊戲Logo(設定Logo為setLogo)
  17.         this.setShowLogo(false);  
  18.         // 顯示FPS
  19.         this.setShowFPS(true);  
  20.         // 顯示遊戲畫面
  21.         this.showScreen();  
  22.     }  
  23. }                                           
package org.loon.test;import org.loon.framework.android.game.LAD;import org.loon.framework.android.game.LGameAndroid2DActivity;import org.loon.framework.android.game.core.LSystem;import android.os.Bundle;public class Main extends LGameAndroid2DActivity { public void onCreate(Bundle icicle) {  // 有Admob廣告,縱屏顯示,廣告居於螢幕下方,廣告ID為“XXXXXXXX”,廣告重新整理速度為60秒  this.initialization(icicle,false,LAD.BOTTOM, "XXXXXXXX",60);        // 無Admob廣告,縱屏顯示  // this.initialization(icicle,false);  // 使用遊戲窗體Game  this.setScreen(new Game());  // 設定FPS為60  this.setFPS(60);  // 不顯示遊戲Logo(設定Logo為setLogo)  this.setShowLogo(false);  // 顯示FPS  this.setShowFPS(true);  // 顯示遊戲畫面  this.showScreen(); }}                                        

關於Android版以及PC版的共同變化:

1、擴充了原有的LGraphics類,目前的LGraphics幾乎涵蓋了J2ME及J2SE中所有的Graphics API。

2、加入了CanvasScreen類,這是一個仿J2ME中GameCanvas的實現(以Screen封裝),它和普通Screen的主要差別在於不會主動重新整理畫面,重新整理僅在執行repaint時有效,另外CanvasScreen的API在Android和PC版中完全一致。

3、為簡化J2ME遊戲移植,加入了仿J2ME的精靈類包(完全等價於J2ME中Sprite類的相關係列,API為1:1實現)。

4、為簡化J2ME遊戲移植,加入了仿J2ME的儲存類包(完全等價於J2ME中RecordStore類的相關係列,API為1:1實現,具體到在PC平臺為文字方式儲存,在Android平臺為SQLite方式儲存)。

5、在原有LGame的精靈包中增加了SpriteTiled類(仿TitleLayer實現),擴充了Sprites類(增加了仿LayerManager的API),但在細節上與J2ME中的相關類有所差異,在需要1:1移植J2ME遊戲時,請使用擴充的J2ME包。

6、增加了一種資原始檔打包方式,使用者可以通過LPKUtils類(此類PC版特有),將指定檔案或資料夾中資源打包為LPK檔案(字尾任意,檔案頭會統一標識為LGPK),並通過LPKResource類進行讀取(此為Android版和PC版共有),以避免遊戲資源被人輕易盜用(由於此框架開源,建議使用者對原始碼中混淆方式進行少許修改後使用)。

7、擴充套件了部分原有類庫。

8、修正了一些原有BUG。

關於Android版:

由於LGame近期體積逐漸膨脹,考慮到移動平臺特性,在此0.2.6版中我將某些可以通過Android類庫自有功能替換的類包暫時移除(諸如Ioc、xml、http操作等),此部分功能在下一版中會分包釋出,目前需要此部分功能的網友請從上一版本直接COPY即可。

PS:此次開發中反向了大量的J2ME遊戲進行移植實驗,能夠保證絕大多數J2ME遊戲皆可正常移植,並且做到Android版和PC版通用(您問為什麼要加入仿J2ME的功能?當然是為了響應某知名公司號召:“科技,以換殼為主!”,至於怎麼“換”,那就看您的了~)。

以下為部分J2ME遊戲移植效果(由於測試示例大部分為反向獲得,小弟沒有版權,所以無法釋出程式,萬望海涵(-_-)……):

00

00

00

04

05

以下為較早前釋出過的一些程式示例畫面(請下載較早前LGame釋出版本獲得):

以下為LGame-Simple開發的部分遊戲示例畫面。

關於開發文件的說明:

有很多熱心網友,曾經訊問過小弟關於開發文件的事情,小弟在這裡明確的表個態,文件在8月份肯定會發布的(也就是趕在LGame-0.3釋出前)。

不過小弟還是要提前明確一點,在遊戲開發這個領域中,個人以為不太可能存在什麼特別神奇的開發說明手冊,能夠看過後就將所有難題一一攻克,寫出讓世人愛不釋手的遊戲來。因為即使有了完整的配套文件,也只能減少開發疑問,而不能根本性的提升使用者的遊戲開發能力。

我舉個例子,想必大家都知道目前iPhone領域的遊戲開發是非常火爆的,而iPhone的遊戲效果也是有目共睹的。但是,目前iPhone 2D開發中使用最多的Cocos2d,難道就有什麼能讓人一目瞭然的開發竅門嗎?難道就有什麼“一拖而就”的IDE在後面支撐嗎?我看也未必。

事實上,近期小弟常常會潛水在國內iPhone領域比較有代表性的Cocoachina網站上,也曾記極力想在上面找到任何堪稱“完備”的文件或教材以作參考。但看到最多的,卻往往還是那些隻言片語的疑問,以及連程式碼也沒有的簡短回答。甚至該站提供的Cocos2d置頂示例(http://www.cocoachina.com/bbs/read.php?tid-15554.html),個人認為,也並比小弟部落格中曾經給出過的示例更為直觀具體(坦白講,該例甚至還要初級很多),而Cocos2d在使用中所會面臨的繁瑣性以及Object-C語法的繁瑣性,小弟以為也更在LGame框架以及Java語法之上——至少LGame還有PC版可在臺式機上直觀的除錯後再移植到智慧機,而Cocos2d就只能在虛擬機器或真機上硬調了。

但是,就是這樣的Cocos2d,卻創造了無數個月入萬刀以上的iPhone開發者。所以,至今沒有人,也不可能有人敢於否定它的存在價值。

我在這裡想說的是,文件或示例肯定都是有用的,也都是會有的。可遊戲開發,更多還是要依靠開發者的主觀摸索與經驗積累。如果沒有這些,就算小弟能將魔獸世界整個做成示例,並一步步講解其實現原理,到最後世上流傳最多的,恐怕也不過是N種換殼的魔獸世界遊戲罷了。

————————————————————————

話說持續高溫的“京畿”,在2010年7月31日晚終於下雨了,所以小弟也暫時擺脫了“夏眠”狀態……