Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (488)
Games in Android Showcase (112)
games submitted by our members
Games in WIP (553)
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 ... 16
1  Game Development / Newbie & Debugging Questions / Re: Data structures for large arrays on: 2014-08-30 22:19:01
I'm not one of the experts here at all, but FWIW a few things I thought:

  • 1 million x 20-byte objects doesn't seem a lot of memory really. In what way were you worrying about inefficiency?
  • If it was me I would definitely take the animation info out and hold it in animation objects, and only manage animations for tiles on the screen.
  • Do you really need the x and y in there? Maybe most access to Tile objects will be via addressing by x,y into the array anyway, in which case you know x and y.
  • Only keeping the visible tiles in memory sounds iffy. What if you want to zoom in and out? Also won't regenerating from disk all the time lose any dynamic information that's been added by player actions?
  • For me a Tile object is the way to go though purely from an OO point of view, I mean Map and Tile are the obvious objects that surely any tile-based game has!? Even if you later come back and compress the map data as part of a tuning exercise.


So the issue is that  5000 * 5000 = 25000000 , thats a lot of memory in terms of java , even if it is just 20 bytes thats *searches for phone *cannot find phone , over a quarter of a gig of data, which is a lot considering all we have done is load in a map . If you want to zoom out you simple change the memory read search preferences.
Hes storing an animation id (smart I hadnt thought of that  Smiley) which is a short.
Whats happening is all the information that is in view and a bit thats further out (to avoid tearing etc) is loaded into main memory , what happens is its edited here and then when its out of view its stored in the secondary memory along with the new player data. There is no constant regeneration simply reading and writing whats not seen back to memory.
2  Game Development / Newbie & Debugging Questions / Re: Handling movement on: 2014-08-30 22:10:48
To be honest if you know the distance from the point to the player then its much more efficient to just figure out the DX and DY through the equation of a straight line y = mx where m is the local variable in a loop , x is the gradient (Playery - pointy)/(Playerx - pointx) and y is y of course. If you then wanted to apply this to transforming your player position you would do transformfunction(m,y); As m is the increment and y is being increased by the increment * gradient. For implementing speed you would for example
1  
2  
3  
4  
float gradient = (Playery - pointy)/(Playerx - pointx);//calculate the gradient
for(int i = 0; i < (Playerx - pointx); i+=speed){//only go on for the distance (you might want to add checks because of that speed variable.
   transformfunction(i + Playerx,(i * gradient) + Playery);//apply the transformation.
}

3  Game Development / Newbie & Debugging Questions / Re: Data structures for large arrays on: 2014-08-30 16:38:48
You got it.
4  Games Center / WIP games, tools & toy projects / Re: SOLIS on: 2014-08-30 14:33:27
hmm google usually  just lets you share the folder
Download
5  Games Center / Featured Games / Re: [Slick2d] Retro-Pixel Castles > Building Mechanics and AI < on: 2014-08-30 09:46:58
mind if I ask how you store the map data? do you use tiles or represent each tile with a data value?
6  Game Development / Newbie & Debugging Questions / Re: Data structures for large arrays on: 2014-08-30 09:46:02
Well you wouldnt be rendering it all at one time would you? so you load it in from secondary memory as required and then save the new data , so you have chunks of the map (2d I assume) so say only 256 by 256 tiles are visible but the player can move 5 tiles per tick then you need to have the next 5 tiles outward loaded but the rest can be stored on memory.
7  Game Development / Newbie & Debugging Questions / Re: LWJGL 3D I want to create a 3d game on: 2014-08-29 23:19:25
Ok that does look interesting , what are the performance comparisons ?
8  Games Center / WIP games, tools & toy projects / Re: SOLIS on: 2014-08-29 23:01:04
First toy released , very simple just a basic block placing system with functional inventory and GUI , --->https://drive.google.com/folderview?id=0B48ywWBymi3OUnV1RDFMX2l3SUk&usp=sharing

Also main post updated
9  Discussions / General Discussions / Re: Icebucket challenge ??? on: 2014-08-29 16:34:16
ALS is not that deadly of a disease , it only really effects people who are already at an age when its difficult to perform normal tasks anyway.

?

ALS can begin at any age as far as I am aware, and it most certainly IS deadly as your chance of a fatal hearth-failure is very high.
At least thats what my mother told me about ALS and what it does.
(And she should know what it does because some of her patients have it)

