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?- <?xmlversion="1.0"encoding="utf-8"?>
- <manifestxmlns:android="http://schemas.android.com/apk/res/android"
- package="org.loon.test"
- android:versionCode="1"
- android:versionName="1.0">
- <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
- <activityandroid:name=".Main"
- android:configChanges="orientation|keyboardHidden"
- <intent-filter
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
- <uses-sdkandroid:minSdkVersion="3"/>
- <uses-permission
- </manifest>
關於LGame-Android版的初始化配置:
[java] view plain copy print?- 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;
- publicclass Main extends LGameAndroid2DActivity {
- publicvoid 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遊戲移植效果(由於測試示例大部分為反向獲得,小弟沒有版權,所以無法釋出程式,萬望海涵(-_-)……):
以下為較早前釋出過的一些程式示例畫面(請下載較早前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日晚終於下雨了,所以小弟也暫時擺脫了“夏眠”狀態……