Java-Gaming.org Hi !
Featured games (81)
games approved by the League of Dukes
Games in Showcase (513)
Games in Android Showcase (119)
games submitted by our members
Games in WIP (576)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1]
1  Java Game APIs & Engines / JOGL Development / Re: Crash of JOGL 1.1.1 on iMac 27" on: 2010-10-25 06:54:00
I tried to convert the project to JOGL 2 but nothing appeared on screen...

I'll try again then ask for help.

Thank you!

Bernard
2  Java Game APIs & Engines / JOGL Development / Crash of JOGL 1.1.1 on iMac 27" on: 2010-10-24 18:59:47
Hello!

My game In Poculis Mahjong http://www.in-poculis.com works well on Windows and a lot of Mac but crashes on iMac 27".

Can you help me understanding the error please?

Regards,

Bernard

Here is the log:
Process: JavaApplicationStub [196]
Path: /Applications/Mahjong.app/Contents/MacOS/JavaApplicationStub
Identifier: com.apple.javajdk16.In-Poculis Mahjong
Version: Huh (3.1)
Code Type: X86 (Native)
Parent Process: launchd [85]

PlugIn Path: /Applications/Mahjong.app/Contents/Resources/Java/libjogl.jnilib
PlugIn Identifier: libjogl.jnilib
PlugIn Version: Huh (Huh)

Date/Time: 2010-10-24 13:13:59.784 -0400
OS Version: Mac OS X 10.6.4 (10F569)
Report Version: 6

Interval Since Last Report: 39040 sec
Crashes Since Last Report: 13
Per-App Interval Since Last Report: 7924 sec
Per-App Crashes Since Last Report: 2
Anonymous UUID: 631E21E0-C059-4992-BAF1-07AF4D3B2A8E

Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000
Crashed Thread: 26 Java: AWT-EventQueue-0

Application Specific Information:

Java information:
Exception type: Bus Error (0xa) at pc=00000000ffff0877

Java VM: Java HotSpot(TM) Client VM (16.3-b01-279 mixed mode macosx-x86)

