Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (499)
Games in Android Showcase (118)
games submitted by our members
Games in WIP (568)
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
1  Game Development / Newbie & Debugging Questions / Re: Jesus, seperate entities PLEASE on: 2013-04-30 17:47:31
Most likely all your entities are referring to the same rectangle making it show at one place only. Do the following in your entities:

1  
2  
3  
4  
public Rectangle getRectangle(){
rectangle.setRect(getX(),getY(),getWidth(),getHeight());
return rectangle;
}


Less likely, quite obvious so you probably thought about it, the rectangles are off-screen. Eg you are drawing using the coordinates of the entities but remember while the worldmap may be large (2000x2000 pixels) the gamescreen might only be 512x512 in which case rendering with x,y values outside 512x512 will not show the rectangles, here is a very easy fix:

1  
2  
3  
public Rectangle getRectangle(){
rectangle.setRect(getX()%512, getY()%512, getWidth(), getHeight());
return rectangle;


This again assumes you have screensize 512x512, just change with your actual widths and heights.


This will at least update the rectangle even if there is only one for all of the entities, assuming you have those getters in your class Smiley
2  Game Development / Newbie & Debugging Questions / Re: Screen blackens when CTRL-ALT-DELETE in game. on: 2013-04-21 22:19:28
Seems to be, I just checked and the EDT is alive and the buffer not lost. HD7870 with newst Catalyst. Gonna check tomorrow if reproducable on other computers.
3  Game Development / Newbie & Debugging Questions / Screen blackens when CTRL-ALT-DELETE in game. on: 2013-04-21 21:59:43
How do you circumvent this problem in java2d? The screen turns completely black and is not recovered until the game is closed and opened again, everything else works apparently. This is not just on CTRL-ALT-DELETE. If the OS promots a UAC action ("Do you want to run this program in admin" etc) for any other programs the same problem happens. I am guessing the swing thread dies.
4  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-17 22:22:28
Well truthfully it only breaks once in 3/Integer.Max_Value times. The loop has to run about 2^30 times before it has a 10% chance to break. But I see your point, it is bad practice to trust the coin-flip (however unlikely it is to break) but it is just as likely to break as your method and I simply wanted to give the OP a tip on how to do it, I didn't want to write the code for him. Just on principle I don't like to be treated unfairly or on wrong assumptions nor do I like it when people are rude (not necessarily implying that you were or that anyone was to me or that I feel offended). Half this thread is full of my posts complaining! If only everyone was being helpful and constructive.
5  Game Development / Newbie & Debugging Questions / Re: File Not Found Exception on: 2013-04-17 22:15:02
Are you sure you have the correct permission for that file? Have you tried reading it as a stream (seems you have) and not as a file? If it is in your classpath (try putting it in the same folder as the class the reader is being called from. If the structure is like so:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
-SomePackageInClassPath
  -SomeReaderClass.java
 OR
  -SomeOtherPackageOrFolder
    -SomeOtherPackageOrFolder
      ..etc
       -SomeReaderClass.java
-SomeFolder_or_SomePackage1
  -SomeFolder_or_SomePackage2
    -SomeFile.txt


Then the following in
1  
SomeReaderClass.java
will work inside .jar or in eclipse.
1  
2  
3  
4  
5  
6  
public BufferedReader readFileAsBuffer(String fileName) {
      BufferedReader reader = null;
      reader = new BufferedReader(new InputStreamReader(getClass()
            .getResourceAsStream(fileName)));
      return reader;
   }

1  
readFileAsBuffer("/SomeFolderOrPackage1/SomeFile.txt");


If the file is inside SomeFolderOrPackage1 and not under SomeFolderOrPackage2 then the following
1  
readFileAsBuffer("/SomeFile.txt");

Should work.
6  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-17 21:48:10
I am not sure your code is right riven. You are checking if ANY of them is true, which is not the OPs requirement, he requires that ONE be true at most. The (I think proper) test returns zero false positives out of a billion. And thank you for replying with a proper explanation, truth be told I didn't bother to test my own answer earlier but it seems I wasn't wrong. Neither were you in your answer, I just got frustrated reading some of the childish replies here.

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  
public class TwoBallsOneCup {
   public static void main(String[] args) {
      int falseCount = 0;
      int loops = (int) 1E+9;
      for (int i = 0; i < loops; i++) {

         int u = (int) (Integer.MAX_VALUE * Math.random());
         int v = (int) (Integer.MAX_VALUE * Math.random());
         int w = (int) (Integer.MAX_VALUE * Math.random());
         int m = Math.min(u, Math.min(v, w));

         int[] a = { u, v, w };
         boolean[] b = { false, false, false };
         
         
         if (a[0] == m)
            b[0] = true;
         else if (a[1] == m)
            b[1] = true;
         else if (a[2] == m)
            b[2] = true;

         // Verify, we require ONE true, not if any is true. See rivens

         if (b[0]) {
            // One true, are others true?
           if (b[1] || b[2]) {
               falseCount++;
               System.out.println("Failed, two trues");
            }
         }

         if (b[1]) {
            if (b[0] || b[2]) {
               falseCount++;
               System.out.println("Failed, two trues");
            }
         }

         if (b[2]) {
            if (b[0] || b[1]) {
               falseCount++;
               System.out.println("Failed, two trues");
            }
         }
      }
      System.out.println("False counts: " + falseCount);
   }
}

1  
False counts: 0
7  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-16 22:48:41
I never said it was superior but everyone is dragging down everyone else besides Riven here. Granted he is well-versed in Java (I have seen some of his posts, especially the green-thread supports this claim) his answer is just as fallible as ours (mine) even if the code for it is shorter (because of not converting to booleans). He is using the java library, so am I , his NextInt call will be just as likely to reproduce the same number twice as mine is.

But my mistake for expecting polite and reasonable behavior from the members here, I am too used with sites like SO. Instead of constructive criticism (like pointing out why my answer is wrong, providing proof for it failing 1% of the time) that would better the community we turn to condescension.
8  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-16 22:13:01
Like Riven said, there is a chance that there will be multiple true values, when the OP specifically requested 1 true and 2 false. You can't exactly have 2 cups that are "true", that's not how the game works. Let's look at what you posted:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
u = random...
v = random...
w = random..

a = int[] {u,v,w}
b = boolean[] {false, false, false}

m = min(u,min(v,w))
if (a[0] == m ) {b[0] = true};
if (a[1] == m) { b[1] = true};
if (a[2] == m) { b[2] = true};

If two of the numbers are the same, there will be 2 true values. If 3, then 3 true values. -other stuff edited out due to math problems-

The likelihood of two numbers being the same is a factor of 1/Integer.MAX_VALUE. This is no different than rivens suggestion in terms of getting the same number twice. NextInt is not magic.
9  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-15 17:01:44
Seriously what is wrong with random.nextBoolean()?  

The problem that is posted here is ......

How was my suggestion wrong?
10  Game Development / Newbie & Debugging Questions / Re: Building a level-editor on: 2013-04-13 01:17:19
Thank you that is helpful, we can use something very similar for entityloading and expand on this!
11  Game Development / Newbie & Debugging Questions / Building a level-editor on: 2013-04-13 00:56:37
So our game (RPG) is nearing completion and we are at the stage where we are planning to add content to the game in form of questing, combat-able enemies, dungeons, etc. We are pretty new to java (couple of months in, university class, we know some python/c++) and have a hard time figuring out how to implement a leveldesigner. We figured we start out the same we way we did with the game, create a canvas and draw sprites on it, but that can be done with paint. We would like some advice on the next step to take from here, and would be grateful for any source of any leveleditors we can look at (learn much faster like this).

Things we are planning to implement:

  • Gameobjects
    Placing animations on the map, changing how it animates (framerate, directions). Adding enemies, with their sprites and animations and their AI, maybe even adding items and weapons to them.
  • Collisiondetection
    An invicible overlay of the currentmap that shows what is walkable and what is not, only visible in editor. Letting an object decide whether it is walkable or not, automatically updating the overlay. This would let us add cool stuff like player walking on some water (required he has Cool Item of the Waterwalker) while other water is unwalkable (ie cross rivers but not seas).
  • Porting
    This sounds like the hardest part, we would like to transfer what is on the level editor to an actual playable game without creating huge xmls or .map files or a billion different classes for loading stuff from those files proplery. The same objects exit and work problemfree in the game, so hopefully an easy solution exists for just loading them into memory as if they were intialized in the game-code.
This sounds like a lot more work than the actual game, especially for newbies but content is what drives a game, even the coolest looking game can get boring after a minute if there is nothing more to do.
12  Game Development / Newbie & Debugging Questions / Re: Measuring time inside render loop. on: 2013-04-11 18:37:26
You are of course right that it would be better, especially if the rendering takes any measurable time as in my current loop I don't take that into consideration.
13  Game Development / Newbie & Debugging Questions / Re: Maths Question - move camera based on mouse distance from centre on: 2013-04-11 11:13:36
Is the mouse center (0,0)? Or is the topleft corner (0,0)?
14  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-11 10:55:30
Nextint isn't magic, it can roll the same numbers 3 times in a row, it just asks for the next integer in the sequence that is built pseudo-randomly., the sequence can contain 3 same numbers in a row.
15  Game Development / Newbie & Debugging Questions / Re: Generating three random booleans on: 2013-04-10 23:24:24
Pick a random number [0, int_max].

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
u = random...
v = random...
w = random..

a = int[] {u,v,w}
b = boolean[] {false, false, false}

m = min(u,min(v,w))
if (a[0] == m ) {b[0] = true};
if (a[1] == m) { b[1] = true};
if (a[2] == m) { b[2] = true};




Always gives you 1 true 2 false at random, unless you roll the same number at the same time, once in a blue moon.
16  Game Development / Newbie & Debugging Questions / Re: A good resource for anyone, first post introduction on: 2013-04-10 23:14:23
It is very normal, I read somewhere (new scientist?) about how having dealt with very structured problems (like coding) you might dream about their solutions. Happens to me anytime I spend more than 2 hours on coding during the day. It is really fun, sometimes I dream about restructuring my code entirely and wake up in the morning rushing to do that before I forget.
17  Game Development / Newbie & Debugging Questions / Re: Measuring time inside render loop. on: 2013-04-10 19:10:55
That was in the SCCE, the actual game has no logic in the rendering, in the gameloop after updating the entities renderer.render(delta) is called where the renderer keeps an arraylist with references to all the objects in the game that implement the Renderable interface. AnimatedSprite is only one type that implements the interface, I have stuff like "GameString" which draws a spritelike string and questpanels etc. The idea was to remove intercoupling of objects ( or reduce it to a minimum level) letting me expand and implement new futures without breaking stuff all the time. This is why most objects take care of themselves in my code, like how the animatedsprite only needs a delta and a reference to the Graphics2D.
18  Game Development / Newbie & Debugging Questions / Re: Measuring time inside render loop. on: 2013-04-10 16:36:30
After extensive testing it seems I can keep complete control over the margin (eg this works completely), using the code above but keeping control over the margin by setting a limit on how fast the sprites can render, I wanted to avoid doing this but it works and the % operator is very cheap.

1  
2  
3  
margin = fpsDelay;
if (frameDelay<fpsDelay) {
 frameDelay = fpsDelay; }



19  Game Development / Newbie & Debugging Questions / Measuring time inside render loop. on: 2013-04-10 14:26:15
I have different sprites that I want to render at different speeds by changing to the next frame in the spritesheet if a delta time has passed. The problem is I have no idea how to get this delta, I cannot measure it inside the frameUpdate method of the sprite because it is called all the time inside my gameloop. I cannot measure it inside the gameloop because the game loops condition is while(game.isRunning()).

Essentially:

1  
2  
3  
4  
5  
6  
1) Somewhere in code, create animatedsprite with framedelay 250ms.
In gameloop:
2) Measure time after updating
3) Pass delta to animatedsprite
4) In animatedSprite, check if 250 ms has passed
5) Has 250 ms passed? Then draw next frame


