Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (475)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (530)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Why is nothing rendering? - LWJGL  (Read 755 times)
0 Members and 1 Guest are viewing this topic.
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Posted 2014-06-06 15:55:57 »

Hey, this is not a question of performance. I've for long been using immidiate openGL, when transfering to VBO for performance purposes, I've headed into a issue. Nothing is render!? I can't see anything.

here's some code...

Window.java
1  
2  
3  
4  
5  
private void render() {
      GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
     
      game.render();
   }


Game.java
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
public void render() {
      ready3D();
      render3D();
     
      ready2D();
      render2D();
   }
   
   //3D
  private void ready3D() {
      glViewport(0, 0, Display.getWidth(), Display.getHeight());
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
     
      gluPerspective(75f, Display.getWidth() / Display.getHeight(), 0.001f, 1000f);
      glMatrixMode(GL_MODELVIEW);
     
      glEnable(GL_DEPTH_TEST);
   }
   private void render3D() {
      world.render(camera);
   }
   
   //2D
  private void ready2D() {
      glClear(1);
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
     
      glViewport(0, 0, Display.getWidth(), Display.getHeight());
      glOrtho(0, 1, 0, 1, -1, 1);
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
   }
   private void render2D() {
     
   }


World.java
1  
2  
3  
4  
public void render(Camera camera) {
      chunk.render();
      camera.lookThrough();
   }


Chunk.java
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
private void rebuildVBO() {
      FloatBuffer vCoords = BufferUtils.createFloatBuffer(size * size * size * (3 * 4 * 6));
      FloatBuffer cCoords = BufferUtils.createFloatBuffer(size * size * size * (4 * 4 * 6));
     
      for(int x = 0; x < size; x++) {
         for(int y = 0; y < size; y++) {
            for(int z = 0; z < size; z++) {
               
               vCoords.put(Shape.createCubeVerticies(x, y, z, 0.5f));
               cCoords.put(Shape.getCubeColors());
               
            }
         }
      }
     
      vCoords.flip();
      cCoords.flip();
     
      glBindBuffer(GL_ARRAY_BUFFER, vId);
      glBufferData(GL_ARRAY_BUFFER, vCoords, GL_STATIC_DRAW);
      glBindBuffer(GL_ARRAY_BUFFER, 0);
     
      glBindBuffer(GL_ARRAY_BUFFER, cId);
      glBufferData(GL_ARRAY_BUFFER, cCoords, GL_STATIC_DRAW);
      glBindBuffer(GL_ARRAY_BUFFER, 0);
   }
   
   public void render() {
      glBindBuffer(GL_ARRAY_BUFFER, vId);
      glVertexPointer(3, GL_FLOAT, 0, 0);
     
      glBindBuffer(GL_ARRAY_BUFFER, cId);
      glColorPointer(4, GL_FLOAT, 0, 0L);
     
      glEnableClientState(GL_VERTEX_ARRAY);
      glEnableClientState(GL_COLOR_ARRAY);
     
      glDrawArrays(GL_QUADS, 0, size * size * size * (3 * 4 * 6));
     
      glDisableClientState(GL_VERTEX_ARRAY);
      glDisableClientState(GL_COLOR_ARRAY);
   }


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
public static float[] createCubeVerticies(float x, float y, float z, float size) {
      return new float[] {
         //Bottom face
        x, y, z + size,
         x + size, y, z + size,
         x + size, y, z,
         x, y, z,
         
         //Top face
        x, y + size, z,
         x + size, y + size, z,
         x + size, y + size, z + size,
         x, y + size, z + size,
         
         //Front face
        x, y, z,
         x + size, y, z,
         x + size, y + size, z,
         x, y + size, z,
         
         //Back face
        x, y + size, z + size,
         x + size, y + size, z + size,
         x + size, y, z + size,
         x, y + size, z,
         
         //Left face
        x + size, y, z,
         x + size, y, z + size,
         x + size, y + size, z + size,
         x + size, y + size, z,
         
         //Right face
        x, y, z + size,
         x, y, z,
         x, y + size, z,
         x, y + size, z + size,
         
      };
   }
   
   public static float[] getCubeColors() {
     
      return new float[] {
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
         1, 1, 1, 1,
      };
   }


Camera.java
1  
2  
3  
4  
5  
6  
7  
8  
9  
public void lookThrough() {
      GL11.glLoadIdentity();
        GL11.glRotatef(pitch, 1.0f, 0.0f, 0.0f);
        GL11.glRotatef(yaw, 0.0f, 1.0f, 0.0f);
        GL11.glTranslatef(x, y, z);
       
        System.out.println(x + ", " + y + ", " + z);
        System.out.println(pitch + ", " + yaw);
   }


