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 (567)
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: [LibGDX] Getting raw keyboard input on: 2014-06-03 21:54:08
Scanner...

EDIT: I should be more clear:

In a hand-coded GUI, you would use switch-case a key press event and for each event, put down the font sprite of the letter.

LibGDX has it's own way of handling text input:

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/ui/TextField.html

along with a few others that are better suited for whatever task you need (if you were porting your program for instance, TextInputListener would be better suited to that problem.) As BurntPizza mentioned, you could keyTyped() too, or you could use Scanner.
2  Game Development / Newbie & Debugging Questions / Re: How i can use AntiAliasing with LibGDX? on: 2014-05-21 18:28:38
MSAA = Multisample Anti-Aliasing, for future reference...
3  Game Development / Newbie & Debugging Questions / Re: Does anyone create custom annotations in their game code? on: 2014-05-21 17:48:49
I definitely use
@Override
as that helps alot, especially if you're using an interface and modifying code.
@SuppressWarnings
is also useful, especially when I want to get rid of those lightbulbs because I'm OCD like that Tongue
I had created my own annotation once (
@echo
) that would alert me anytime a method was not handling error-cases, but that really was only for debug anyway.
4  Games Center / WIP games, tools & toy projects / JArkanoid - An Arkanoid clone in JAVA on: 2014-05-19 18:05:04


This game is as-of-yet incomplete. I think I'll add some better sounds if I can find the time, I will be implementing lives (sorry), and I also wanted to implement a HUD for fun, but I have other things I really would like to work on to practice. Overall, the game engine took about a half-month to develop, since it was my first time working with an ECS structure, but now that I have the actual engine itself, making games like this will be a breeze (while the engine took 2 1/2 weeks to develop, the game itself only took a few days to actually code).

Using Windows?
- Download the exe file here

Using Mac?
- Download the OS X version here

Using Linux?
- Download the shell script here

Controls

Pretty standard. Use the A and D keys to move your paddle.
Press F, G, and H for other (lazily done) levels!

I had alot of fun making this game, despite all the stupid mistakes I made in the beginning.
5  Game Development / Newbie & Debugging Questions / Re: Necesities of an early indie game on: 2014-05-16 20:29:21
Not to sound pessimistic, but you might want to get your feet a little more wet before you think about tackling Steam Greenlight. Of course, you can always get away with making a barely playable game and posting up some concept art on Kickstarter, but speaking as someone who also wants to see better quality indie games on Steam (just look at the 'Simulator' cash-cow :/), I'd say focus more on learning how to design your own games and improving those designs. Don't take this as an insult, but I think your game is more suited to the mobile market (after updates of course).

You shouldn't try to pressure yourself into delivering a stellar game. Make something that is fun to you, and eventually someone else will love it as much or even more.
6  Game Development / Newbie & Debugging Questions / Re: Recharge System on: 2014-05-15 18:35:22
They are static values. I.e you would do something like

- Get the current recharge%
- Apply the Math.log() using the recharge% (so Math.log(recharge%))
- That will return the current pace at which the recharge would increase, relative to the other recharge%
- Use Math.floor() and Math.ceil() to limit the pace value, so it doesn't increase too slowly, or too quickly.

I have no idea what your game code looks like so I can't really implement it to your actual values for you, just saying it could be done using Math.log()

Since you have different Capacitors you could use different Multipliers for the pace values. Sorry if I'm not understanding your problem correctly.
7  Game Development / Newbie & Debugging Questions / Re: Recharge System on: 2014-05-15 18:21:16
If my math serves me right, you would use a logarithmic function for that no?

something like this graph here where the x is the Capacitor value, and the y is the time it takes to charge. As the Capacitor value increases, it takes more time to charge up to a certain threshold...

In JAVA, you would implement that by doing something like

1  
Time it takes to charge = Math.log(Capacitor value);
and you could use
1  
Math.floor()
and
1  
Math.ceil()
to limit the values.