Or am I (and my mother) wrong?

- Longor1996
No you are nto wrong , my wording went a bit off there I meant its not as widespread or severe as other diseases , even looking at the values themselves almost a 100x more people die because of heart disease and yet the funding is only twice the amount of the funding for ALS .

Of course you should donate , dontating to any charity is good because it will always help someone , my point is that dont throw the money at one problem , it wont solve the rest. You should give money to ALS to Heart disease to cancer to unicef because it helps people but just giving all the money to one place leaves the others at difficulty, however going onto heart disease which is sometimes caused by people with things such as obesity and smoking whereas having ALS is currently not known to be caused by any human controllable factors.
10  Discussions / General Discussions / Icebucket challenge ??? on: 2014-08-29 15:23:14
So there has been a lot of icebucket challenges going around , over a million to be slightly more precise , however the question I want to raise is that firstly are we dontating to the correct charity  and secondly pouring ice with water is not the best way to do things  Wink . So for the first one : ALS is not that deadly of a disease , it only really effects people who are already at an age when its difficult to perform normal tasks anyway. More obvious charities to donate to would be ones for heart disease , this is currently one of the biggest killers in the western world and yet recieves moderately low funding compared to things such as breast cancer. 2: if you are going to pour something over your head to show that you care , add some form of absorbant salt to it, Drops the temperature hugely , if you are really going to do it though then use dry ice or if you are really daring use some liquid nitrogen.
11  Games Center / WIP games, tools & toy projects / Re: SOLIS on: 2014-08-29 11:24:35
Basics of construction have now been implemented , just need to fix up resource consumption and camera position.
12  Game Development / Newbie & Debugging Questions / Re: Trouble rendering using BufferedImage, pixels and for loops. on: 2014-08-29 00:02:36
So you cannot do this with pure java , I found this out. The best way to do this efficiently is to use OpenGL or librarys such as libdgx or LWJGL. There are a lot of tutorials out there.
13  Discussions / General Discussions / Re: Performance Test for the Voxel Thing on: 2014-08-28 21:40:39
61fps
I7 4700hq
GTX770m
6gb ram
14  Games Center / WIP games, tools & toy projects / Re: SOLIS on: 2014-08-28 17:06:18
Reading through your features, you sound like an avid EVE Online fan :p.
I gave eve online a go and found it just overwhelming, but also that the ships were not editable and you didnt have crew. I am to have entirely controllable crew with internal resources, research , training and weapons etc.
Ive been working on programming the inventory:


Currently im at the stage were annoying bugs are appearing , the kind of bugs that require commenting out single lines of code.
15  Discussions / Miscellaneous Topics / Re: How often do you code on: 2014-08-28 11:00:55
Ive been getting the urge to do more coding at the moment , when you start programming after a long break its daunting and you don't really want to , but when you get back into it , it's really enjoyable and you find lots of projects to work on. I currently have the urge to learn c++, you know for funsies.
16  Discussions / Miscellaneous Topics / Re: What I did today on: 2014-08-28 10:58:20
1: Theres no textures as such here, the shadows are just voxels that have changed colour based on them being in shadow of something else. It's a fixed shadow direction right now.

2: Not sure what you meant on this one, again, no textures, they're just little blocks shaded.

Cheers,

Kev
2: for this one I mean the shading on the voxel should control how the tree is shaped , so if they are dark voxels they are close to the trunk whilst if they are light voxels then they are away from the center of the tree.
17  Game Development / Newbie & Debugging Questions / Re: Reloading a texture on: 2014-08-27 23:43:15
What was happening is I was requesting a texunit from the user , when I did this it changed what was being rendered so that all the textures were equal to what is curently on this texunit , so I removed that and it works now. Implementing my inventory, im in very early stages but I have big plans for this. check it out , SOLIS under WIP
18  Game Development / Newbie & Debugging Questions / Re: Reloading a texture on: 2014-08-27 21:53:05
traced it down to a method Bindtexture call. It set the active texture slot .
19  Game Development / Newbie & Debugging Questions / Re: Reloading a texture on: 2014-08-27 21:44:33
im slowly isolating the issue but this will take a while.
20  Game Development / Newbie & Debugging Questions / Re: Spam Killing on: 2014-08-27 21:43:08
temp.hideRobot();
            listOfRobots.remove(temp);