Any help is appritated
Offline theagentd
« Reply #1 - Posted 2014-06-06 16:41:00 »

Do you clear the depth buffer?

Myomyomyo.
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #2 - Posted 2014-06-06 16:50:12 »

If you're talking about
1  
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
then, yes. I updated the post.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline theagentd
« Reply #3 - Posted 2014-06-06 16:59:54 »

Quote
1  
2  
      chunk.render();
      camera.lookThrough();


Wrong order?

Myomyomyo.
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #4 - Posted 2014-06-06 17:05:20 »

Well, previously when I've rendered in immidiate mode I've always rendered and then translated(Looked through) to the current location. Anyway changing the order doesn't seem to show any effect.

Adding this before looking through...
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
      GL11.glTranslatef(-1.5f, 0.0f, -6.0f); // Move Left And Into The Screen

      GL11.glBegin(GL11.GL_TRIANGLES); // Start Drawing The Pyramid
     GL11.glColor3f(1.0f, 0.0f, 0.0f); // Red
     GL11.glVertex3f(0.0f, 1.0f, 0.0f); // Top Of Triangle (Front)
     GL11.glColor3f(0.0f, 1.0f, 0.0f); // Green
     GL11.glVertex3f(-1.0f, -1.0f, 1.0f); // Left Of Triangle (Front)
     GL11.glColor3f(0.0f, 0.0f, 1.0f); // Blue
     GL11.glVertex3f(1.0f, -1.0f, 1.0f); // Right Of Triangle (Front)

      GL11.glColor3f(1.0f, 0.0f, 0.0f); // Red
     GL11.glVertex3f(0.0f, 1.0f, 0.0f); // Top Of Triangle (Right)
     GL11.glColor3f(0.0f, 0.0f, 1.0f); // Blue
     GL11.glVertex3f(1.0f, -1.0f, 1.0f); // Left Of Triangle (Right)
     GL11.glColor3f(0.0f, 1.0f, 0.0f); // Green
     GL11.glVertex3f(1.0f, -1.0f, -1.0f); // Right Of Triangle (Right)

      GL11.glColor3f(1.0f, 0.0f, 0.0f); // Red
     GL11.glVertex3f(0.0f, 1.0f, 0.0f); // Top Of Triangle (Back)
     GL11.glColor3f(0.0f, 1.0f, 0.0f); // Green
     GL11.glVertex3f(1.0f, -1.0f, -1.0f); // Left Of Triangle (Back)
     GL11.glColor3f(0.0f, 0.0f, 1.0f); // Blue
     GL11.glVertex3f(-1.0f, -1.0f, -1.0f); // Right Of Triangle (Back)

      GL11.glColor3f(1.0f, 0.0f, 0.0f); // Red
     GL11.glVertex3f(0.0f, 1.0f, 0.0f); // Top Of Triangle (Left)
     GL11.glColor3f(0.0f, 0.0f, 1.0f); // Blue
     GL11.glVertex3f(-1.0f, -1.0f, -1.0f); // Left Of Triangle (Left)
     GL11.glColor3f(0.0f, 1.0f, 0.0f); // Green
     GL11.glVertex3f(-1.0f, -1.0f, 1.0f); // Right Of Triangle (Left)
     GL11.glEnd();


Will render a triangle, however as I move the triangle stays stationary to the screen, not what is suppose to happen.
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #5 - Posted 2014-06-06 17:28:41 »

Kind of off topic, are you by any chance following a tutorial to do this? On Youtube perhaps?

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #6 - Posted 2014-06-06 17:36:19 »

Kind of off topic, are you by any chance following a tutorial to do this? On Youtube perhaps?

Not specifally, But I have been trying to understand how to use VBO's from many tutorials, one of them being from youtube yes. PancakeSimone's series
https://www.youtube.com/user/pancakesimone/videos
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #7 - Posted 2014-06-06 17:40:37 »

That's hilarious. That's my Youtube channel, I made those videos!

Anyway, your issue is that your camera is probably set up wrong or the angle isn't correct so you cannot see the geometry you are trying to render. Make sure that you are rendering the vertices in front of the camera (usually in front is negative on the z axis).

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #8 - Posted 2014-06-06 17:43:10 »

Well why does it matter?, I can turn around and I still see nothing. I move around and still nothing.
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #9 - Posted 2014-06-06 17:46:06 »

Maybe your camera isn't working correctly? Do you have face culling on? Try turning it off if you do:
1  
glDisable(GL_CULL_FACE);

If you see your vertices that means your faces are wound the opposite way of what you are culling.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #10 - Posted 2014-06-06 17:48:58 »

I don't see anything, it's all black! :s
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #11 - Posted 2014-06-06 17:54:49 »

Do you color your vertices? Make sure the color isn't set to black before rendering.