This may not be what you're looking for, but it's what immediately came to mind
8  Game Development / Newbie & Debugging Questions / Re: Creating cross platform games on: 2014-05-14 19:16:40
LibGDX will do most of the work for you, by giving you the tools to make a game for different platforms, but it is up to the programmer to implement the different input handling methods and configurations of the game, depending on the platform. Your actual game code, will remain relatively untouched. Of course you have to keep in mind the different specifications of mobile devices, backwards-forwards compatability with the device you are developing for (if that's a problem/becomes one), etc. But for the most part, LibGDX will take care of the core porting.
9  Game Development / Newbie & Debugging Questions / Re: [SOLVED]Having same error as everyone else: ResourceLoader cannot find image on: 2014-05-14 06:38:51
trollwarrior1, just tried that method. Did not work. Throws the same exception as in the OP. Just like before, it works fine in Eclipse, like I expected since it's no different than reference a source folder. However as soon as I create a fat jar, it throws an error.
10  Game Development / Newbie & Debugging Questions / Re: [SOLVED]Having same error as everyone else: ResourceLoader cannot find image on: 2014-05-14 06:26:52
screencap of new file hierarchy



starting to get really annoyed at these subtle differences

If you are having this problem, note that nothing has worked for me other than the above. Take note that "res" is not a source folder, just a simple folder created by Right Click package name -> New folder. Many threads and also questions on SO say to create a new Source Folder, say to add the folder to the Build Path. None of that worked, just add a new regular folder and reference images by "package/subfoldername/resourcename.extension"
11  Game Development / Newbie & Debugging Questions / [SOLVED]Having same error as everyone else: ResourceLoader cannot find image on: 2014-05-14 06:15:40
I've read over so many threads on this issue, and I've literally tried everything. It simply will not work outside of Eclipse. Within Eclipse, every suggestion or proposed solution works fine, but when packing it as a fat jar it will always throw a NPE(If I'm using ClassLoader() or class .getResourceAsStream()) or a Runtime Exception: Resource not found (If I'm using the slick ResourceLoader).

For simplicity, I'll just refer to one spritesheet loading call here:

1  
Spritesheet.createSpriteSheet(8d, 8d, "arkanoid.png", ARK);


the load method:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
private void loadSpriteSheet(String path){
      try{
         texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream(path));
         texture.setTextureFilter(GL_NEAREST);
         imageWidth = texture.getImageWidth();
         imageHeight = texture.getImageHeight();
         if (spriteWidth == 0) {
            spriteWidth = imageWidth;
         }
         if (spriteHeight == 0) {
            spriteHeight = imageHeight;
         }
      } catch(FileNotFoundException e){
         
      } catch (IOException e) {
         e.printStackTrace();
      }
   }


a quick screencap of the file hierarchy in Eclipse:



and a screencap of the hierarchy of the JAR file opened in WinRAR:




and the error through cmd:



And like I said, I've tried everything from ClassLoader() to getClass().getClassLoader(), and even trying Main.class.getResourceAsStream, and I've tried adding a res folder to the source, having the res folder within the package, etc. and I can always get it to work within Eclipse, but never when exported. This current build is one such case.
12  Game Development / Newbie & Debugging Questions / Re: I've run into a bit of a snag - Up/Left movement slightly faster than Down/Right on: 2014-05-13 02:30:37
Thanks! That worked! But I think you mean:

1  
x + Math.round(dy * delta);


and not

1  
Math.round(x + dy * delta);


as the latter doesn't do anything  Smiley
13  Game Development / Newbie & Debugging Questions / Re: I've run into a bit of a snag - Up/Left movement slightly faster than Down/Right on: 2014-05-13 02:09:28
Ah, no problem.