its probably that bit there . Where is temp defined , you might be assigning it a value you dont want to. Also the reason why its spamming is because the second you press down the button the action continues to fire , you can implement a few boolean checks to stop this.
21  Discussions / Miscellaneous Topics / Re: What I did today on: 2014-08-27 19:59:39
2 things:
1: are the shadows just added so say are they textures drawn next to it or are they calculated from a light source OR are they rotated and manipulated rectangles or other drawn shapes just to add some texture .
2: for your tress (auto generating talk here) the darker the colour the deeper it is within the texture, so for instance if the tree was quite light with very light greens then it would be rather large but if the tree was dark it would follow the trunk.
22  Game Development / Newbie & Debugging Questions / Re: Reloading a texture on: 2014-08-27 19:42:26
So it turns out that thats not the issue , the issue appears to be caused by the way the text is rendered itself , ill have to play around with it . It was overloading the textures because I was loading in the texture before the constructor directly as a variable. Dont know why that messed it all up but that bits fixed now to stop it blanking the screen.
23  Game Development / Newbie & Debugging Questions / Re: Reloading a texture on: 2014-08-27 19:08:40
Ill show you the code that handles , I have had to order it because of this issue but only now has it become detrimental
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
spritesheet iconsheet = new spritesheet(
            "com/Core/graphics/texture/sprites/icon.png");

      icon.createobject(
            world.shape.rect(iconsheet.getcoords(0, 0, 199, 149), (int) width,(int)height),
            iconsheet.gettexture(), 1);
      icon.translate(0,-(int)height);
//      m = new Mouselistener(this); depreciated
     
      logger.log("LOGGING STARTED OF SOLIS");

      button = new spritesheet("com/Core/graphics/texture/sprites/Button.png");
      game = new Game(this);
      // WORLD AND TILE SETUP

so all of that is done in order , all the GUI generation is done before all of the manipulateable stuff.
so if I load the iconsheet texture after the button texture , even though they are entirely different textures the issue will occur.


Realisation moment , im using a texture loader then a spritesheet class , maybe the spritesheet is interfering LUCAS AWAY!
24  Game Development / Newbie & Debugging Questions / Reloading a texture on: 2014-08-27 16:21:54
So I currently use a texture class , however this class is quite limiting as you have to load it in before you setup the textures. So the issue comes when for instance I load in a spritesheet create object A , then I load in spritesheet buttons , then I create tile B and the issue comes where B gets a buttons texture and not a tile texture. Here is the example of it using my text renderer.



What happens is that when I load in the new texture every other texture freaks out.
Here is my GB class that generates the VBOS (each tile, text, GUI , image has its own vbo which I will sort out later)
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  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
package com.Core.graphics;

import java.nio.FloatBuffer;

import org.lwjgl.BufferUtils;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL15;
import org.lwjgl.opengl.GL20;

import com.Core.Gamecore;
import com.Core.Util.Translationhelper;
import com.Core.graphics.shader.Shaderclass;
import com.Core.graphics.texture.Texture;

public class GB {// Sepeartely used object only.
  private FloatBuffer verticies;
   private FloatBuffer texcoord;
   private int vertid, texid;
   public vertex2d translation;
   private Texture t;
   private int transformid, scalarid, vertcount;
   private float scalar;
   private Translationhelper th;
   private Gamecore gc;
   private Shaderclass shader;

   public GB(Gamecore gc) {
      shader = new Shaderclass();
      shader.attachVertexShader("com/Core/graphics/shader/shaders/vertshader.vert");
      shader.attachFragmentShader("com/Core/graphics/shader/shaders/fragshader.frag");
      shader.link();
      transformid = GL20.glGetUniformLocation(shader.programID, "transform");
      scalarid = GL20.glGetUniformLocation(shader.programID, "scalar");
      scalar = gc.verticalaspect;
      th = new Translationhelper();
      th.setsize(gc.width, gc.height);
      this.gc = gc;
   }

