Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (581)
Games in Android Showcase (162)
games submitted by our members
Games in WIP (632)
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 ... 10
1  Java Game APIs & Engines / Java 2D / Re: Mirroring Isometric image on: 2015-05-14 15:06:04
@jonjava is correct. This should do the trick:

1  
g2.drawImage(sprite, sprite_x + sprite_width, sprite_y, -sprite_width, sprite_height, panel);

The "sprite_x + sprite_width" is there to move the sprite back into the correct position since drawing it with a negative width will shift it to the left.
2  Game Development / Newbie & Debugging Questions / Re: [Nope, not fixed] ArrayList remove() problem on: 2015-05-06 17:15:13
Have you tried using an iterator? It works wonders for me, although I don't think its the fastest way of doing this.

Indeed, this is a valid solution so long as all removals are done using the iterator's remove method (as illustrated in your example). As for efficiency when doing sequential accesses, iterators are generally the better choice vs index based lookups when using a list as the underlying data structure. Wink
3  Game Development / Newbie & Debugging Questions / Re: [Nope, not fixed] ArrayList remove() problem on: 2015-05-06 14:17:12
The exception shows the exact issue: " java.lang.IndexOutOfBoundsException: Index: 2, Size: 2". Maximum valid index for a list with a size of 2 elements is 1.

This...
1  
2  
enemyList.remove(enemyList.get(i));
enemyList.remove(enemyList.get(i));
...will still cause the index exception since you're attempting to "get" an element at an invalid index.

Until you understand what's actually causing the issue, applying fixes blindly isn't going to help. persecutioncomplex
4  Game Development / Newbie & Debugging Questions / Re: ArrayList remove() problem on: 2015-05-06 14:05:17
The bigger issue is that when you're removing items from a list in this manner, you're going to end up skipping an element when an element is removed. You should walk the list backwards. This will correct the index out of bounds error.

Think about it this way. You have a list of 3 items. You set your loop counter to go from 0-2 (the size of your list) at the start. In the first pass, you remove an element. Suddenly, you've changed the valid index range of your list from 0-2 to 0-1. Unfortunately your counter variable in the loop doesn't recognize this change, and will happily keep going until it hits the now invalid index of 2.

Now reverse the scenario and set your loop counter to the size of the list-1 (2) at the start. On your first pass, you're loop removes an element from the list which leaves your valid index range at 0-1. Unlike the previous scenario, on the next pass, the loop counter will equal 1 which is still a valid index.