Current thread (000000001104d400): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=-1306263552, stack(00000000b2140000,00000000b2240000)]
Stack: [00000000b2140000,00000000b2240000]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j com.sun.opengl.impl.GLImpl.glTexSubImage2D1(IIIIIIIILjava/lang/Object;I)V+0
j com.sun.opengl.impl.GLImpl.glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V+85
j com.sun.opengl.util.texture.Texture.updateSubImageImpl(Lcom/sun/opengl/util/texture/TextureData;IIIIIIII)V+658
j com.sun.opengl.util.texture.Texture.updateImage(Lcom/sun/opengl/util/texture/TextureData;I)V+1001
j com.sun.opengl.util.texture.Texture.updateImage(Lcom/sun/opengl/util/texture/TextureData;)V+3
j com.sun.opengl.util.texture.Texture.(Lcom/sun/opengl/util/texture/TextureData;)V+18
j com.sun.opengl.util.texture.TextureIO.newTexture(Lcom/sun/opengl/util/texture/TextureData;)Lcom/sun/opengl/util/texture/Texture;+19
j com.sun.opengl.util.texture.TextureIO.newTexture(Ljava/io/InputStream;ZLjava/lang/String;)Lcom/sun/opengl/util/texture/Texture;+8
j ipengine.utils.image.GLImageLoader._loadTexture(Ljava/lang/String;)Lcom/sun/opengl/util/texture/Texture;+206
j ipengine.utils.image.GLImageLoader.loadTexture(Ljavax/media/opengl/GL;Ljava/lang/String;Z)Lcom/sun/opengl/util/texture/Texture;+10
j ipengine.plugins.mahjong.tilesrender.TilesRenderPlugin.renderTiles(ZZLjavax/media/opengl/GL;Lipengine/model/Model;Lipengine/games/mahjong/MahjongModel;[F[F[F[FZZ)V+501
j ipengine.plugins.mahjong.tilesrender.TilesRenderPlugin.onRender(Lipengine/model/Model;)V+3096
j ipengine.plugins.mahjong.tilesrender.TilesRenderPlugin.render()V+6
j ipengine.plugins.RenderPlugin.onTokenHandled(Ljava/lang/String;I)Z+10
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+72
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+80
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+80
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+80
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.handleToken(Ljava/lang/String;)V+60
j ipengine.plugins.ChainOfResponsibilityElement.forwardToken(Ljava/lang/String;)V+14
j ipengine.plugins.ChainOfResponsibilityElement.emitToken(Ljava/lang/String;)V+11
j ipengine.plugins.common.mainwindow.MainWindowPlugin.emitRenderingToken()V+29
j ipengine.plugins.common.mainwindow.GamePanel$Listener.display(Ljavax/media/opengl/GLAutoDrawable;)V+207
j com.sun.opengl.impl.GLDrawableHelper.display(Ljavax/media/opengl/GLAutoDrawable;)V+29
j javax.media.opengl.GLCanvas$DisplayAction.run()V+80
j com.sun.opengl.impl.GLDrawableHelper.invokeGL(Ljavax/media/opengl/GLDrawable;Ljavax/media/opengl/GLContext;Ljava/lang/Runnable;Ljava/lang/Runnable;)V+418
j javax.media.opengl.GLCanvas$DisplayOnEventDispatchThreadAction.run()V+35
j java.awt.event.InvocationEvent.dispatch()V+11
j java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+26
j java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z+204
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j java.awt.EventDispatchThread.run()V+9
v ~StubRoutines::call_stub

3  Games Center / Showcase / Re: An excellent Mahjong game for MAC and Windows, thanks to JOGL and JAVA 6. on: 2008-07-17 13:21:02
>oNyx
>Ogg isn't that hard with JOrbis. And mp3... why would you want that anyways?
.ogg or .mp3, if I have a solution with .ogg it's perfect because In-Poculis Mahjong uses only .ogg and .wav.
JOrbis was my first try but I got latency. All the solutions that I tried had problems on Mac or Windows.

Two months ago, I had 2 different libraries at the same time to make the sound work on all plateforms. But one week before releasing the game, I played it 15 minutes and a sound module crashed -> I said to myself: stop all this non professionnal work and take something that works. Hence, I choose BASS.

>erikd
Thank you to understand my problems Smiley
For me, JavaSound is not an option because the game must use Java 5 to run on Mac  Undecided

4  Games Center / Showcase / Re: An excellent Mahjong game for MAC and Windows, thanks to JOGL and JAVA 6. on: 2008-07-16 12:46:16
Isn't it painful to add .ogg or .mp3 support to OpenAL?

Maybe that I'll give a try to OpenAL in some months, but for the moment it works on the 2 most popular plateforms so I won't touch it. Unless I find a library over OpenAL containing just: play(), stop(), free() for .ogg and .wav files Smiley
5  Games Center / Showcase / Re: An excellent Mahjong game for MAC and Windows, thanks to JOGL and JAVA 6. on: 2008-07-15 12:33:40
Thanks for the critics.

There is an existing WebStart version but it uses an old JOGL version and the UVs have to be corrected. I'll rebuild one in the following weeks.

>No Linux version because of BASS audio library.
>I'm fed up with this kind of limitations. Why did you choose this library
>whereas there are other cross-platform library to handle sound?
I completely agree with you. If I choosed Java, it was for the portability... But all the other libraries that I tried had little latency on Mac G4 or old Windows plateforms. Give me a really good audio library in Java and I'll implement it. But I'm afraid that it doesn't exists yet.
6  Java Game APIs & Engines / JOGL Development / An excellent Mahjong game for MAC and Windows, thanks to JOGL and JAVA 6. on: 2008-07-15 10:26:55
Hello!

I have finished a very good Mahjong game for Mac and Windows Cool

It uses JOGL and the fixed OpenGL pipeline for rendering and the Bass audio library bindings for sound (it is why it runs only on Windows and Mac).

The only visual effects are some custom bump mapping and some texture projection in the Halloween theme.

I spent a lot of time programming the PartyKewl particle library for Java but it is not included in the soft because the excellent graphist left the project one year ago (yes, I had to finish all by myself Angry). You can use it for your game: no memory fragmentation, 32 bytes per particle and a good editor. However I have to update it with the last JOGL and to add the feature it was designed for: a particle can be the parent of a generator. Surely in the next months...

Cheers,
Bernard LERAT.
http://www.in-poculis.com/site/mahjong.html






7  Games Center / Showcase / An excellent Mahjong game for MAC and Windows, thanks to JOGL and JAVA 6. on: 2008-07-15 10:16:59
Hello!

I have finished a very good Mahjong game for Mac and Windows Cool

It uses JOGL and the fixed OpenGL pipeline for rendering and the Bass audio library bindings for sound (it is why it runs only on Windows and Mac).

The only visual effects are some custom bump mapping and some texture projection in the Halloween theme.

I spent a lot of time programming the PartyKewl particle library for Java but it is not included in the soft because the excellent graphist left the project one year ago. However you can use it for your game: no memory fragmentation, 32 bytes per particle, a good editor...

Cheers,
Bernard LERAT.
http://www.in-poculis.com/site/mahjong.html
Note: If someone could do a good sound library in Java it would be very cool.






8  Java Game APIs & Engines / JOGL Development / Re: A particle library that uses 32B / particle without memory fragmentation. on: 2007-09-05 09:08:26
Unfortunately, I don't have any performance comparisons with an other java particle system implementation. However, passing -server to the jvm increases the performances of 40%.

I took this approach because the size of particles will always be 32 bytes. If you need a new affector that needs to save data for each particle, the random number generator will do the stuff for 0 bytes of memory. So the basis of the library will be very stable, developpers can create new affectors or emitters without touching the rest of the code.

Also, there is no update() then render() passes. There is only a rendering pass that does the update at the same time that it fills a ParticleDefinition object. This object is passed to the renderer when the rendering method finishes the list of affectors.

So we have very few memory access and cache missed are reduced thankful to the size of the particles.

To finish, the initial position of the particles are stored so you don't have to render generators that are not visible.
9  Java Game APIs & Engines / JOGL Development / Re: A particle library that uses 32B / particle without memory fragmentation. on: 2007-09-05 05:52:21
For the moment, we can move the camera in a Quake like style but I'll throw a glance at the gleem source code to improve the interaction.

The -Dsun.java2d.noddraw=true is now included in the jnlp.

Yes I'm considering open-sourcing the project, but I have to finish the source code documentation and to translate the editor documentation before. I have a little todo list too, so it will be open-source for the end of september or in october.
Is the best place for open-sourcing such a project is dev.java.net ?

10  Java Game APIs & Engines / JOGL Development / Re: A particle library that uses 32B / particle without memory fragmentation. on: 2007-09-04 21:34:56
Sorry, it is corrected.

Some features that were not listed:
- A tool extracts the frames from an animated GIF to put them in a texture. You can then use the UVEvolutionAffector to animate your particles.
- To move the camera: left click + directional key
- You can use a heighfield texture to emit particles by using the HeighfieldEmitter
- ...

Cheers,
Bernard.
11  Java Game APIs & Engines / JOGL Development / A particle library that uses 32B / particle without memory fragmentation. on: 2007-09-04 20:34:51
Hi folks,

I'm working on a particle library that you can see in action at http://www.in-poculis.com/partykewl/partykewlEditor.jnlp

It uses 32 bytes per particles and memory is not fragmented because a large FloatBuffer is allocated at the initialization.
Here is how particles are managed:

/*
 * Dead particles:
 *      2 Bytes indicating the position of the next dead particle. 0xffff -> end of list.
 *
 * Alive particles:
 * [][]     2 bytes indicating the position of the next alive particle. 0xffff -> end of list.
 * []       1 bit used to know if this particle is in world space or not
 *          1 bit to know if this particle has already collide with something
 *          1 bit unused
 *          5 bit for the index of the emitter in the parent generator( to retrieve bases for life, velocity...)
 * []       1 byte for the last update frame. This is a 255 modulo and it just serves for debugging purposes.
 * [][][][] 4 bytes for particle life. This value is updated on each rendering pass.
 * [][][][] 4 bytes seed to regenerate parameters
 * [][][][] 4 bytes for creation position X             // Updated on collision
 * [][][][] 4 bytes for creation position Y             // Updated on collision
 * [][][][] 4 bytes for creation position Z             // Updated on collision
 * [][][][] 4 bytes for compressed direction X, Y, Z    // Updated on collision
 * [][]     2 bytes for velocity coefficient            // Updated on collision
 * [][]     2 byte for delta life. We have to add this value to the particle life to know
 *          the full elapsed time since the creation of the particle because collision affectors reset
 *          the life of particles when they update the particule position and direction.
 */

Where are the UV, the color... ?
A seed is stored within each particle. When particles are renderered, we use a home made java random number generator to retrieve values in the range [-1, 1] for each parameter !
Yes, if you know that the first variable is the color, then using the random number generator with the same seed will always return the same value in the range [-1, 1] for your random color. You then use this value in the range [-1, 1] as the seed for a new call to the random number generator to get a new value ( used for the UV this time )....

The method:
   public static float nextNormalizedRandom( float p_seed ) {
        // Create a random integer with p_seed as a integer.
        int l_value=214013*Float.floatToIntBits(p_seed)+2531011;
       
        // Consider l_value as a float and
        // keep only the mantissa (IEEE 754)
        l_value&=0x007fffff;
       
        // Make the number in the range [2.F, 4.F[ (IEEE 754)
        l_value|=0x40000000;
       
        // Consider the bits of l_value as representing a float
        // then return an adjusted float in the range [-1.F, 1.F[
        return Float.intBitsToFloat(l_value)-3.f;
    }
You can do a interesting benchmark: call this method 100 millions times in a C++ for loop ( use a direct cast for Float.floatToIntBits ). VC++ 2005 is 10% slower than java on my computer in release !

More explanations ?
http://www.in-poculis.com/ParticlesPaper_LERAT_STEVENS_2007.doc

Why is the editor so beautiful ?
Because it uses the dev.java.net project: Substance !

Performances ?
10 000 particles per  frame at 75hz on an Athlon 64@3.2GHz + GeForce 6600 + 512MB + 17"

By the way, you can add your own affectors and an abstract renderer is present to allow you to use it with another renderer.

My questions:
What do you think of the editor ?
I would like to publish the source as GPL, so is there a best place to publish such a library ?

Cheers,
Bernard.
Advice: The best Sokoban on this earth (Indyo) was registered only one time in 2007 ! Result: the graphist left the team. If you could lend yours to me... or register dozen of copies, maybe that he'll be back. Thx, http://www.in-poculis.com
12  Java Game APIs & Engines / Java Sound & OpenAL / Lag on mac with BasicPlayer from javazoom on: 2006-06-16 19:22:13
I use the library from Javazoom to play my ogg and mp3.

On my Athlon64@3.2 + XP it works very well but on my iBook G4@1.33 with Tiger I have a lag of one second, which is unacceptable.

When I load a song for the first time:

        // Instantiate BasicPlayer.
        player = new BasicPlayer();
       
        // BasicPlayer is a BasicController.
        BasicController control = (BasicController) player;
        try {

            // Open file, or URL or Stream (shoutcast) to play.
            control.open(new File(mediaPath));
        } catch (BasicPlayerException ex) {
            ex.printStackTrace();
        }

When I ask for the song to be played:

    public void play() {
       
        // BasicPlayer is a BasicController.
        BasicController control = (BasicController) player;
       
        try {
           
            // Start playback in a thread.
            control.play();
           
            // Set Volume (0 to 1.0).
            // setGain should be called after control.play().
            control.setGain(volume);
           
            // Set Pan (-1.0 to 1.0).
            // setPan should be called after control.play().
            control.setPan(0.0);
        }
       
        catch (BasicPlayerException e) {
            e.printStackTrace();
        }
    }


The problem comes certainly from the thread creation, isn't it ? Have you an other option for me ?

Regards,
Bernard.
13  Java Game APIs & Engines / JOGL Development / Re: Forcing Swing components to redraw is a performance killer on: 2006-04-14 13:47:22
The application has been tested on Windows XP with the option  -Dsun.java2d.noddraw=true

I'll try the sleep() in the rendering loop then I'll tell you.
14  Java Game APIs & Engines / JOGL Development / Forcing Swing components to redraw is a performance killer on: 2006-04-13 19:56:56
My application mixes Swing components and a GLCanvas. The user is also able to open new dialogs also using Swing components and some GLCanvas for preview.

At home on my Athlon 64@3200 + GeForce 6600 + 1Mb of RAM there is no problem, everything is ok. ( FPSAnimator @60hz )

On other computers Swing components are not always refreshed and some dialogs just show a single slider. ( If I set the FPSAnimator @ 5hz, everything is ok but my game is not playable ).
This is not acceptable so I have tried to add a add( JComponent ) method to the Animator class. Now, for my main window, the FPSAnimator have to repaint 2 JPanel containing some JButton and a GLCanvas. Performances are down so I can't do the job this way.

Have you a better solution for my problem ?
15  Java Game APIs & Engines / JOGL Development / Re: loading texture from 2 different threads on: 2006-02-16 17:01:40
Here is how my app is coded:

class MainWindow extends JFrame{
   //
   GLCanvas mCanvas;
   Animator mAnimator;

   // Constructor
   public MainWindow(){
     // Initalize canvas
     ...
     // Create Animator
     ...
     // Start animator
     ...
   }

   // Some other stuff
   ...
}


class ConfigurationDialog extends JDialog{
  //
   GLCanvas mCanvas;
   Animator mAnimator;

   // Constructor
   public ConfigurationDialog(){
     // Initalize canvas
     ...
     // Create Animator
     ...
     // Start animator
     ...
   }

   // Some other stuff
   ...
}


Now, in the main function of the game  I create a new MainWindow(). This main window has some buttons which are able to create new ConfigurationDialogs.

Here is the problem:
The display function called by the animator from MainWindow need some textures, so I use the JOGL texture loading utility.
But the display function from ConfigurationDialog also need those textures and if they were previously loaded in the MainWindow display function, it doesn't work.

- MainWindow and ConfigurationDialog does not know each other and I would prefer not using hacks -

Nothing better than your previous solutions ? ( I'm not sure to understand your 2nd solution )
16  Java Game APIs & Engines / JOGL Development / loading texture from 2 different threads on: 2006-02-16 08:09:00
Hi,

Here is my texture loading method:
   private static Texture setTexture( String path ){
       Texture texture=GLImageLoader.loadOpenGLTexture(path);
       if ( texture!=null ){
           texture.enable();
           texture.bind();
       }
       return texture;
   }

It seems that if I load a texture from a thread that has a GLCanvas then load it again from another thread that has also a GLCanvas, the texturing doesn't work. Can you do something for me ? - my idea would be to assign a context id to each texture to avoid reloading only if name and context are the same -

[ I need this capability because I have a main window containing the game and sub windows for configurations that need some preview... ]

Cheers,
Bernard.
Pages: [1]
 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Longarmx (38 views)
2014-10-17 03:59:02

Norakomi (28 views)
2014-10-16 15:22:06

Norakomi (24 views)
2014-10-16 15:20:20

lcass (28 views)
2014-10-15 16:18:58

TehJavaDev (54 views)
2014-10-14 00:39:48

TehJavaDev (54 views)
2014-10-14 00:35:47

TehJavaDev (43 views)
2014-10-14 00:32:37

BurntPizza (64 views)
2014-10-11 23:24:42

BurntPizza (36 views)
2014-10-11 23:10:45

BurntPizza (78 views)
2014-10-11 22:30:10
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!