   public void createobject(vertex2d[] object, Texture t, int texunit) {
      GL11.glEnable(GL11.GL_TEXTURE_2D);
      GL11.glEnable(GL11.GL_BLEND);
      GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
      translation = new vertex2d(0, 0);
      verticies = BufferUtils.createFloatBuffer(2 * object.length);
      texcoord = BufferUtils.createFloatBuffer(2 * object.length);
      for (int i = 0; i < object.length; i++) {
         verticies.put(object[i].getx());
         verticies.put(object[i].gety());
         texcoord.put(object[i].gets());
         texcoord.put(object[i].gett());
      }
      verticies.rewind();
      texcoord.rewind();
      vertid = GL15.glGenBuffers();
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
      GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticies, GL15.GL_DYNAMIC_DRAW);
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
      vertcount = object.length;
      texid = GL15.glGenBuffers();
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texid);
      GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texcoord, GL15.GL_DYNAMIC_DRAW);
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
      this.t = t;
      bindtexture(texunit);
   }

   public void bindtexture(int texunit) {
      int loc = GL20.glGetUniformLocation(shader.programID, "tex");
      if (loc != -1) {
         GL20.glUniform1i(loc, texunit);

         if (texunit == 0) {
            GL13.glActiveTexture(GL13.GL_TEXTURE0);
         } else if (texunit == 1) {
            GL13.glActiveTexture(GL13.GL_TEXTURE1);
         } else if (texunit == 2) {
            GL13.glActiveTexture(GL13.GL_TEXTURE2);
         } else if (texunit == 3) {
            GL13.glActiveTexture(GL13.GL_TEXTURE3);
         }

      } else {
         System.err.println("WARNING: NO VARIABLE DETECTED WITHIN SHADER");
      }

   }

   public void translate(float f, float g) {
      vertex2d transformed = th.transform((f*2) - (gc.width), (
            g*2) +(gc.height));
      translation.setcoordinates(transformed.getx(), transformed.gety());
   }

   public void forcetranslate(float f, float g) {
      translation.setcoordinates(f, g);
   }

   public void render() {
      shader.bind();

      // Bind the vertex buffer
  //   t.bindtex(t.id, t.width, t.height, t.buffer);
     GL11.glBindTexture(GL11.GL_TEXTURE_2D, t.id);
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vertid);
      GL20.glEnableVertexAttribArray(0);
      GL20.glEnableVertexAttribArray(1);
      GL20.glVertexAttribPointer(0, 2, GL11.GL_FLOAT, false, 0, 0);
      GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, texid);
      GL20.glVertexAttribPointer(1, 2, GL11.GL_FLOAT, false, 0, 0);
      GL20.glUniform2f(transformid, translation.getx(), translation.gety());
      GL20.glUniform1f(scalarid, scalar);
      // Draw the textured rectangle
     GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertcount);

      GL20.glDisableVertexAttribArray(0);
      GL20.glDisableVertexAttribArray(1);
      shader.unbind();
   }

   public void destroy() {
      if (Display.isActive()) {
         GL15.glDeleteBuffers(vertid);
         GL15.glDeleteBuffers(texid);
      }
      shader.dispose();
   }


}

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  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
package com.Core.graphics.texture;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.ByteBuffer;

import javax.imageio.ImageIO;

import org.lwjgl.BufferUtils;

import static org.lwjgl.opengl.GL11.*;
//Many thanks to SHC for the tutorial on this
public class Texture {
   public int id;

   public int width;

   public int height;

   public ByteBuffer buffer;
   private Texture(int id, int width, int height, ByteBuffer buffer) {
      this.id = id;
      this.width = width;
      this.height = height;
      this.buffer = buffer;
   }
   public Texture(){
     
   }