Stuck on 3). I am currently solving this by clever use of math, if a multiple of the framedelay has passed then I curentFrame++ but since the Thread.sleep in the gameloop is not continious (1 ms resolution but usually determined by fps, eg if 100 fps then 10 ms resolution) this will not work if I do not provide a margin, my current margin is 10 ms. This assumes that the game MUST run under 100 fps and that there is no sprite that is rendered above 100 fps (framedelay < 10 ms).

Any solutions? Current SCCE:
Sprite
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  
public class Animated implements Renderable {
   private ArrayList<BufferedImage> sheet;
   private int cols;
   private int rows;
   private int x;
   private int y;
   private int frameDelay;
   private int currentFrame;
   private int lastFrame;
   private BufferedImage currentImage;

   public Animated(ArrayList<BufferedImage> spritesheet, int cols,
         int rows, int frameDelay) {

      this.sheet = spritesheet;
      this.cols = cols;
      this.rows = rows;
      this.frameDelay = frameDelay;
      this.lastFrame = sheet.size() - 1;
      this.currentImage = sheet.get(0);
   }

   private void frameUpdate(int deltaTime) {
      System.out.println(deltaTime % frameDelay);
      if ((deltaTime % frameDelay) < 10) {
         if (currentFrame == lastFrame) {
            currentFrame = 0;
         }
         else {
            currentFrame++;
         }
         currentImage = sheet.get(currentFrame);

      }
   }