You mentioned before that your vertices weren't being translated when the camera moves. That leads me to believe that your glTranslate calls are in the wrong order. You want to translate and then draw the vertices in their new positions.

I wouldn't recommend following my tutorials anymore, the code I wrote wasn't all that good.

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #12 - Posted 2014-06-06 18:17:23 »

It should be rendering in white now, check the updated code in the first post. Still nothing tho.
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #13 - Posted 2014-06-06 18:54:13 »

Sorry but... bump? Anyone?
Offline Longarmx
« Reply #14 - Posted 2014-06-06 19:30:06 »

Have you tried to call
glGetError();
?

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #15 - Posted 2014-06-06 19:39:59 »

Have you tried to call
glGetError();
?

Sysout that and I get 1281. I'm not sure what that means and google doesn't seem to give me any great results but I'll look into it unless someone has the answer already?
Offline Longarmx
« Reply #16 - Posted 2014-06-06 19:44:11 »

You can located which line is outputting this error by putting a check before and after a section of code. If the first check returns 0, and the second check returns something else, then you know that the error is in between those two checks.

Also, why are you calling
glClear(1);
?

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #17 - Posted 2014-06-06 19:49:39 »

You can located which line is outputting this error by putting a check before and after a section of code. If the first check returns 0, and the second check returns something else, then you know that the error is in between those two checks.

Also, why are you calling
glClear(1);
?

I googled it, I also debuged it with your method, and both showed the same result. The error 1281 is caused by the following line.
1  
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


From this article as mentioned before, http://blog.nobel-joergensen.com/2013/01/29/debugging-opengl-using-glgeterror/
They describe it, and say it's suppose to be "glClear(GL_COLOR_BUFFER_BIT);" Which I have so what is wrong?

I don't know why I call glClear(1); as mentioned before, I'm half-following a tutorial. Sorry if I seem stupid or naive.
However, removing this line, it's still pitch black!
Offline Longarmx
« Reply #18 - Posted 2014-06-06 19:52:35 »

So you called glGetError like this?

1  
2  
3  
System.out.println("Before: " + glGetError());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
System.out.println("After: " + glGetError());


And they both showed the same error? 1281?

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #19 - Posted 2014-06-06 19:54:34 »

So you called glGetError like this?

1  
2  
3  
System.out.println("Before: " + glGetError());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
System.out.println("After: " + glGetError());


And they both showed the same error? 1281?

1  
2  
3  
System.out.println("VERY FIRST! " + glGetError());
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      System.out.println("2nd! " + glGetError());


results...
1  
2  
VERY FIRST! 1281
2nd! 0


However, when removing "glClear(1);" the error is no longer printed. The new result is...
1  
2  
VERY FIRST! 0
2nd! 0
Offline Longarmx
« Reply #20 - Posted 2014-06-06 19:59:20 »

That means that glClear(1) was causing the error. It should render now if everything else is correct.

Sorry if my explanation was hard to follow. You got the two mixed up. If the first glGetError is zero and the second check is not, then you know that the code in between the checks is throwing the error. In your case, the error was not cause by the glClear in between the two calls, because the first check already had an error, so you know that the error was called before this section of code.

If that block of code was throwing the error, then you would have gotten this output:
Quote
VERY FIRST! 0
2nd! 1281

Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #21 - Posted 2014-06-06 20:02:36 »

Ohh, ok thanks Cheesy

However, like I said, it's still pitch black? What am I doing wrong?, I've tried for days with different tutorials to get VBO's to work but no O.o'?
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #22 - Posted 2014-06-06 20:10:21 »

Thank you people, I have seemed to resolve the problem.

When fixing both of these to suggestions the I seem to be able to see my rendered objects and move as expected.
Quote
1  
2  
      chunk.render();
      camera.lookThrough();


Wrong order?

You can located which line is outputting this error by putting a check before and after a section of code. If the first check returns 0, and the second check returns something else, then you know that the error is in between those two checks.

Also, why are you calling
glClear(1);
?

Thanks especially to you too, and to all others that tried to help and contribute Cheesy
Offline Wiggyboy

Senior Newbie


Exp: 4 years



« Reply #23 - Posted 2014-06-06 21:55:32 »

Well, this is embarrasing, when we've finally got it rendering, it's rendering too much!. Well sorta.

https://drive.google.com/file/d/0B_tD7TCdVAZbcXlTNVBEcXFEa00/edit?usp=sharing
This picture is of a chunk size of 4. I've removed the left and right sides to make it more visible. Inside you see a weird almost cubish object. Where does it come from? I don't know.
But what I do know is, it appears in 1, 2, 4, 8 and maybe more chunk size, in 16 I cannot find it. And, as I approtch it I drop from 999 to 4 fps.

help please!?

Some code!