1  
a.fetch(ID.Component, ID.Feature)
gets a component from the component hashMap. Since each Component is a Number array (Since I don't know if I may have to use doubles(like in Textures), or integers(Like frame# or x,y position)), I have to cast the returned object to the proper type.

echo does the same thing, but I don't have to cast anything since it autoboxes the input values to a Number. And yes, I am using an ECS architecture for the program.

I'm sorry the code is hard to read. I haven't decided to go through and clean it up yet, so for now I use Eclipse's built-in source formatter, which doesn't help much.
14  Game Development / Newbie & Debugging Questions / I've run into a bit of a snag - Up/Left movement slightly faster than Down/Right on: 2014-05-13 01:49:04
The title says it all. Here is the code I use to change velocity based on input, and the code used to update coordinates based on velocity.

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  
private static void playerControlledWASD(Entity a) {
            if (a.check(ID.Tag.velocitytag)) {
               Double speed = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.SPEED);
               if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
                  a.echo(ID.Component.VELOCITY, ID.Feature.DY, -speed);
               } else if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
                  a.echo(ID.Component.VELOCITY, ID.Feature.DY, speed);
               } else
                  a.echo(ID.Component.VELOCITY, ID.Feature.DY, 0d);

               if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
                  a.echo(ID.Component.VELOCITY, ID.Feature.DX, -speed);
               } else if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
                  a.echo(ID.Component.VELOCITY, ID.Feature.DX, speed);
               } else
                  a.echo(ID.Component.VELOCITY, ID.Feature.DX, 0d);
            }
         }

         private static void updateByVelocity(Entity a, int delta) {
            if (a.check(ID.Tag.velocitytag) && a.check(ID.Tag.positiontag)) {
               Double dx = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.DX);
               Double dy = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.DY);
               Double minDx = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.MINDX);
               Double minDy = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.MINDY);
               Double maxDx = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.MAXDX);
               Double maxDy = (Double) a.fetch(ID.Component.VELOCITY,
                     ID.Feature.MAXDY);
               if (dx >= minDx
                     || dy >= minDy
                     || dx <= maxDx
                     || dy <= maxDy) {
                  int x = a.fetch(ID.Component.POSITION, ID.Feature.X);
                  int y = a.fetch(ID.Component.POSITION, ID.Feature.Y);
                  a.echo(ID.Component.POSITION, ID.Feature.X, x += dx
                        * delta);
                  a.echo(ID.Component.POSITION, ID.Feature.Y, y += dy
                        * delta);
               }


