Java-Gaming.org Hi !
Featured games (85)
games approved by the League of Dukes
Games in Showcase (612)
Games in Android Showcase (173)
games submitted by our members
Games in WIP (659)
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] 2 3 ... 14
1  Game Development / Newbie & Debugging Questions / Re: [LibGdx/LWJGL] What does this do? on: 2015-08-04 21:30:49
It shouldn't really be being called every frame. You should be reusing buffers, not reinitializing them every frame. I know LibGDX is managing this for you but perhaps you're using the wrong rendering method for this use case. (If you're interested)
2  Game Development / Newbie & Debugging Questions / Re: Simple Stupid Funnel Algorithm on: 2015-07-30 21:06:55
I know the feeling. I try to keep a bookmark to any resource I use for anything longer than half an hour and still I completely lose good resources all the time. Thanks for the link.

If anyone does have a definitive answer to the simplified version however, I'd still like to hear it just for completeness.
3  Game Development / Newbie & Debugging Questions / Re: Check to see if Triangle intersects Rectangle on: 2015-07-30 12:39:15
+1 on @BurntPizza but of course bearing in mind the cases that the triangle is completely contained within the rectangle or that the rectangle is completely contained within the triangle. For both of these cases there will be no line intersections. The test would be is one (only need to test one) of the triangle's vertices inside the rectangle and is one of the rectangle's vertices inside the triangle.
4  Game Development / Newbie & Debugging Questions / Re: Simple Stupid Funnel Algorithm on: 2015-07-30 12:33:33
Thanks for the reply.

However, just in case you haven't seen it, there's a comment on the blog post you linked to (fourth from the end) where someone questions whether the simplified version will guarantee correct results.

I hadn't actually thanks. I can't really understand what he's saying there though, seems to me the funnel does cut through portals. But it is reassuring (if a little annoying) to know that there may be flaws. The comment for others reading btw is:

Quote from: Sean@Blogspot
So, I've been working on my own implementation of the funnel algorithm and I realized what sacrifice you're making with this (as you called it) "simple stupid funnel algorithm". The "sleeve" you've shown in the illustration is clearly taken from the Lee and Preparata paper. However, it works because the funnel's extents get contracted by each successive portal/edge. Your funnel doesn't cut through the center of portals. If it were to, you'd get an unhappy path. It is for these cases that the whole double-ended queue is used. Did you want to comment on that at all?

And apparently no one did want to comment at all.

If this is where the extra path vertex would be added, it makes sense it would be missed. So, that would appear to be a flaw either in the algorithm or in the implementation. (I imagine you've already tried stepping through in the debugger, but it seems the reason for the missing step could probably be determined that way.)

Certainly that would appear to be the reason, but like I say, what happens is as far as I can see, what is supposed to happen. The image I posted is a collection of screenshots from my actual implementation (implemented it step-wise for debugging in the end). So what you see is what you get.

I think what I will do in the end is just implement the original funnel (aka "string pulling" I think) algorithm - wouldn't mind if this produced suboptimal paths but illegal paths I can't be dealing with, still like to know what is going on here though. There seemed to be suggestion of using this version as a heuristic in the A* algorithm so maybe try that out so the work hasn't been a complete waste. If you have any good links for the non-simplified algorithm you could recommend, it'd be much appreciated.

Thanks again.
5  Game Development / Newbie & Debugging Questions / Simple Stupid Funnel Algorithm on: 2015-07-29 18:11:04
So I have a question about the Simple Stupid Funnel Algorithm (http://digestingduck.blogspot.co.uk/2010/03/simple-stupid-funnel-algorithm.html), is the only time you add a new point to the path when either the new left edge crosses the funnel's right edge or when the new right edge crosses the funnel's left edge? That seems to be what all the descriptions I can find say and what all the examples show but there would seem to be many cases where this does not work.

In the below:
  • Blue lines are the edges of the triangle mesh.
  • Green lines are the unoptimized path.
  • The red line is the left edge of the funnel.
  • The cyan line is the right edge of the funnel.
  • The yellow line is the current portal.
  • The magenta line is the current "optimized" path.

Now the first row works well. The second row is the exact same with the last triangle removed and produces an illegal path.

(Direct Link: http://i62.tinypic.com/2eq73t2.png)

Now as far as my understanding of the algorithm goes, my implementation is working other than that it produces an illegal result. So do I not understand the algorithm correctly, or have I missed something going wrong or is the algorithm itself just flawed?

Thanks in advance for any help.
6  Game Development / Newbie & Debugging Questions / Re: How to find memory leaks? on: 2015-07-14 11:00:34
You can't really have memory leaks in Java since the JRE manages the memory itself via the gc.

...
Is there somthing else that could cause it except memory leak?

Just something that is generally computationally expensive.

And the answer to how to find it is to run it through a profiler and see which bits are taking the longest. Any good IDE will have a decent profiler built in.
7  Game Development / Performance Tuning / Re: How to improve LibGDX 3D rendering performance? on: 2015-07-12 15:31:08
...

Just got back from implementing this one quick: it works great! It was easy to get the forward vector of the camera as it rotated, and the occlusion culling is seamless and gained me about 10 FPS. I'm really interested in hearing more about deferred rendering.

Right assumed you'd be rotating the sphere and keeping the camera constant but now I think about it your way round is better on so many levels. And I didn't actually realize there was a second picture, turns out I don't know how Imgur works.

As for deferred rendering, had a quick look through the LibGDX api (it was very sane) and it seems to me that the Mesh class is the one you want to be using to render this without batching up every frame. http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Mesh.html. I might be wrong of course. Making the mesh, I assume that is fairly consistent as with the batching API so shouldn't pose too much of a problem. And rendering, I think the render() method of Mesh is all you need.

Now the problem with doing this. If you have a different Mesh for each tile it will not be terribly efficient (I'd guess round about your current level). Certainly try it out because it might be fine like that and would be a lot easier, but if it doesn't then you'll have to group tiles together into the same Mesh. You mentioned you have already split the sphere up into 12 (?) sections so if you were to have a single Mesh for each section that would be very good. But that brings another problem with the occlusion testing. (what follows might be very patronizing for you considering how easily you implemented it last time. If so I apologize).

Essentially you can't just use the centre of the section because even if that is facing away, some tiles might not be (since the section is not flat like the tiles). The naive way to solve this would be to test each tile around the edge of the section and if any of them are facing toward the camera then render the whole section. But there is another way (performance gain will be negligible so I'd do whichever is simpler). I assume that each section will cover a certain sector (probably wrong term) of the sphere, if so then the test dot "can you cull" can be "is the dot product positive AND is the angle between the camera's forward vector and the section's average normal (direction from centre to centre of section) greater than 90 degrees minus half the angle covered by the section." So a bit of psuedo code because writing that confused me:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
float angleCovered = ...;
Vector3 cameraForward = ...;
Vector3 sectionNormal = ...;
float dot = dot(cameraForward, sectionNormal);
//less than or equal to now, again since the section is no longer flat.
if(dot <= 0) {
    thenRenderSection();
} else {
    //This line is unnecessary if you normalize the two normals.
    float normalDot = dot / (cameraForward .magnitude() * sectionNormal .magnitude());
    float angle = acos(normalDot);
    if(angle > (PI / 2) - (angleCovered  / 2)) {
        thenRenderSection();
    }
}


And there is an optimization you can do there by precomputing the cos of "(PI / 2) - (angleCovered  / 2)" and then you don't need to use arccos.

I hope that made some sense. Feel free to question / criticise.
8  Game Development / Performance Tuning / Re: How to improve LibGDX 3D rendering performance? on: 2015-07-11 23:01:20
First thing with optimization, is make sure you are optimizing the right thing. Have you run the game through a profiler?  If you haven't it is very simple and most IDE's will have a nice big "profile" button that will do everything for you and give you the results in a nice easy to read format. So if you haven't, make sure you do and check that it is your rendering methods that are taking the most time (if there is any sanity to LibGDX it'll be spending most time in the batcher's render() and end() methods). Anyway...

What immediately jumps to mind is to use deferred rendering directly rather than batching every frame. This would mean creating one or more OpenGL buffers at initialization time containing all the data and only when there is a change updating / recreating them. This would make the drawing much quicker (at the cost of a little video memory of course). But I don't use LibGDX and have no idea how to go about doing this in the LibGDX framework.

Occlusion culling would be very good in this case and very efficient too for the case of a simple sphere however, in your picture you have the tiles on the far side of the sphere being rendered and you can see them. With occlusion culling this would not be the case so you'd have to decide whether or not you want this.

If you do want to cull them then the test is as I say very simple, a single dot product between the tile's normal (a vector pointing from the centre of the circle to the centre of the rotated tile) and the camera's forward vector (as long as you aren't moving the camera, this is just [0, -1, 0] or potentially [0, 1, 0] depending on how your matrices are set up...). If the result is greater than or equal to zero then the tile is on the far side of the sphere and can be culled.
9  Game Development / Newbie & Debugging Questions / Re: Won't render quad no matter what I do in OpenGL3+, what am I doing wrong? on: 2015-07-09 19:15:30
Protip. Check for GL Errors. You should be calling glGetError() every now and again otherwise if there is an error it will completely pass you by.

My advice before you go looking for bugs is to stick this at the end of your initialization code and at the end of each loop. See what that turns up with.

1  
2  
3  
4  
int err = glGetError();
if(err != GL_NO_ERROR) {
    throw new RuntimeException("GL Error: " + err);
}
10  Game Development / Game Mechanics / Re: (Ending Discussion to other Thread) How do Vbo Textures work? on: 2015-07-07 16:13:00
The texture that will be drawn is the texture that is bound at the time you call glDrawArrays(). So...

1  
glBindTexture(GL_TEXTURE_2D, texture.getTextureID());


Put this line somewhere in your updateVBO() method (confusingly named method by the way when what it does is draw the contents of the VBO) BEFORE the call to glDrawArrays().
11  Game Development / Newbie & Debugging Questions / Re: How to implement scripting correctly? on: 2015-07-05 18:49:39
Short answer - whatever's easiest. The whole point of scripts in games is to make something that would take a long time in your core language take less time by "outsourcing" it to a scripting language. It means things are quicker (in the long run), more organized (easier to find / modify specific things) and generally more modifiable and less problem prone. So just jump into it, make an implementation. If you think it could be made easier to use, make it so.
12  Discussions / Miscellaneous Topics / Re: How to Learn Web Development for Java Programmers on: 2015-06-29 13:03:03
As far as I'm concerned, the only place you need to go to learn about web development is w3 schools. http://www.w3schools.com/. Literally that website, look at the menu down the left hand side. HTML, CSS, JavaScript (Including JQuery, AJAX and Angular and Bootstrap if you're interested in such things) and then goes onto all kinds of server side and more core technologies. And that's just the tutorials it shows there. There are plenty more on pretty much anything you'd ever need to know about developing anything for the web. The tutorials are great and they've even got interactive examples. Look no further.

This makes me cringe a bit, but maybe the site has improved over the past few years? Full disclosure I haven't touched the site in years. w3schools is, or at the very least, used to be notorious for misinformation and a good cause of major beginner web dev headaches. They're not in any way affiliated with w3c btw. See http://www.w3fools.com/.

Even so the Mozilla Developer Network (MDN) is a good place for accurate information https://developer.mozilla.org/en-US/

If you're more into a classroom approach https://teamtreehouse.com/ is a good choice imho.

As with many tutorials, it is not a covers all solution. For beginners I think it is very good and will certainly start you off well and point you in the right direction but I completely agree that for advanced topics and as a reference it is at best not very good and at worse completely useless. But speaking as someone who has never relied on it as a source of information I can't say it has ever misinformed me.

Didn't realize it wasn't affiliated with w3c though. Thanks for that shout.
13  Game Development / Newbie & Debugging Questions / Re: Fatal Exception - What'd I do? on: 2015-06-29 12:57:59
Essentially this is the equivalent of an IndexOutOfBoundsException in Java. You get it when one of the pointers you have set up tries to access some data outside of the OpenGL Buffer. Because there is no check to ensure it is in bounds, the program tries anyway and the os doesn't let it because it doesn't have access to that portion of memory and instead causes and access violation error.

So check your pointers. Post any calls to glVertexAttribPointer(), any calls to glBufferData() any calls to glDrawXXX().
14  Discussions / Miscellaneous Topics / Re: How to Learn Web Development for Java Programmers on: 2015-06-28 19:37:58
As far as I'm concerned, the only place you need to go to learn about web development is w3 schools. http://www.w3schools.com/. Literally that website, look at the menu down the left hand side. HTML, CSS, JavaScript (Including JQuery, AJAX and Angular and Bootstrap if you're interested in such things) and then goes onto all kinds of server side and more core technologies. And that's just the tutorials it shows there. There are plenty more on pretty much anything you'd ever need to know about developing anything for the web. The tutorials are great and they've even got interactive examples. Look no further.
15  Game Development / Game Mechanics / Re: Collision between different maps (2d lwjgl) on: 2015-06-12 22:04:18
...since I can't pass the arraylist by reference in java... but only by value (I think)...

Nope. Java is pass by value but the values it passes are references to objects not the objects themselves. So it is essentially pass by reference. But study this example carefully and understand why what happens happens. It is somewhat important.

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  
public class Foo {
    public int x;

    public Foo(int x) {
        this.x = x;
    }

    public static void bar1(Foo foo, int x) {
        System.out.println(foo.x);
        foo.x = x;
        System.out.println(foo.x);
    }

    public static void bar2(Foo foo, int x) {
        System.out.println(foo.x);
        foo = new Foo(x);
        System.out.println(foo.x);
    }

    public static void main(String[] args) {
        System.out.println("Example 1: Accessing Reference");
        Foo f1 = new Foo(10);
        System.out.println(f1.x);
        bar1(f1, 20);
        System.out.println(f1.x);

        System.out.println("Example 2: Reassigning Reference");
        Foo f2 = new Foo(10);
        System.out.println(f2.x);
        bar2(f2, 20);
        System.out.println(f2.x);
    }
}


The output of this code would be:
Quote
Example 1: Accessing Reference
10
10
20
20
Example 2: Reassigning Reference
10
10
20
10
16  Game Development / Newbie & Debugging Questions / Re: Does one change vertex positions in 3D space or only use matrices for that? on: 2015-06-07 17:54:38
Performance wise, often the bottleneck is moving transformed vertices over to the graphics memory. So what you can do is do as normal for rendering and then also calculate and store deformed vertices cpu side on a as-per-needed basis. By as-per-needed I mean obviously there is no need to recalculate vertices unless you both need to do some collision test and the mesh has moved since the last time.

That's quite a good general approach, but as ever it depends on your usage case.
17  Java Game APIs & Engines / Engines, Libraries and Tools / Re: Crocodile3D - Create 3d models and environments with tiles. on: 2015-05-15 23:53:45
Reminds me of old school game modding tools like DEdit for Lithtech.



Except I feel like DEdit was easier to use than this. Never understood why more editors don't go for the four viewport look.
18  Discussions / General Discussions / Re: Looking for Beta Testers for Android Metronome App on: 2015-05-10 18:40:36
Ah OK. Right. Misunderstood what you meant by "bar subdivision." Thought it was just beats in a bar again.
19  Discussions / General Discussions / Re: Looking for Beta Testers for Android Metronome App on: 2015-05-09 10:05:31
Shouldn't the third control of the third menu be the "beat subdivision" rather than "bar subdivision?" The bar sub division is contained in the time signature, but you would normally have a beat subdivision that you would use to, for example, play triplets or quintuplets.
20  Java Game APIs & Engines / Engines, Libraries and Tools / Re: [LWJGL] Library for rendering text. on: 2015-05-05 12:54:33
The absolute easiest way is to have prebaked images with the text you want on them. Obviously that isn't the best since no dynamic text.

If you want dynamic text, the easiest way (and it is still pretty easy as long as you have some experience) is to have a texture with every single character on it. You just have to know where each character is and then you can specify texture coordinates such that you get the right character. Downsides to this are: you will probably end up drawing one character at a time, creating the texture with all the characters can be time consuming unless you write a program to do it for you (which I would suggest, again not too difficult) and you need a new texture for each font you want to use.
21  Game Development / Newbie & Debugging Questions / Re: Make a camera with changeable size on: 2015-05-05 12:48:16
So many +1 to @KevinWorkman.

But to answer your question, it depends on the type of camera you are talking about. If you are talking first person then no. But I presume you aren't talking that. If it's 2D platformer or in fact anything 2D then yes.

However will not be efficient. I've never worked with Java2D for games but I would guess you would have to mess around with he transform associated with the Graphics object. Someone who knows what they're talking about can confirm or not that.
22  Game Development / Newbie & Debugging Questions / Re: Issue with path movement/speed on: 2015-04-30 09:47:11
A problem you will often get with stuff like this

Quote
if(entity.getX() == path.getPath().get(entity.getPathIndex()).getX() && entity.getY() == path.getPath().get(entity.getPathIndex()).getY()){

is that due to floating point inaccuracy, two values can be not quite equal but instead 1E-20 off. Which can cause unexpected issues. Try instead of using the equality comparator, using a method like this:

1  
2  
3  
public static boolean equalsTolerance(float f, float g) {
    return Maths.abs(f - g) < TOLERANCE;
}


Where TOLERANCE is some very small constant. Probably try it out somewhere in the order 1E-5 to start with.
23  Game Development / Newbie & Debugging Questions / Re: LWJGL 2D Point lighting on: 2015-04-26 18:18:41
OK so here's a really simple example of lighting using a single white point light using a square attenuation model.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
#version 400 core

in vec3 position;
in vec2 textureCoords;

out vec2 out_TextureCoords;
out vec2 out_WorldPos; //The untransformed position

uniform mat4 projectionMatrix;
uniform mat4 transformationMatrix;
uniform mat4 viewMatrix;

void main(void){
   out_TextureCoords = vec2(textureCoords.x,textureCoords.y);

   vec4 worldView = viewMatrix * transformationMatrix * vec4(position,1.0);
   
   out_WorldPos = position.xy;
   gl_Position = projectionMatrix * worldView;
}


1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
#version 400 core
#define ATTENUATION_COEFFICIENT 0.1 //fine tune to get it how you want it

in vec2 out_TextureCoords;
in vec2 out_WorldPos; //The untransformed position

out vec4 out_Colour;

uniform sampler2D texture0;
uniform vec3 light; //x, y refer to position. z refers to intensity.

void main(void){
   float d = length(light.xy -  out_WorldPos);
   float a = light.z / (d * d * ATTENUATION_COEFFICIENT);
   out_Colour = a * texture(texture0, out_TextureCoords);

}


I HAVE NOT TESTED THIS CODE. It should give you an idea of how to go about this even if it doesn't work.
24  Game Development / Newbie & Debugging Questions / Re: LWJGL/OpenGL 3.3+ Voxel Chunk Management on: 2015-04-03 15:11:02
So surely just:
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  
public class Chunk {

   private static final int CHUNK_SIZE = 64;
   private static final int CHUNK_HEIGHT = 128;

   public static void create(int chunkX, int chunkZ) {
      float xOffset = CHUNK_SIZE * chunkX;
      float zOffset = CHUNK_SIZE * chunkZ;
      for (int x = 0; x < CHUNK_SIZE; x++) {
         for (int y = 0; y < CHUNK_HEIGHT; y++) {
            for (int z = 0; z < CHUNK_SIZE; z++) {
               if (y < 16) {
                  if (StartClient.rand.nextInt(2) == 0) {
                     if (StartClient.rand.nextBoolean()) {
                        StartClient.allCubes.add(new Entity(
                              Blocks.cubeStone,
                              new Vector3f(x + xOffset, y, z + zOffset ), 0f, 0f, 0f, 1f));
                     }
                     if (StartClient.rand.nextInt(2) == 0) {
                        StartClient.allCubes.add(new Entity(
                              Blocks.cubeSand, new Vector3f(x + xOffset, y, z + zOffset),
                              0f, 0f, 0f, 1f));
                     }
                  }
               }
            }
         }
      }
   }
}


And also by the looks of it, your code will generate stone blocks and sand blocks in the same location.
25  Java Game APIs & Engines / Engines, Libraries and Tools / Re: [LibGDX] How to check if Object is in certain part of camera? on: 2015-03-30 13:26:35
Yes, I did mean for the full stop "." to denote the vector dot product (aka scalar product). Sorry for all the confusion, I normally define that. And fyi, I don't use "*" so as not to confuse with the cross product (aka vector product).

As for how to get the left vector, I thought you would already have that to do the frustum test. Essentially you can take it directly from the rotation matrix of the camera. That is the matrix that defines the rotation. Not the viewing matrix (which includes translation) not the projection matrix. Just the rotation matrix.

A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4


Then the left vector is just (A1, A2, A3) although if you're using a right handed coordinate system this is the right vector. If you're interested, (B1, B2, B3) is the "up" vector and (C1, C2, C3) is the "forward" vector.

Sorry again for all the confusion.
26  Java Game APIs & Engines / Engines, Libraries and Tools / Re: [LibGDX] How to check if Object is in certain part of camera? on: 2015-03-28 23:27:39
So if the "Object" is at position A, the camera is at position C, and the camera's left direction is the vector L then:

if (A - C) . L > 0 the object is to the left

if (A - C) . L < 0 the object is to the right

if (A - C) . L = 0 the object is dead in the centre.
27  Java Game APIs & Engines / Engines, Libraries and Tools / Re: Java Model Importer - Design Discussion on: 2015-03-15 13:10:20
Sounds plausible. It is a proprietary format after all. But apparently Blender has written their own importer, and have been nice enough to write up some unofficial specs: http://code.blender.org/index.php/2013/08/fbx-binary-file-format-specification/ and http://wiki.blender.org/index.php/User:Mont29/Foundation/FBX_File_Structure. Which might be of some help.
28  Game Development / Newbie & Debugging Questions / Re: Model Wrapper Class Improvements on: 2015-03-15 12:54:54
Premature optimization is the root of all evil. If your game is running too slowly and your analysis shows that the garbage collector is causing it to be slow then you are creating too many objects. Otherwise don't worry about it.
29  Java Game APIs & Engines / Engines, Libraries and Tools / Re: Java Model Importer - Design Discussion on: 2015-03-14 14:22:55
So you are right. But the maths really isn't that complicated. If I were you I'd take a look at the COLLADA specs. https://www.khronos.org/files/collada_spec_1_4.pdf. They really are so useful. Chapter 4 is a programming guide and it has a section called "Skinning a Skeleton in COLLADA." Which should explain everything you need to know about skeletal animation. The implementation can be a bit difficult but there are other posts here to help with that.

As for your clusters, I have no idea what they are.
30  Discussions / Miscellaneous Topics / Re: What I did today on: 2015-03-10 15:16:12
kepler

Yes but I wanted to show where it comes from. But also, yes Kepler will give you a more complete view of orbits.
Pages: [1] 2 3 ... 14
 
Coldstream24 (3 views)
2015-09-03 00:41:28

Andrew_3ds (21 views)
2015-09-01 19:08:10

afikri (15 views)
2015-08-31 09:30:22

afikri (23 views)
2015-08-31 09:30:07

afikri (11 views)
2015-08-31 09:27:24

afikri (15 views)
2015-08-31 09:26:40

Roquen (20 views)
2015-08-29 11:30:54

GamerC4 (33 views)
2015-08-22 20:38:50

GamerC4 (29 views)
2015-08-22 20:37:18

GamerC4 (35 views)
2015-08-22 20:37:01
HotSpot Options
by Roquen
2015-08-29 11:33:11

Rendering resources
by Roquen
2015-08-17 12:42:29

Rendering resources
by Roquen
2015-08-17 09:36:56

Rendering resources
by Roquen
2015-08-13 07:40:51

Networking Resources
by Roquen
2015-08-13 07:40:43

List of Learning Resources
by gouessej
2015-07-09 11:29:36

How Do I Expand My Game?
by bashfrog
2015-06-14 11:34:43

List of Learning Resources
by PocketCrafter7
2015-05-31 05:37:30
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!