   @Override
   public void render(Graphics2D g) {

   }

   @Override
   public void setPosition(int x, int y) {
      this.x = x;
      this.y = y;
   }

   @Override
   public void render(Graphics2D g, int deltaTime) {
      frameUpdate(deltaTime);
      g.drawImage(currentImage, x, y, null);

   }

}

Render in loop:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
public void render() {
      Renderable bahamut = new Animated(images.get("bahamutANIMATED"), 4, 4,
            250);
      bahamut.setPosition(0, 500);
      Renderable bahamut2 = new Animated(images.get("bahamutANIMATED"), 4, 4,
            5000);
      bahamut2.setPosition(0, 0);
      long t0 = System.currentTimeMillis();

      while (true) {
         clearScreen();

         long t1 = System.currentTimeMillis();
         int delta = (int) (t1 - t0);
         bahamut.render(g, delta);
         bahamut2.render(g, delta);

         showBuffer();
         try {
            Thread.sleep(10);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
   }
20  Game Development / Newbie & Debugging Questions / Re: Best way to play audio in java on: 2013-04-09 19:36:06
I want to use avoid the usage of libraries entirely, except for maybe if we decide to use mp3.
21  Game Development / Game Mechanics / Re: What are the ways to optimize game? on: 2013-04-09 19:30:39
Int rounds down, if you are checking for intersection it will never happen. Safest bet is to round up after inting (+1 instead of expensive Math.round) since this is just used for collision testing and not actual rendering. Unless your gamecode requires 1 pixel resolution on the collision-testing.
22  Game Development / Newbie & Debugging Questions / Best way to play audio in java on: 2013-04-09 14:20:35
What is the best way of playing audio (multiple, realtime) in a java game only using the native libraries? Mp3 is not supported so compressed files are out the window and mostly .wav used, this leads to huge jars and files I don't want to load into memory so Clip is also not an option.

I am currently using a dataline to read into a buffer and play the audio but reading from a buffer requires a loop, this loop means I can only play one audiofile in the same thread as else the audios won't be "realtime". By this I mean that if I force the loop to go through multiple buffers, in the case that 100 sounds must be played, the 100th sound won't play untill all the others have played, this will be very noticeable in such a case.

The solutions?

  • JavaFX- http://stackoverflow.com/questions/6045384/playing-mp3-and-wav-in-java
    but this requires the JavaFX library and I want to use as much native code as possible (for learning) and I THINK javaFX spawns a new thread on media.play
  • Use clip, this means that if I use .wav I might have to load hundreds of megs into memory, BAD choice, this also assumes that Clip.play() spawns a new thread
  • Use an executorservice, set a max limit of concurrent audioplaying (like 20) and every time a play is requested, send the bufferedaudiostream into a new thread to the executor and play

I may have to go with the third option but I am afraid of threadoverheads and the cost of recreating the same dataline over and over again but if I limit the number of datalines I can't for instance implement the effect of ambient sound where you can hear multiple crickets. Here is the source for reading from a buffer, might be of some interest to some.

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  
public void playSound() {
      SourceDataLine line;
      int audioBufferByteSize = 1024;
      long streamLengthBytes;
      try {

         // URL url = getClass().getResource("forest.wav");
        // AudioInputStream inputStream =
        // AudioSystem.getAudioInputStream(url);
        InputStream iStream = getClass().getResourceAsStream("forest.wav");
         InputStream buffered = new BufferedInputStream(iStream, 1);
         AudioInputStream aStream = AudioSystem
               .getAudioInputStream(buffered);
         AudioFormat audioFormat = aStream.getFormat();
         DataLine.Info info = new DataLine.Info(SourceDataLine.class,
               audioFormat, audioBufferByteSize);
         line = (SourceDataLine) AudioSystem.getLine(info);
         line.open(audioFormat);
         streamLengthBytes = audioFormat.getFrameSize()
               * aStream.getFrameLength();
         aStream.mark((int) streamLengthBytes);


         while (true) {
            aStream.reset();
            line.start();
            int nBytesRead = 0;
            byte[] sampledData = new byte[audioBufferByteSize];
            while (nBytesRead != -1) {
               nBytesRead = aStream.read(sampledData, 0,
                     sampledData.length);
               if (nBytesRead >= 0) {
                  line.write(sampledData, 0, nBytesRead);
               }
            }
            Thread.sleep(10);

         }
23  Game Development / Game Mechanics / Re: What are the ways to optimize game? on: 2013-04-09 13:30:13
for (int i=0; i<list.size(); i++) is much faster than iterating per object.
24  Discussions / General Discussions / Managing gamestates and entities, singletons on: 2013-04-08 15:47:35
I am currently in the progress of refactoring my entire code and the singleton approach seems the easiest to me as this is a tilebased RPG game ala Zelda and there is at most ONE instance of the game. There is a whole lot of hate against the singleton (SO hates it) and I can't seem to think of a better way to manage everything in my game. Instead of worrying all the time that I may have created a duplicate of my rendering class or my sfx class I can instead focus on making those classes much more powerful.

One of the downsides I see is that it makes for very sloppy code, the game will work IF and only IF you order the code in a certain way so as to not call something that has not yet been set (or do nullchecks every...sloppy). Are there any other downsides? What is a better way to manage resources and entities and logic and rendering and sfx? What are your experiences with singletons?
25  Discussions / General Discussions / How do you measure fps? on: 2013-04-05 01:33:47
How do you guys display FPS to the screen?
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
int fps = 60;
t0 = system.nanoTime();
//...lots of rendering
//..
//..
t1 = system.nanoTime();
long delta = ((1E+9)*1.0/fps) - (t1-t0);
g.drawString("FPS:"+ (1E+9)*1.0/delta, 0,0);
buffer.show();
//Sleep
Thread.sleep(delta)


This is how I currently do it and there are so many problems with it:

  • Delta may be negative due to bad resolution
  • Delta does NOT take into account time spent calling g.drawstring and buffer.show
  • The sleep may be accurate within margins of error by calling system.nanoTime() inside sleep() but this makes for inaccurate display
  • If t1 is too long delta becomes negative. Do you play catchup with the framerate by sleeping a shorter time next iteration?

I see no way of circumventing the second point, display to console would be much easier, you could wrap all of it in a method, measure time between each method-calls and print it to console. But any displayed FPS must take the delta THEN display it.
26  Game Development / Newbie & Debugging Questions / Re: Making custom menus on: 2013-04-04 10:24:30
The drawing is fine, I can manage that atm, but the problem is adding actionevents to the strings.
27  Game Development / Newbie & Debugging Questions / Making custom menus on: 2013-04-04 00:59:13
Is it at all possible to add eventlisteners to custom objects like strings or rectangles that enclose strings? What I want to achieve can be demonstrated by this image, the red dot would move up/down as up/down is pressed and E selects the current item. Once an item is selected the appropriate action is taken.

28  Game Development / Newbie & Debugging Questions / Re: Avoiding looping through everything on: 2013-04-02 13:14:37
Don't do abs. Just square each number. If EVERYTHING in your game is relative to the square length. Distance = x^2 + y^2 then the "physics" of it will be fine. If rendering is an issue you can scale it back by division (try and experiment with a division factor). This stops you from doing Math calls all the time. This is how I do my particle simulations anyway.
29  Games Center / Featured Games / Re: State of Fortune on: 2013-03-29 23:59:15
I just had to drop in here and say that after reading all the replies and seeing all the screenshots I couldn't believe my eyes when I saw the timestamps. You sir, are very productive! Keep up the good work, I would love to play a game like this, it looks so beautiful and with such freedom to move/build.
30  Java Game APIs & Engines / Java 2D / Re: BufferedStrategy need info on: 2013-03-19 21:01:23
Thank you for the quick answer.

On your answer to the second question, thank you, for now I think I will simply empty(clear) the screen and redraw. As to avoiding redrawing things that haven't changed, how would that be possible if I clear? Do I have to selectively clear? (Eg if only a box has moved, just clear area big enough to draw something on where box was and where box will be and draw to this area on next iteration) Is this feasible?

On the third question. I was wondering how I actively render things that are attached to the canvas, like a JButton or a Menulayout, do I have to call their paint? (which seems passive).
Pages: [1] 2
 

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

The first screenshot will be displayed as a thumbnail.

Pippogeek (41 views)
2014-09-24 16:13:29

Pippogeek (32 views)
2014-09-24 16:12:22

Pippogeek (22 views)
2014-09-24 16:12:06

Grunnt (47 views)
2014-09-23 14:38:19

radar3301 (30 views)
2014-09-21 23:33:17

BurntPizza (65 views)
2014-09-21 02:42:18

BurntPizza (37 views)
2014-09-21 01:30:30

moogie (44 views)
2014-09-21 00:26:15

UprightPath (53 views)
2014-09-20 20:14:06

BurntPizza (55 views)
2014-09-19 03:14:18
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!