It's a small gotcha that can cause quite a bit of frustration if you've never encountered it before. The other issue may still persist (didn't have that much time to investigate), but it will get rid of the exception at least. Wink
5  Game Development / Networking & Multiplayer / Re: How to properly close a socket when program terminates? on: 2015-05-02 23:38:23
According to some research, the timeout period of a socket can vary by implementation, so if you want consistency, set the value.
6  Game Development / Networking & Multiplayer / Re: How to properly close a socket when program terminates? on: 2015-05-02 22:49:47
Personally, I'd say just go with the "classic" form of the try/catch block for that section of code. That gives you the option of using the parameterless version of ServerSocket's constructor which would then allow you to set the reuse address flag before binding the socket. The try with resources form of try/catch can be useful in many situations, but if you find it being more of a hindrance than a help in a situation, don't be afraid to use the alternate form. I wouldn't advise trying to call any further methods on a socket that's been put into an exception state, including close.

Addendum: As for what happens when the server is closed down, the socket will be cleaned up by the JVM as it's exiting. The connected clients, if any, will throw exceptions on their side.
7  Game Development / Newbie & Debugging Questions / Re: Create a "2D" game, with 3D characters on: 2015-04-14 12:54:14
Just render 3D models to 2D images then use those images in your game. There are limitations to the approach, but that's how it's generally done.
8  Game Development / Game Play & Game Design / Re: Theming Custom Game GUI Components on: 2015-04-14 00:01:51
MVC/MVP pattern is indeed sound advice. I've kept the controller separate from the other two aspects; however, I  muxed the view and model together. I may consider breaking them apart at some point, but since I don't foresee the scope of the projects I currently have in mind going beyond the functionality of Slick, it will probably be a while before I get motivated enough to do it.

Since I've managed to work out the last of the current, apparent bugs in the approach I threw together, I think I'll go with the "if it works use it" philosophy. I appreciate the input. Cheers! Grin
9  Game Development / Game Play & Game Design / Re: Theming Custom Game GUI Components on: 2015-04-13 17:03:01
I probably didn't explain what I was looking for clearly. It's less to do with how to develop a consistent style, and more to do with how to propagate the style through code with the least amount of work needed.

Essentially what I am looking for is a way to override the default properties for all instances of a control in my library without the need to modify the the library itself when a new look is needed. Pretty much the same concept as how CSS applies styles to a web page without changing the actual structure of the page, or more precisely how Swing can take a look and feel and have all controls inherit the theme.

I've managed to cobble together a solution that involved adding a few static methods and a static ArrayList to my base class. Basically the methods allow me to assign (a) "styler" class(es) to the base class that gets invoked whenever an instance of the base control is created. I'm then able to set basic properties from there. I'm sure there's some sort of "bad practice" involved in my approach, but it seems to be working for the most part with the exception of a minor bug that I'm looking into. persecutioncomplex

I'm still open to alternatives other than the implementation I have at the moment. I figure there must be something out there a bit more elegant than the one I brainstormed. Pointing
10  Discussions / General Discussions / Re: Legality of Retro-Engineered clients on: 2015-04-11 20:42:44
Using the default graphics, sounds, or music from Minecraft would be copyright infringement, no question, though

Using isn't the issue. Distributing is. That's why some open source game clones mitigate the issue by requiring that a copy of the original game is installed on the users hard drive. See CorisxTH (a clone of Theme Hospital) for an example.

Beyond that, server operators are definitely where you'll find the most resistance. As others have noted, an alternate client would be viewed as a potential cheat or hack by most official servers. Sometimes the court of public opinion is worse than the court of law. persecutioncomplex
11  Game Development / Game Play & Game Design / [Solved] Theming Custom Game GUI Components on: 2015-04-10 20:54:24
After quite a bit of tinkering around, I've finally gotten my 2D scene graph/controls to satisfactory point in regards to functionality. Now I'm trying to come up with a way to theme everything in a consistent way. For the moment I have to set individual properties on each control such as background color, foreground color, borders, etc. Ideally I'd like to set a basic theme and have that style applied to my controls when they're created similar to what Swing does with the L&F/componentui framework.

The controls have been developed to work with Slick2D and all of them inherit from a base control class that contains a majority of the appearance based variables. I've thought about using something like the builder or factory pattern, but I really don't want to have to write a new builder/factory for each type of control. I've also considered making a "themer" class that I can pass a component to after it's created, but that seems a bit cumbersome as well.

Has anybody had experience with this issue who can offer some suggestions for the best way to approach this? While it's not critical, it would certainly save me a lot of time when putting together an interface as well as cut down on the LOC I have to look through when developing other parts of my project. Any help would be greatly appreciated. Smiley
12  Game Development / Newbie & Debugging Questions / Re: Running jar files on Linux on: 2015-04-06 13:50:03
My assumptions woiuld be something related to openGL, I'm using a recycled Lenovo ThinkPad x230i. When this computer was running windows I would have no problems executing the file.

I installed the JDK via Oracle website and downloaded the .rpm. I did not use the terminal to install it. I'm not sure if there is a difference.

You can assume that the system is finding Java correctly due to the exceptions emanating from Java instead of being a standard shell exception.

Looking at the first part of your post, it would appear that the application can't find the shared object files (.so files are equivalent to .dll files in Windows) for LibGDX. Did you make sure to copy the appropriate .so files to somewhere in your applications class path? As a test, try putting them in the same folder as your .jar file and seeing if that alleviates the issue.

As for OpenGL being the source of the issue, the first error is related to audio, not video. The second error isn't quite as specific, but my guess is that it's something related to libawt.so. Copying the files as suggested in the last paragraph may alleviate this issue as well. Post the results and if you're still stuck, somebody around here should be able to get you over the hump. Smiley
13  Java Game APIs & Engines / Java 2D / Re: RadialGradientPaint problem on: 2015-04-03 16:05:00
If you're going to have multiple light sources, then you may want to consider creating a RGBA buffered image that's the same size as your view and initially filled with black. When you want to add a light source, paint it onto the buffered image using your gradient paint. Once you've finished drawing your lights, apply the buffered image to the whole scene. As a bonus, you can change the alpha/color of the buffered image to achieve "time of day" lighting type effects. If that's already the direction you were headed in, then carry on. It's a pretty simple yet effective way to approach lighting for 2D.

Cheers. Smiley
14  Java Game APIs & Engines / Java 2D / Re: RadialGradientPaint problem on: 2015-04-03 14:29:21
RadialGradientPaint takes a bit of getting used to. Assuming that the code you posted is in your paint method, try changing it to the following:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
RadialGradientPaint whiteToBlack = new RadialGradientPaint(
    this.width/2,  //  x centre
    this.height/2,  //  y centre
    50,  //  radius of fill
    new float[] { 0.0f, 1.0f },   //  start position of each color
    new Color[] { new Color(1f, 1f, 1f, 0f), Color.BLACK }, //  the colors
    CycleMethod.NO_CYCLE
);

lightG.setPaint( whiteToBlack );

//  draw in the centre of the screen, a 100x100 pixel oval
lightG.fillOval(this.width/2-50, this.height/2-50, 100, 100);

The first two parameters to radial gradient paint define an absolute position of where your start color appears in your viewport, it's not relative to the position of the shape being filled. The implication is that you'll have to recompute the x and y center of the gradient whenever your game's resolution changes, but that shouldn't be too difficult to work around.

One other thing. Assuming you're going for a 2D lighting effect around your character, use fillRect(...)  to fill the entire viewport instead of fillOval(...). You'll still get a nice, round, gradient cutout at the center of the viewport with the rest being filled by your end color. If you're going for a different effect, you can disregard the last part. Pointing

Hope this helps.
15  Game Development / Newbie & Debugging Questions / Re: Capturing - arrow keys and letters on: 2015-03-30 21:59:09
You were correct, you can't...

Oops, my bad on that one. That's what I get for trying to juggle too many things at once when I answered earlier. Pointing Apologies.
16  Game Development / Newbie & Debugging Questions / Re: Capturing - arrow keys and letters on: 2015-03-30 17:54:49
The problem with the workaround described by Kev is that I'm trying to keep track of the order in which the keys are pressed so when the user releases a key the character movement reverts back to the direction of the last-held-down key.

In that case, then my only suggestion would be to use an ArrayList<byte> instead of a byte[] as the basis for your input stack. In your controller class you can simplify things a bit:
1  
2  
3  
4  
5  
6  
7  
8  
9  
public void addMovementKeyFlag(byte direction) {
    //  first, check if key is already being held down
    //  this should never happen but good to check anyway        
    if(!this.movementKeys.contains(direction)) {
        this.movementKeys.add(0, direction);
        this.playerEntity.setFacingDirection(direction);
        this.playerEntity.setState(EntityState.MOVING);
    }
}

You're not going to be able to get around the checks, but it's not a huge issue. The impact on performance should be minuscule assuming that you're only capturing a few keys, 4 in your case, on the stack. Smiley

Out of curiosity, how are you handling the removal of a key(s) from the stack? Say I was pressing left, then pressed up, then released left before releasing up. What would be the state of the input stack after finally releasing the up button?
17  Game Development / Newbie & Debugging Questions / Re: Capturing - arrow keys and letters on: 2015-03-30 16:27:13
That's strange then, I wonder if it's a "feature" of my keyboard or something lol.

It's an OS thing. You'll get different patterns of repeat/no repeat between Windows and Linux (can't speak for OSX...never used it). Google has all sorts of information/workarounds if desired. KevinWorkman has suggested a good approach and it's the same one I'd recommend. It's tried and true and makes things consistent across the board. Smiley
18  Game Development / Game Mechanics / Re: Making my GUI right on: 2015-03-30 16:13:10
Sorry about the late reply. It was the wife's birthday this weekend, so I didn't have much of a chance to get online.

My controls all inherit off of a "BaseControl" class that holds common information/functionality that all controls need. In cases where a control needs special functionality, I just add the new methods/variables into a class that inherits from the base control without any sort of nested class. The "BaseControl" class contains a reference to a parent "BaseControl", so in your scenario, my approach is as follows:

1) The input event is routed down the graph and dispatched to the appropriate control.
2) From the control's handler for the event, I reference the "parent" variable. If I need a "grandparent", "great grandparent", etc, I can keep calling the get parent method on the returned reference to walk up the graph.
3) The parent (or grandparent) can then be cast to a specific control class allowing the handler to call the methods of the parent class directly.