Is it something to do with using '+='? I can't find out why movement with -speed is faster than movement with +speed, but I know it's a noobish error, so go easy on me. (Also, I know this code could be better, this isn't about that though)
15  Game Development / Newbie & Debugging Questions / Re: [LibGDX] Removing game objects on: 2014-05-12 01:28:49
Someone pointed out a while back about using double-buffered ArrayLists to store your entities:

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  
// static update buffer list A
  protected static List<Entity> entityBufferA = new ArrayList<Entity>(200);
   // static update buffer list B
  protected static List<Entity> entityBufferB = new ArrayList<Entity>(200);
   // byte buffer switch
  protected static byte mainUpdateBuffer = (byte) 0;


public static void refresh(int delta, int screenWidth, int screenHeight) {

      for (Entity e : getMainBuffer()) {
         if(checkIfOnScreen(screenWidth, screenHeight, e)){
            e.render();
         }
         e.update(delta);
      }
     
      Systems.RendererSystem.render();

      for (Entity e : getMainBuffer()) {
         if (e.exists) {
            getOtherBuffer().add(e);
         }
      }
      getMainBuffer().clear();
      mainUpdateBuffer = (byte) (mainUpdateBuffer == 0 ? 1 : 0);
      System.out.println(delta);
   }

   public static List<Entity> getMainBuffer() {
      return (mainUpdateBuffer == 0 ? entityBufferA : entityBufferB);
   }

   public static List<Entity> getOtherBuffer() {
      return (mainUpdateBuffer == 1 ? entityBufferA : entityBufferB);
   }


Just store all your entities into the main buffer when they are created, and when you want to destroy them turn their "exists" boolean to false. This is how I do it,  but I think you get the idea.
16  Game Development / Newbie & Debugging Questions / Re: Checking rectangles for arbitrary intersections? on: 2014-05-11 23:57:55
I'm finding it difficult to figure out what exactly it is you're asking.

If it solves the problem, brute force is fine unless you have 100s of entities.
If it's really a concern, you could have a
Systems.LogicSystem.rooms.get(currentRoom).colliders
or something that contains just the collision bodies relevant to that room.

I mean being able to call something like

1  
2  
3  
if(collider.isIntersected){
              //call onCollision()
       }


but I suppose such a method would be impossible
17  Game Development / Newbie & Debugging Questions / Re: Checking rectangles for arbitrary intersections? on: 2014-05-11 23:45:12
Just brute force?

1  
2  
3  
4  
Rectangle collider;
for(Rectangle r : Systems.LogicSystem.colliders)
    if(collider.intersects(r) && collider != r) return true; // substitute the return with onCollision(collider, r) if that's what you want
return false;


Well that's just adding an inefficient extra step though? If I have a walled room and I only want to check for collisions with 2 things then the original steps are more efficient.
18  Game Development / Newbie & Debugging Questions / Checking rectangles for arbitrary intersections? on: 2014-05-11 23:32:17
Hi, I was just wondering if there is a way to check a Rectangle to see if anything is intersecting it. I know I can get the Rectangle intersection if you pass in another Rectangle, but I really want to know because right now with my current logic it checks a method every frame, when it could be checking it only if the bounds come in contact with any other bounds. For instance I have this:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
Tools.ModifiedTools.addBehavior(tidus,
            new ID.Action(tidus){
               @Override
               public void onCollision(){
                  if(Tools.ModifiedTools.checkForCollision(tidus, yuna)){
                     Tools.ModifiedTools.setAudio(tidus, 0);
                     Tools.ModifiedTools.playAudio(tidus);
                     System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
                     }
                  else if(Tools.ModifiedTools.checkForCollision(tidus, lulu)){
                     Tools.ModifiedTools.setAudio(tidus, 1);
                     Tools.ModifiedTools.playAudio(tidus);
                     System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
                  }
               }
            },
            ID.Behaviour.animate,
            ID.Behaviour.playerControlledWASD,
            ID.Behaviour.updateByVelocity,
            ID.Behaviour.updateColliders,
            ID.Behaviour.detectCollisions
            );


and my collision detection method looks like this:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
public static boolean checkForCollision(Entity a, Entity b){
         if(a.check(ID.Tag.boundstag)){
            Rectangle collider = Systems.LogicSystem.colliders.get(a.hashCode());
            Rectangle bCollider = Systems.LogicSystem.colliders.get(b.hashCode());
            if(collider.intersects(bCollider)){
               return true;
            }
            return false;
         }
         return false;
      }


Every frame it runs detectCollisions, which calls the method onCollision(). I want to be able to make it so that during detectCollisions, it checks to see if the Entity's bounds are intersecting or contains any other Rectangle, and only call onCollision() if that returns true, but so far I have found nothing that makes it seem that can be done. Is there no way?
19  Game Development / Newbie & Debugging Questions / Re: Are HashMaps bad for Entity-Component-System Architectures? on: 2014-05-06 23:32:21
Quote
Quote
Is there a limit on the number of components a container can hold?

No. But there are different variants of components, and the entity can only have one type of variant
So it "component by (variant) type" instead of straight type or name?  If so then obviously there can only be a finite number of variants.  What's your projected upper limit?


Well not every component has a variant. The only components that currently have variants are the Renderer and Logical components, since different entities could use different rendering methods, or have different logical steps. But there is no real limit to all of the other components.
20  Game Development / Newbie & Debugging Questions / Re: Are HashMaps bad for Entity-Component-System Architectures? on: 2014-05-06 18:32:18
Most ECS frameworks have some sort of array-like data structure per component type. In artemis each entity is given an integer id: the id represents the index at which the component is stored.

Unless you have a lot of entities, you probably won't see a noticeable performance hit (ofc depends on platoform, entity count, GC and so forth). One of the ideas behind ECS, besides reducing complexity as the project grows, is performance: if all instances of ComonentX are aligned in memory, you'll get faster memory access (better cache locality), but java doesn't easily lend itself to contiguous memory layout when it comes to objects.

edit: If entities hold on to their own components, how do you get all entities matching a specific component composition?

Each entity has a tag container. Each system checks if the Entity has the required tags, then performs the methods on the components that exist.

Is there a limit on the number of components a container can hold?

No. But there are different variants of components, and the entity can only have one type of variant


You can just write a getter method for ease of use.

I have a fetch method that I use to pull data from the components of a specific entity. When I looked at it recently I thought it would work just as fine if I used an Object[] instead of HashMaps
21  Game Development / Newbie & Debugging Questions / Re: Are HashMaps bad for Entity-Component-System Architectures? on: 2014-05-06 17:13:53
ah Sad Would it be possible to create an enum to represent a global index that I can use to refer to components and their parts? The main reason I used HashMap was because of the ease-of-use of the Key-Value system
22  Game Development / Newbie & Debugging Questions / Are HashMaps bad for Entity-Component-System Architectures? on: 2014-05-06 16:42:09
My ECS uses HashMaps to represent Components and their features, and each Entity has a HashMap that contains components.  Every time a component is added, it generates a String tag that is attached to the Entity, which each System checks for to make sure the component actually exists for said Entity.

I was reading up the Artemis info and they say that HashMaps are bad data structure. Is it? Since my design uses a HashMap container to store multiple HashMaps, is there a more efficient way that I should be doing this, or should I only worry about it if performance is a big problem?
23  Game Development / Newbie & Debugging Questions / Re: I'm using slick2d and lwjgl and need suggestions on how to code truck movement on: 2014-05-04 21:39:13
What do you mean? Acceleration? Input? Be more specific please.
24  Game Development / Newbie & Debugging Questions / Re: LWJGL Learning resources on: 2014-05-03 00:42:22
As Longarm pointed out, Oskar actually teaches OpenGL. I recommend his tutorials as he goes over the OpenGL commands without assuming the viewer doesn't a thing about Java.

Quote
What other languages have a more popular and simple game library?

What exactly does this question mean?
25  Game Development / Game Play & Game Design / Re: Getting more serious about game DESIGN on: 2014-05-01 22:44:16
I agree with troll. You should aim not for making a game engine but creating an actual game. The engine will come as a result of that. I'm currently working on an Arkanoid clone to get used to using audio with LWJGL, and after that moving on to make a multiplayer version of Zelda 1 to get used to networking. Since I know what game I'm making, the engine is tailored around it, because the engine is only there for the game, nothing else. Not like there is a yearly Game Engine showcase.

About game design, it really helps to play older games and stage-by-stage analyze them to see why they are built the way they are. Here's a couple good bookmarks I have, if it helps:

Legend of Zelda: A Link to the Past in-depth analysis

Super Mario World Game Design analysis (Pretty long read)

Essay by Tevis Thompson about what makes Zelda fun, and what could be better
26  Game Development / Newbie & Debugging Questions / Re: [LWJGL] Tile System: How to makes only certain tiles change on: 2014-05-01 19:32:10
That I agree with. If you know what you are doing then make use of it. It is there for a reason, and there is very rarely a situation in which you would use static without knowing what it does (static imports come to mind).
27  Game Development / Newbie & Debugging Questions / Re: [LWJGL] Tile System: How to makes only certain tiles change on: 2014-05-01 19:24:33
Static is evil. As we have witnessed here today on this altar (thread) of blood. If you don't know what static is, don't use it. Even if you know what static is, you probably shouldn't use it.

Exceptions include:
1. You know what you're doing.
2. You're lazy and you know you're shaking hands with the devil.

If you have a value or field which is the same across a group of objects, and it will not change in the individual objects, make it static. It makes no sense to have every object have an instance of the same object?

This falls under the lazy category. Lazy doesn't necessarily mean wrong, though. Especially if you want to get things done.

2cents

How is static lazy in any way? Name a situation in which static would be a viable solution to a problem where there is a more efficient solution that does not involve static.
28  Game Development / Newbie & Debugging Questions / Re: [LWJGL] Tile System: How to makes only certain tiles change on: 2014-04-30 02:46:02
Been wondering this for a while...have you actually done basic java? Like, the Sun tutorial, maybe some coding practice over at codingbat.com?
29  Game Development / Newbie & Debugging Questions / Re: Implementing a cloning feature for sprites. Good design? on: 2014-04-29 06:15:23
I'm pretty sure he isn't asking about improving client side performance. He probably wants to use buffers of some sort to render his aliens, meaning he has 1 sprite object which he then references through IBO.

This. Again, this is rare-case scenario stuff that I'd only use if there was an entity that I knew was going to be cloned, but I really would like to know if this solution would be optimal & efficient for cloning because with the way things are set up now, I assume the rendering would get taxing if I needed to have a huge amount of multiples of the same Sprite.

@ Burnt , I use a reference of a Sprite Sheet to load them, that's not really what I'm concerned about. + thanks, but I've already finished the game....

Just wondering if this design is bad or not.... Stare
30  Game Development / Newbie & Debugging Questions / Re: Implementing a cloning feature for sprites. Good design? on: 2014-04-29 04:35:46
Pretty much, an ArrayList with 100 entries that represent only the unique values for each alien, and then things that remain the same for all of them would be the attributes of the Buffered Sprite.

The idea appeals to me because I was going to try to make game that would have lots of sprites on screen, with the only thing unique about them being their individual Animations and x and y positions (as with the x and y's of their bounding box). I know it's complicated but it's really only a rare-case-use class that would help if I need to clone entities real-time.
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 (39 views)
2014-09-24 16:13:29

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

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

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

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

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

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

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

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

BurntPizza (54 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!