   public static Texture loadTexture(String name) {

      BufferedImage bimg = null;
      try {
         bimg = ImageIO.read(Texture.class.getClassLoader()
               .getResourceAsStream(name));
      } catch (IOException e) {
         
         e.printStackTrace();
         System.out.println("Texture loading failure! " + name);

      }

      int[] pixels = new int[bimg.getWidth() * bimg.getHeight()];
      bimg.getRGB(0, 0, bimg.getWidth(), bimg.getHeight(), pixels, 0,
            bimg.getWidth());

      ByteBuffer buffer = BufferUtils.createByteBuffer(bimg.getWidth()
            * bimg.getHeight() * 4);
      System.out.println(pixels[0]);
      for (int y = 0; y < bimg.getHeight(); y++) {
         for (int x = 0; x < bimg.getWidth(); x++) {
            if (pixels[y * bimg.getWidth() + x] != -65281
                  ) {
               int pixel = pixels[y * bimg.getWidth() + x];

               buffer.put((byte) ((pixel >> 16) & 0xFF));

               buffer.put((byte) ((pixel >> 8) & 0xFF));

               buffer.put((byte) (pixel & 0xFF));

               buffer.put((byte) ((pixel >> 24) & 0xFF));
            }
            else if(pixels[y * bimg.getWidth() + x] != -1){
               buffer.put((byte)0);
               buffer.put((byte)0);
               buffer.put((byte)0);
               buffer.put((byte)0);
            }
            else{
               buffer.put((byte)-1);
               buffer.put((byte)-1);
               buffer.put((byte)-1);
               buffer.put((byte)-1);
            }
         }
      }
      buffer.flip();
      int textureID = glGenTextures();
      glBindTexture(GL_TEXTURE_2D, textureID);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, bimg.getWidth(),
            bimg.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

      return new Texture(textureID, bimg.getWidth(), bimg.getHeight(),buffer);
   }
   public void bindtex(int textureID,int width , int height ,ByteBuffer buffer){
      glBindTexture(GL_TEXTURE_2D, textureID);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width,
            height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
   }
}


At the bottom (bindtex) is my attempt to remedy the issue by reloading the texture in just before I render the vbo.
Im not the best with OpenGL so its going straight over me. From what I can see though its loading the texture which is messing with the other stored textures causing them to render as the last loaded texture
25  Discussions / General Discussions / dart on: 2014-08-27 11:52:36
There is a new language cropping up that I have had a quick look at , notch uses it a lot at the moment and it looks interesting for developing web apps. It has a similar functions and objects as C and C++ but with all the commands being extremely obvious. What do you guys think?
26  Discussions / Miscellaneous Topics / Re: Killers/Murderers - Are they really wrong? on: 2014-08-27 11:49:33
I would personally say that yes most killers and murderers are wrong , they have made horrific decisions in their life that have led them to that , for instance it is not in any animals natural  behaviour to unite into seperate conglomerations with some being rogue which mass murder its own population. The only thing similar to this is when they fight for dominance which is basically what we call the united nations now a bunch of angry men shout at each other.

-Warning : visualisations in post may be more severe than in actual life.
27  Discussions / Miscellaneous Topics / Re: What I did today on: 2014-08-27 10:18:54
Thanks Riven, makes sense. Was an artefact of how it was rendered.

Made a bit more progress, interactive, faster and fun too Smiley



Cheers,

Kev
Are those loaded in models or textures manipulated into the isometric grid
28  Games Center / Featured Games / Re: [Slick2d] Retro-Pixel Castles > Building Mechanics and AI < on: 2014-08-26 23:13:02
The second this comes out im buying it , its one of those unique games that nobody thinks of and when someone does everyone is just like "ooh layered textures uggggghhhhhhhhh" and just sort of stare in awe at it for a bit imagining the epic battles on it. The way you have presented it is the way that makes me go I want this , very very few games do this. Maybe you could do a futureristic version of it later.
29  Game Development / Newbie & Debugging Questions / Re: Solved - Need advice/guidance on path finding - A* on: 2014-08-25 20:51:28
What you have done is cool , the movement is accurate , one thing though is that when the play seems to make a sudden move change close to the ai the ai gets confused moves away then comes back . Maybe instead of continually updating the position maybe update it 1 every n ticks so that its not constantly adjusting and that it can get closer to the path the player is following.
30  Games Center / Contests / Re: Air Control Gam Jam (Simulator Theme) on: 2014-08-25 18:37:07
I really want to give this a go , I have a great idea for a game and it would be fun , its kind of unique , maybe not a simulator as such but more of a management.
Pages: [1] 2 3 ... 16
 

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

The first screenshot will be displayed as a thumbnail.

TehJavaDev (17 views)
2014-08-28 18:26:30

CopyableCougar4 (26 views)
2014-08-22 19:31:30

atombrot (39 views)
2014-08-19 09:29:53

Tekkerue (36 views)
2014-08-16 06:45:27

Tekkerue (33 views)
2014-08-16 06:22:17

Tekkerue (22 views)
2014-08-16 06:20:21

Tekkerue (33 views)
2014-08-16 06:12:11

Rayexar (68 views)
2014-08-11 02:49:23

BurntPizza (45 views)
2014-08-09 21:09:32

BurntPizza (36 views)
2014-08-08 02:01:56
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

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
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!