The downside to this is that you have to be aware of where a control is in your tree structure or do some extra checking when walking the tree. In practice, I have some helper methods in the base control class that allow me to reference controls by name, so if I need a specific ancestor control, I can grab a direct reference to it without much hassle.

For an apples to apples comparison, my method to accomplish the task that your code does would look like the following:
1  
2  
3  
4  
5  
6  
7  
MyControl.addExtendedInputListener(new ExtendedInputListener() {
    @Override
    public void mouseClicked(int button, int x, int y, int clickCount) {
   // getParent called multiple times to get to the appropriate level.
        ((SpecificClass)MyControl.getParent().getParent().getParent()).stopGame();
    }
});

There's nothing inherently wrong with your approach, it's just different than the way I chose to tackle the issue. In certain scenarios, your approach has advantages over mine, and vice versa. I would say keep going with the way you've been doing it and don't worry too much about the "circle of communication" issue. I can't think of a sane scenario where it would present any sort of real hurdle. Smiley
19  Game Development / Game Mechanics / Re: Making my GUI right on: 2015-03-29 02:05:34
Essentially what you're talking about is a scene graph. Your "another solution" that uses callbacks is the way I approach GUI interaction in my applications. It has its disadvantages, but it's a fairly sane approach. You're still in good shape in regards to the MVC pattern if you consider your visual element as your view and your callback as your controller. At worst you've created a loose coupling.