Chunk.java
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
private void rebuildVBO() {
      FloatBuffer vCoords = BufferUtils.createFloatBuffer(size * size * size * (3 * 4 * 6));
      FloatBuffer cCoords = BufferUtils.createFloatBuffer(size * size * size * (4 * 4 * 6));
     
      for(int x = 0; x < size; x++) {
         for(int y = 0; y < size; y++) {
            for(int z = 0; z < size; z++) {
               
               vCoords.put(Shape.createCubeVerticies(x, y, z, 1f));
               cCoords.put(Shape.getCubeColors());
               
            }
         }
      }
     
      vCoords.flip();
      cCoords.flip();
     
      glBindBuffer(GL_ARRAY_BUFFER, vId);
      glBufferData(GL_ARRAY_BUFFER, vCoords, GL_STATIC_DRAW);
      glBindBuffer(GL_ARRAY_BUFFER, 0);
     
      glBindBuffer(GL_ARRAY_BUFFER, cId);
      glBufferData(GL_ARRAY_BUFFER, cCoords, GL_STATIC_DRAW);
      glBindBuffer(GL_ARRAY_BUFFER, 0);
   }


Shape.java
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
public static float[] createCubeVerticies(float x, float y, float z, float size) {
      size = size / 2;
     
      return new float[] {x + size, y + size, z - size, // Top Right Of The Quad (Top)
        x - size, y + size, z - size, // Top Left Of The Quad (Top)
        x - size, y + size, z + size, // Bottom Left Of The Quad (Top)
        x + size, y + size, z + size, // Bottom Right Of The Quad (Top)
       
         x + size, y - size, z + size, // Top Right Of The Quad (Bottom)
        x - size, y - size, z + size, // Top Left Of The Quad (Bottom)
        x - size, y - size, z - size, // Bottom Left Of The Quad (Bottom)
        x + size, y - size, z - size, // Bottom Right Of The Quad (Bottom)
       
         x + size, y + size, z + size, // Top Right Of The Quad (Front)
        x - size, y + size, z + size, // Top Left Of The Quad (Front)
        x - size, y - size, z + size, // Bottom Left Of The Quad (Front)
        x + size, y - size, z + size, // Bottom Right Of The Quad (Front)
       
         x + size, y - size, z - size, // Bottom Left Of The Quad (Back)
        x - size, y - size, z - size, // Bottom Right Of The Quad (Back)
        x - size, y + size, z - size, // Top Right Of The Quad (Back)
        x + size, y + size, z - size, // Top Left Of The Quad (Back)
       
      };
   }
   
   private static Random ran = new Random();
   
   public static float[] getCubeColors() {
      float r1 = 1f;
      float b1 = 0f;
      float g1 = 0f;
     
      float r2 = 1f;
      float b2 = 1f;
      float g2 = 0f;
     
      float r3 = 1f;
      float b3 = 1f;
      float g3 = 1f;
     
      float r4 = 0f;
      float b4 = 1f;
      float g4 = 1f;
     
      float r5 = 0f;
      float b5 = 0f;
      float g5 = 1f;
     
      float r6 = 1f;
      float b6 = 0f;
      float g6 = 1f;
     
      return new float[] {
         r1, b1, g1, 1,
         r1, b1, g1, 1,
         r1, b1, g1, 1,
         r1, b1, g1, 1,
         
         r2, b2, g2, 1,
         r2, b2, g2, 1,
         r2, b2, g2, 1,
         r2, b2, g2, 1,
         
         r3, b3, g3, 1,
         r3, b3, g3, 1,
         r3, b3, g3, 1,
         r3, b3, g3, 1,
         
         r4, b4, g4, 1,
         r4, b4, g4, 1,
         r4, b4, g4, 1,
         r4, b4, g4, 1,
         
         r5, b5, g5, 1,
         r5, b5, g5, 1,
         r5, b5, g5, 1,
         r5, b5, g5, 1,
         
         r6, b6, g6, 1,
         r6, b6, g6, 1,
         r6, b6, g6, 1,
         r6, b6, g6, 1,
      };
   }
Pages: [1]
  ignore  |  Print  
 
 

 

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

The first screenshot will be displayed as a thumbnail.

ctomni231 (36 views)
2014-07-18 06:55:21

Zero Volt (34 views)
2014-07-17 23:47:54

danieldean (27 views)
2014-07-17 23:41:23

MustardPeter (30 views)
2014-07-16 23:30:00

Cero (44 views)
2014-07-16 00:42:17

Riven (46 views)
2014-07-14 18:02:53

OpenGLShaders (35 views)
2014-07-14 16:23:47

Riven (35 views)
2014-07-14 11:51:35

quew8 (31 views)
2014-07-13 13:57:52

SHC (67 views)
2014-07-12 17:50:04
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
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!