精华内容
下载资源
问答
  • LGame-LGame-0.5-Beta-fix1
  • LGame神枪手游戏源码

    2021-03-16 13:48:48
    一款LGAME游戏引擎开发的打蜜蜂神枪手游戏,画面不错,游戏流程也比较流畅。
  • LGame-master.zip

    2019-08-20 14:00:52
    LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本(测试版添加了C#开发版本)。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,该引擎还...
  • Android代码-LGame-0.3.zip

    2019-08-02 16:43:38
    LGame-0.3.zip
  • LGame使用记

    2019-09-16 20:18:32
    LGame (code.google.com/p/loon-simple)是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,其实WindowsPhone C#版也很快就要出来了。说一下它的优缺点吧。优点是结构清晰,容易理解和上手,具有PC版...

    LGame (code.google.com/p/loon-simple)是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本,其实WindowsPhone C#版也很快就要出来了。说一下它的优缺点吧。优点是结构清晰,容易理解和上手,具有PC版和手机版,方便开发。特别是android版有兼容j2me的库,可以快速移植以前的j2me游戏。不足之处是LGame知名度不高,基本上是原作者在开发,还是有不少的bug的,另外效率上可能也不是很高。有简单的文档和几个示例,但对api的说明没有。

    下面是几个使用过程中的经验:

    1.LGame内部对图像资源的管理应该有缓存,因此如果几个Sprite使用同一个Animation时,如果其中一个sprite设置为显示了某一帧图像,所有使用该animation的sprite都会显示这一帧图像。可行的办法是将该animation复制多个给sprite使用。

    如:

     Animation ani = Animation.getDefaultAnimation("assets/ani.png", 2, 80, 80, 100);

    Sprite s1 = new Sprite((Animation)ani.clone());

    Sprite s2 = new Sprite((Animation)ani.clone());

    2.使用Screen时,由LGame框架来管理界面的绘制和刷新,一般只要在onLoad()函数中加入所需要的组件就可以了。

    如果想自己管理界面的绘制和刷新,可以使用CanvasScreen,重载void paint(LGraphics g)函数进行界面的绘制。创建一个线程,在线程中调用repaint()函数进行刷新。在paint中希望绘制LGame自带的组件,可以调用组件的createUI(LGraphic g)方法。

    但某些组件如LMessage没有createUI方法怎么办呢?(LMessage中有一个createCustomUI方法,但是protected)

    可以自己建一个类,继承LMessage,并重载void createUI(LGraphics g)。

    public class MyMessage extends LMessage 
    {
    public MyMessage(LImage imgMsgBg, int x, int y) 
    {
    super(imgMsgBg, x, y);
    }

    public MyMessage(String str, int x, int y, int width, int height) 
    {
    super(x, y, width, height);
    this.setMessage(str);
    }

    public void createUI(LGraphics g)
    {
    super.createUI(g);
    createCustomUI(g, 0, 0, 0, 0);
    }
    }

    3.切换screen

    对于游戏各界面的切换,应该有两种方法。一种方法是一个activity对应多个view,在LGame可以使用setScreen(Screen screen)来实现;另一个是多个activity,每个activit对应一个view,通过切换activity来切换画面。LGame的作者是建议使用第一种方法,因为多个activity比较耗系统资源。

    但在我的应用中发现,在第一种方法中需要每次都new一个screen出来才可以。

    if (screen == null)

    {

    screen = new Screen();

    this.setScreen(screen);

    }

    else

    {

    this.setScreen(screen);

    }

    需要换成这样才可以:

    this.setScreen(new Screen());

    如果采用第二种方法,则某些组件的触摸消息不响应,原因不明。

    另外,Screen的onLoad()函数是在setScreen()时调用的。因此虽然作者建议可以在onLoad()中完成一些耗时的资源载入等操作,但还是得实际情况实际分析,setScreen()时不能造成UI线程阻塞。


    转载于:https://my.oschina.net/tofro/blog/1503070

    展开全文
  • LGame SRPG扩展包API

    2015-06-27 10:57:45
    LGame有个SRPG的扩展包,导出文档
  • LGame-master游戏开发.zip

    2020-04-20 10:45:22
    LGame目前版本虽然基于标准OpenGLES API开发,但项目0.1版最早脱胎于AWT Java2D时代,所以采用了AWT Graphics2D的坐标系(画布左上角为原点(x=0,y=0),Y轴向下为正值,与JavaFx或Android,JavaScript的Canvas渲染坐标一致...
  • 初探Lgame

    千次阅读 2012-04-30 13:07:50
    最近在研究引擎,发现Lgame实现了很多种类型游戏,决定对他的代码进行研究和整理。以前基于android的开发都是通过API提供的组件完成的,对于绘图方面是一片空白,只能一步一步补充相关知识来理解这个引擎实现的原理...
           最近在研究引擎,发现Lgame实现了很多种类型游戏,决定对他的代码进行研究和整理。以前基于android的开发都是通过API提供的组件完成的,对于绘图方面是一片空白,只能一步一步补充相关知识来理解这个引擎实现的原理,如果有这方面爱好的同仁欢迎通过博客一起学习和提高。
           大体看了一下Lgame的程序结构,整个程序由于未用接口方式实现代理模式,理解起来比较纠结。其实他使用了android提供GLSurfaceView进行渲染,如果对这块不太熟悉的朋友可以查看"SurfaceView"、“GLSurfaceView说明”。了解了这些我们再看一下程序结构:
           LGameAndroid2DActivity是继承了Activity的入口,包含了LGameAndroid2DView的渲染器,对他进行渲染的正是GLSurfaceView,作为LGameAndroid2DView的成员变量surfaceView加载到LGameAndroid2DActivity的视图中。
           LProcess中包含了实际的绘制信息和声音信息:其中的currentControl成员变量正是需要绘制的当前屏;emulatorButtons为模拟键盘;AssetsSoundManager、PlaySoundManager是声音管理器。
    好了,程序开始执行:
           第一步:LGameAndroid2DActivity进行初始化initialization(),产生了LGameAndroid2DView的渲染器,并把对他进行渲染动作的GLSurfaceView加入Activity视图中。
           第二步:GLSurfaceView的渲染线程启动,循环调用LGameAndroid2DView的onDrawFrame()方法,onDrawFrame()方法中对LProcess的当前屏(Screen)和模拟键盘进行渲染,调用currentControl的createUI()方法。
           第三步:createUI()中会调用sprites.createUI(g)、desktop.createUI(g)以及自身的draw(g),自定义的图像绘制过程就放入Screen子类实现的draw(g)中。
           OK大功告成,第一步准备,第二步执行公共的渲染方法,第三步执行自定义的渲染方法,屏幕就绘制出来了。
    展开全文
  • LGame游戏引擎canvas版本源码
  • lgame游戏引擎最新3.5

    2014-10-09 17:09:22
    2014年10月份作者刚更新,标准LGame使用GLEx类作为引擎的最基本渲染器,允许使用JavaSE、JavaME的常用绘图API,以及OpenGL、OpenGLES的常用绘图API,而LSE与LAE包仅模拟有JavaSE、JavaME的Graphics类常用接口。...
  • 初章] LGame是谁? 这个问题,当然就百度一下了,大家一起来先认识LGame吧~ LGame  是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的...

    [LG001.初章] LGame是谁?


    个问题,当然就百度一下了,大家一起来先认识LGame吧~

    LGame

      是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。

      同时也是是一个高通用性的游戏框架,作为支持Java桌面游戏以及网页游戏开发的全功能引擎,LGame无论对画面绘制、精灵碰撞、特效渲染、窗体组件,还是XML操作,文本数据库操作,HTTP操作,日志操作等都提供有完善的内部解决方案,避免了多包配置的繁琐与不便,同时也降低了用户的学习曲线。出于效率与程序体积两方面考虑,LGame中所有组件皆不依赖Swing,完全采取AWT绘制而成,因此它可以将自身的运行环境压缩到最小,一个压缩后不足4MB的精简JRE,已足够支持它的运行,也就是与RMXP或吉里吉里2的运行库大小相仿佛,但功能却更多。

      LGame内置有视频解码器,支持mp4视频文件播放(在LGame-Simple-0.3.0中将支持flv,在0.6-0.7版本中将以可选组件方式 引入jmc支持,以争取可播放视频种类的最大化),内置音频解码器支持mid、mod、mp3、ogg、wav、au、aiff...

                                                                      引自:http://baike.baidu.com/view/4646213.htm


    么样?有人被吸引了么?吸引了就加入我吧~
    一起来写学习心得~

    只要把你的心得发到android游戏板块,我会把你的帖子加入置顶的索引贴(一定要原创心得,不要拷贝网上的)~

    期待~

     

     

    原文第一次发布于Android-Fans论坛:http://www.android-fans.net/thread-1451-1-1.html

    展开全文
  • 在网上下载了本游戏开发入门的书籍,按着里面介绍的SurfaceView框架开始了游戏开发,但总感觉不方便,有很多东西需要自己去实现,然后听网友说到了游戏引擎,推荐我用LGame,那时候刚刚接触android,基本是零经验,...

    先说点题外话。话说去年我想做个小游戏,那时候不懂安卓,只是有点了解而已。在网上下载了本游戏开发入门的书籍,按着里面介绍的SurfaceView框架开始了游戏开发,但总感觉不方便,有很多东西需要自己去实现,然后听网友说到了游戏引擎,推荐我用LGame,那时候刚刚接触android,基本是零经验,看着LGame跟天书差不了多少,然后教程方面除了作者的说明文档,笨木头的博客和几篇零碎的文章,其他基本没有,对于我这样一个刚接触android的小白来说,无异于登天了。一段时间后感觉LGame实在学不下去了,就开始搜索其他游戏引擎的资料,然后知道了现在最火的cocos2dx,可惜,是C++的,其他的如libgdx、AndEngine、OGEngine还有刚出的cocos2dx-java,即cocosEditor。原本是打算学习cocos2dx的,因为网上这方面的资料还是比较多的,学习之后才发现不是那么容易。首先cocos2dx的版本变更快,版本间差别比较大,网上的大多书籍和资料都是旧版的,对于新版已经不适用。其次是C++,我只是在大学学过一点,而且基本都忘光了。再一个就是用VS调试实在是不习惯,不知所措,可能是水平不够吧。然后又接触了libgdx,学过几天,还是因为资料太少,文档都是英文,学习很不便,至于其他的游戏引擎,看了看,唉,还是放弃了,,,,最后转了一圈,又回到了LGame。

     现在接触android有半年多了,做了几个项目,水平也高了那么一点点,再次看LGame的源码,发现不是天书了,,,

    android中,LGame有两个版本,一个canvas的,一个是OpenGLES的,对比了下,OpenGLES注重性能,源码很多,canvas只是模拟实现,源码较少。鉴于目前本人对android的理解和游戏开发的水平(游戏开发水平其实是零,,,),决定选择较简单的canvas版本,这样就可以根据源码来学习,入门相对较容易。

    这是作者的原CSDN博客:http://blog.csdn.net/cping1982

    作者刚建博当站长了:http://www.xrpmoon.com/blog 大家可以去看下,可以了解很多东西的。

    然后就是LGame的GitHub地址:https://github.com/cping/LGame 有兴趣的可以下载下来体验体验。

    再有我把canvas上传了,懒得下载LGame源码的可以直接下载用:http://download.csdn.net/detail/wblyuyang/8538345


    好了,废话到此为止,进入正题。这篇文章主要是介绍下LGame的大体架构,只是粗略介绍,有错误的地方欢迎指正。


    建立Android工程后,首先应该继承LGameAndroid2DActivity,作者在LGameAndroid2DActivity里面建立游戏最底层的FrameLayout,如下:

    [java] view plain copy
    1. // 构建整个游戏使用的最底层FrameLayout  
    2.     this.frameLayout = new FrameLayout(LGameAndroid2DActivity.this);  
    然后建立游戏View,即继承自SurfaceView的LGameAndroid2DView,如下:
    [java] view plain copy
    1. private LGameAndroid2DView gameView;  
    2.     // 创建游戏View  
    3.     this.gameView = new LGameAndroid2DView(LGameAndroid2DActivity.this, landscape, mode);  
    通过gameView获取当前游戏的控制句柄:
    [java] view plain copy
    1. // 获得当前游戏操作句柄  
    2.     this.gameHandler = gameView.getGameHandler();  
    由于水平有限,只能粗略理解CP大神的代码意图。猜测gameHandler游戏句柄是用来操作整个游戏的,如获取屏幕尺寸,Screen操作等。
    然后根据不同的显示模式添加view:

    [java] view plain copy
    1. if (mode == LMode.Defalut){  
    2.     // 添加游戏View,显示为指定大小,并居中  
    3.     this.addView(gameView, gameHandler.getWidth(), gameHandler.getHeight(), Location.CENTER);  
    4.     }  
    5.     else if (mode == LMode.Ratio){  
    6.     ........  
    7.     ........  
    addView方法:

    [java] view plain copy
    1. /** 
    2.  * 添加指定的View到游戏界面的指定位置,并将View设置为指定大小 
    3.  *  
    4.  * @param view 
    5.  * @param location 
    6.  */  
    7. public void addView(final View view, int w, int h, Location location) {  
    8.     android.widget.RelativeLayout viewLayout = new android.widget.RelativeLayout(LGameAndroid2DActivity.this);  
    9.     android.widget.RelativeLayout.LayoutParams relativeParams = LSystem.createRelativeLayout(location, w, h);  
    10.     viewLayout.addView(view, relativeParams);  
    11.     addView(viewLayout);  
    12. }  
    可以看出是初始化了一个RelativeLayout布局,然后放入了传入的view,即声明的gameView。然后是addView(viewLayout)加入布局:

    [java] view plain copy
    1. /** 
    2.  * 添加指定的View到游戏界面 
    3.  *  
    4.  * @param view 
    5.  */  
    6. public void addView(final View view) {  
    7.     frameLayout.addView(view, LSystem.createFillLayoutParams()); //这是调用系统的addView函数  
    8. }  

    至此,我们可以知道,已经把继承自SurfaceView的LGameAndroid2DView的实例化gameView变量加入了游戏的最底层的framelayout,这样就可以通过改变gameView的画面来实现游戏的画面。最后是显示Screen,即showScreen():

    [java] view plain copy
    1. /** 
    2.  * 显示游戏窗体 
    3.  */  
    4. public void showScreen() {  
    5.     setContentView(frameLayout);  //看到这句应该明白了吧,,,  
    6.     try{  
    7.         getWindow().setBackgroundDrawable(null);  
    8.     } catch (Exception e){  
    9.   
    10.     }  
    11. }  

    然后再说说LGameAndroid2DView,它继承自SurfaceView,具体功能没有深入分析,不过大体原理跟surfaceView应该是一样的。通过一个线程CanvasThread来不断刷新游戏画面,然后通过LHandler的实例handler来调用runTimer和draw函数:

    [java] view plain copy
    1. /** 
    2.  * 游戏窗体主循环 
    3.  */  
    4. public void run() {  
    5.     ...  
    6.     ...  
    7.     handler.runTimer(timerContext);  
    8.     ...  
    9.     ...  
    10.     handler.draw(gl);  
    11.     ...  
    12.     ...  
    13. }  

    然后LHandler类里面的runTimer和draw函数再通过Screen类的实例来调用Screen类里面的runTimer和createUI函数:

    [java] view plain copy
    1. ....  
    2. ...  
    3. currentControl.runTimer(context);  
    4. ...  
    5. ...  
    6. currentControl.createUI(g);  
    7. ...  
    8. ...  

    然后Screen里面的runTimer和createUI函数再调用本类里面的虚函数alter和draw:

    [java] view plain copy
    1.    public void runTimer(final LTimerContext timer) {  
    2.     ...  
    3.     this.alter(timer);  
    4.     ...  
    5. }  
    6.   
    7. public abstract void alter(LTimerContext timer);  
    8.   
    9. public synchronized void createUI(LGraphics g) {  
    10.     ...  
    11.     draw(g);  
    12.     ...  
    13. }  
    14.   
    15. public abstract void draw(LGraphics g);  

    而开发者需要继承虚类Screen来具体实现,如下:

    [java] view plain copy
    1. public class MyScreen extends Screen{  
    2.   
    3.     @Override  
    4.     public void draw(LGraphics g) {  
    5.           
    6.     }  
    7.   
    8.     @Override  
    9.     public void alter(LTimerContext timer) {  
    10.           
    11.     }  
    12.   
    13.     @Override  
    14.     public void onTouchDown(LTouch e) {  
    15.           
    16.     }  
    17.   
    18.     @Override  
    19.     public void onTouchUp(LTouch e) {  
    20.           
    21.     }  
    22.   
    23.     @Override  
    24.     public void onTouchMove(LTouch e) {  
    25.           
    26.     }  
    27.   
    28. }  

    至此,screen里面的alter和draw函数我们已经知道了其在整个框架中是如何运行的了。

    alter函数应该实现游戏的逻辑处理,而draw函数应该实现游戏的画面绘制,其他三个函数是触屏的操作,作者封装好了,可以直接用。我还记得我当时写游戏时,光触屏操作救你费了好大的劲,,,

    写到这里,大家应该发现很熟悉,对,这就是surfaceView框架的处理逻辑,新增一条线程,然后不断重复逻辑控制和画面绘制,这样游戏画面和任务就动了起来。作者把底层的一些东西进行封装,不仅使用起来更加方便,而且作者还开发了一系列的组件,可以很好的实现游戏的快速开发。

    展开全文
  • LGame-0.2.9问题集中修正(LGame-0.2.94)

    千次阅读 热门讨论 2011-01-16 22:18:00
    LGame-0.2.9问题集中修正(LGame-0.2.94)
  • 音乐舞蹈游戏-LGame

    2019-09-16 20:20:17
    LGame做了一个跳舞游戏,基本结构是移植一个j2me游戏的,不过很多东西还是需要完善。LGame适合于这种组件式的游戏,快速又方便。虽然移植它的时候,做了一个线程。如果用组件(Actor等)做,应该更快。 感兴趣的...
  • 关于LGAME入门开篇

    千次阅读 2016-03-18 01:41:37
    近日计划使用进行PC端游戏开发,找到适合java游戏开发的国产游戏开发引擎,最终选定了LGAME,做个手记 理由: 1.支持国产游戏引擎。 2.目前java国产游戏开发引擎就剩下LGAME有在更新,虽然社区不是太跃,但是现在...
  • Android版LGame框架发布预告
  • LGame-0 2 9版二次修正 LGame-0 2 95,新增塔防示例,已提供下载
  • LGame Android版 开发示例之连连看

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 604
精华内容 241
关键字:

Lgame