When it comes to games, if it works for you and you can grep what's going on, it's good enough. It's a far different beast than writing libraries for others or "mission critical" systems. Wink
20  Discussions / Miscellaneous Topics / Re: What I did today on: 2015-02-19 16:53:34
Working on creating a custom control for one of the guys in our transportation division. (Warning: 2.3mb gif file.)

Click to Play

When it's finished, it will be used to provide a visual representation of curent shipment locations using tracking information provided by the shipping companies. Unfortunately, I'm still waiting for them to get back to me with some details.

For now it's pretty much eye candy. Its looks can be customized and it supports auto rotation/rotation via mouse drag. Built using "old school" visual trickery in Java2D mostly to prove to a manager that it could be done. Not a 100% perfect effect, but good enough for its intended purpose.

Since it's a slow day at the office I think I'll tie it to a METAR parser I've been developing and turn it into a weather widget while I have some idle time. I love my job most days. Pointing
21  Discussions / General Discussions / Re: What's your day job? on: 2015-02-16 21:10:32
I've worked as a contractor for a Japanese auto manufacturer for the last decade or so. My days are usually split between running the POD system for replacement parts, generating reports for upper management, supporting a myriad of in house solutions written in Access/Excel, and doing evangelism/development in Java of some more advanced tools that work with legacy systems like CICS and our DB2 based data warehouse. The formal stuff can be a bit boring at times, but there's enough freedom to get involved with projects from other departments, like an in house logistics/yard management package that I get brought in to consult on from time to time, that it's not a grind. Cool
22  Game Development / Newbie & Debugging Questions / Re: Minimap using tilemap! on: 2015-02-16 20:45:54
You do the same thing you'd do when drawing your full map. Determine where the character is, and render x amount of "tiles" around him on the mini-map. The only difference between a mini-map and your regular map is that your regular map renders tiles at full size, but your mini-map renders the tiles at a scaled down size or representation. Beyond that, the logic and underlying data sources are the same. Wink
23  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-02-02 05:01:26
Sorry about the delay in this step. Had a pretty rough weekend, and I just now got the chance to post.

I've found that JBlas has a .jar distribution, so we can sidestep building it. You can download the jar file from here. Just grab the latest version (1.2.3).

So here are the steps to include it in the build:
1. Copy the downloaded JBlas jar file to your <cygwin>/shogun-4.0.0 directory.
2. Open the CMakeLists.txt file in your favorite text editor.
3. Locate the line that looks like the following:
1  
FIND_JAR(JBLAS NAMES jblas jblas-1.2.0
and update it to reflect the downloaded version of the jar (for example):
1  
FIND_JAR(JBLAS NAMES jblas jblas-1.2.3
4. Directly below that line will be a line that contains paths that will be searched for the jar file. Edit it to look like the following:
1  
/usr/lib/java /opt/local/share/java ./
Basically were telling it to search the current build directory.
5. Save and exit the file. You are now ready to run the build procedure again.

Fair warning, I received a compile error somewhere in the 70% completion range. Since it was more code related than configuration related, I can't say for certain where the fault lies. Google may be your best bet if you get the same issue. Either way, give it a shot, and let us know how it goes. Smiley
24  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-31 02:23:56
Well, the good news is that I figured out how to hack, and when I say hack I mean Amazon deforestation levels of hack, around the JNI issue. The bad news is that there's another required library that will need to be built. persecutioncomplex

Note: You may want to delete and re-extract the shogun source directory before doing the following.

Anyway, this is the hack to get around the JNI issue:
1. In windows explorer, go to the directory you installed cygwin to and create a new folder named opt.
2. Copy your C:\Program Files\Java\jdk1.8.0_25 folder into the newly created opt folder, and rename it to jdk. Your directory structure will then be <cygwindir>/opt/jdk.
3. Open the FindJava.cmake file located in the <shogun source dir>/cmake directory in you favorite text editor.
4. Locate the section that has the header comment # environment can always override hard guesses. You'll see a list of paths below it surrounded by a set(...) statement. Add the path, /opt/jdk/bin to the bottom of the list before the closing parentheses, then save and close the file.
5. Get ready for the real fun to begin. Open the FindJNI.cmake file located in the <cygwindir>/usr/share/cmake-2.8.11.2/Modules directory in you favorite text editor. (The fact that we're editing system files in this manner should be a red flag that there may be a more sane way to approach this, but it's Friday night, so yeah...)
6. Locate the line that says if(APPLE) and insert the following lines directly above it:
1  
2  
3  
4  
5  
6  
set(JAVA_INCLUDE_PATH "/opt/jdk/include")
set(JAVA_AWT_INCLUDE_DIRECTORIES ${JAVA_INCLUDE_PATH})
set(JAVA_AWT_LIBRARY_DIRECTORIES "/opt/jdk/lib")
set(JAVA_AWT_LIBRARY ${JAVA_AWT_LIBRARY_DIRECTORIES})
set(JAVA_JVM_LIBRARY_DIRECTORIES ${JAVA_AWT_LIBRARY_DIRECTORIES})
set(JAVA_JVM_LIBRARY ${JAVA_AWT_LIBRARY_DIRECTORIES})
7. Close and save the file then pray that the elder gods' slumber was deep enough for them not to notice this transgression. persecutioncomplex
8. Go to your source directory in cygwin and issue the cmake -DJavaModular=ON command again.

If all went well, you'll be informed that JBlas is a required dependency. (The rabbit hole gets deeper.) Give the above a try and let me know where you end up. If you get to the same point that I did, try building JBlas. If that one gives you trouble, we'll break out the bloody axes again and hack it till it works.

In all seriousness, you may have an easier time doing this on an actual Linux distro running in a virtual machine or off of a live cd/usb. There would be a lot less hacking of core files. Either way, I hope the above helps you around the current situation. Smiley
25  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 18:45:57
Ok, looks like it's still having trouble locating the includes. I have cygwin installing here to try out a few things, but it's taking a while. Let me make another "shot in the dark" suggestion. Modify the CMAKE_CXX_FLAGS line in your CmakeLists.txt file to the following:
1  
SET(CMAKE_CXX_FLAGS "-U__STRICT_ANSI__ -IC:/Program\ Files/Java/jdk1.8.0_25/include ${CMAKE_CXX_FLAGS}")

This should tell the compiler and linker to look in the JDK include directory for the jni and awt header files.

Once cygwin finishes configuring here, I'll have a crack at compiling Shogun if the above change still doesn't resolve the issue for you. Smiley
26  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 18:03:06
Idk What he meant.

He's just giving you an another way to set the JDK path from the cmake command line.

Anyway i tried what you said and got this...

That's my fault. On a *nix like environment, you'll need to escape any spaces with a backslash. To combine what I told you along with what the guy in #shogun said, try this:
1  
cmake -D_JAVA_HINTS=C:/Program\ Files/Java/jdk1.8.0_25 -DJavaModular=ON
or alternately:
1  
JAVA_HOME=C:/Program\ Files/Java/jdk1.8.0_25 cmake -DJavaModular=ON
27  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 17:35:31
It appears that it's failing to find the jawt.lib and jvm.lib files. Looking at some postings about the issue, maybe the following will help it find what it needs:

1  
JAVA_HOME=C:/Program Files/Java/jdk1.8.0_25 cmake -DJavaModular=ON

My hunch is that it's searching for the libraries in the jre folder instead of the jdk folder. Setting the environment variable before starting the build process should cause it to look in the correct location. Tracing down compilation errors can feel like going down a rabbit hole at times. Shocked
28  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 16:29:55
Looking at line 1052 in the file that you posted last, it would appear that cmake is referencing the FindJava.cmake file in the shogun-x.x.x/cmake folder. Editing the "set(_JAVA_PATHS ... )" section of the file should allow you to add the path where you have your copy of Java installed into its search locations. Once that's done, give the compilation process another shot.
29  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 15:06:16
Six of one, half a dozen of the other. Wink Live CDs/USBs just tend to be less intrusive and a lot more portable since there is nothing to install on the hard drive. I've had good experiences with both. Smiley
30  Discussions / General Discussions / Re: Anyone with knowledge on Cygwin? (+Shogun) on: 2015-01-30 14:37:51
Hm, looks like I may have grabbed a different version of the lib. The CMakeLists.txt posted on the paste bin is different from the copy that I had here. Either way, ziozio is correct. Cmake is appending values to the flags variable, so adding the line before the # CCACHE section would probably be an optimal placement.

Since I'm assuming you're doing some *nix based programming, I'll pose this thought. Have you considered creating a live CD/USB with a base version of Linux and the development tool chain? It's not guaranteed to keep issues like this from happening, but it does provide a slightly more reliable environment.
Pages: [1] 2 3 ... 10
 
MrMapcom (10 views)
2015-05-23 20:26:16

MrMapcom (11 views)
2015-05-23 20:23:34

Waterwolf (29 views)
2015-05-20 15:01:45

chrislo27 (35 views)
2015-05-20 03:42:21

BurntPizza (70 views)
2015-05-10 15:53:18

FrozenShade (55 views)
2015-05-07 09:11:21

TheLopais (217 views)
2015-05-06 13:36:48

TheLopais (202 views)
2015-05-06 13:35:14

TheLopais (206 views)
2015-05-06 13:33:39

TheLopais (226 views)
2015-05-06 13:32:48
List of Learning Resources
by SilverTiger
2015-05-05 10:20:32

How to: JGO Wiki
by Mac70
2015-02-17 20:56:16

2D Dynamic Lighting
by ThePixelPony
2015-01-01 20:25:42

How do I start Java Game Development?
by gouessej
2014-12-27 19:41:21

Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00
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!