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 3 ... 18
1  Discussions / Miscellaneous Topics / [Possible virus / tracker?] What is this? on: 2013-10-20 03:41:23
Hey JGO, the past few days I've noticed a Mozilla window that keeps popping up on occasion.

It happens when I click things like:
Any URL. (not every time)
A websites 'background'. (not every time)

Here is the URL:
http://dfd.pathci.net/sd/wrap-0.01.html?u=http%3A%2F%2Fdfd.pathci.net%2Fsd%2Fapps%2Ffusionx%2F0.0.4.html%3Faff%3D1060-8102

Google results come back saying things relating to a java script packer?

This didn't start happening until I started playing: http://www.bots4.net
Even as I clicked this board the window popped up haha.

- Thanks for any feedback ^_^
2  Game Development / Newbie & Debugging Questions / Re: Custom resource caching? on: 2013-10-18 05:01:03
1. Compress your resources (loosely) into a ZIP archive
2. Apply a simple encryption algorithm (really simple, since the purpose here isn't to 'keep them out' so much as it is to making it not so blunt to acquire access to the resources. Also, the encryption algorithm is entirely local so there isn't much in the way of someone tearing apart your usage of the Java encryption API and grabbing the key if they really wanted it anyway...) So (in this example) XOR encryption.
3. Decorate a FileInputStream (to the Zip Archive containing your resources) with an XorDecryptionInputStream (basically just applies an XOR to every byte you read from the stream to decrypt it. A simple one byte key is entirely sufficient for these purposes) and pass that to the ZipInputStream
5. Use the ZipInputStream as you would.

Thanks mate ^_^

I made a program that:
Takes the resource (.png) than imports the raw .png data for encryption prior to exporting it into the cache.dat file ^_^

Next thing I need to think about is how to retrieve a certain object in the .dat cache file, should I use resource headers?
(The headers will be encrypted also ^_^)

Here is the cache.dat file contents (pseudo):
Quote
<!-- ShopIcon.png --!>
ENCRYPTED DATA HERE

<!-- AttackIcon.png --!>
ENCRYPTED DATA HERE

Note:
Since I can't post the encrypted data on the text area on JGO and successfully click post, here are the links ^_^
I'm happy with the output, there's no tenfold on the encryption files size.

Old encryption output for 87kb png: 500KB.
New encryption output for 87kb png: same size.

Raw imported PNG data: http://pastebin.com/jyZ8VuuC
Encrypted PNG data: http://pastebin.com/L7fLrSD7
Source code: http://pastebin.java-gaming.org/ab4d1673771
3  Game Development / Newbie & Debugging Questions / Re: Custom resource caching? on: 2013-10-18 03:07:14
This idea in its rawest form is:
Export a .png to a .txt file.
Encode / encrypt the .txt file.
Change the format to from .txt to .dat.

Apply a simple encryption algorithm.

How would I go about doing that?
1  
2  
3  
// get .png
// pack .png into .zip
// I'm now lost.

Sorry, maybe I should've stated my progress / familiarity with encryption / decryption + exporting haha.

The most I've done:
DES Cipher encryption / decryption of strings.
Exporting a images pixels to a .txt file with encryption applied.
Importing a image via encrypted pixels.

Thanks for the feedback ^_^
4  Game Development / Newbie & Debugging Questions / Re: Custom resource caching? on: 2013-10-18 02:10:29
Yes, .jar files.
What are You trying to do? Image atlas ?  Or something else ?
I mainly don't want my resources 'bluntly' out in the open Cheesy
Now I know I can't fully stop people from grabbing/editing the resources but I'd like to remove the 'bluntly' part and possibly store everything in "Cache files" ^_^ (.dat etc)

You can use the built-in zip file api in the standard java api and rename the .zip file to .dat Smiley
Never thought of that Tongue
Wouldn't they just need to rename the .dat to .zip though? XD

I'll fiddle around with some ideas tonight in my IDE ^_^

EDIT:
How would I 'casually' go about storing a .png in a .dat file (Encoded, see below)
Beautiful charset output: 3cÿrBR·ÒçÓW~ò$ãÔ€ä5Al½ô

Feedback's still welcome guys =D
5  Game Development / Newbie & Debugging Questions / Custom resource caching? on: 2013-10-17 01:14:19
Hey JGO, I was wondering if there's already a useful library out there that can pack my resources into a .dat file or something?

Example project layout:
  • src
  • cache/icons.dat

Than in my project I'd be able to call something like:
1  
2  
3  
4  
5  
6  
7  
8  
static StreamSystem streamSystem = new StreamSystem("cache/");

static void load() {
   Image shopIcon = streamSystem.getImage(
      "icons.dat", // resources packed into .dat
     "ShopIcon.PNG" // our image to load
  );
}

Thanks for the feedback guys ^_^
6  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-09 03:50:41
Games like this shoudl be like so:

You connect to server > server sends other player's positions to you and sends your position to others players.

when a client moves send move to server > server updates client's position server side and sends move to others.

that's how I do it for tile based movement.

Thanks ^_^

That's exactly what's going on.

Player connects to server > position and ID are sent to the server.
When a client moves > send his new position to the server which is than broadcasted to all other clients.

The main issue is how choppy the movement is :/
7  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-07 02:29:39
Wow...

It was because I was sending the data so fast xD
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
         new Timer(10, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
               try {

                  // write the time every 10ms vs. for loop(500)
                 write();
               } catch (IOException e1) {
                  e1.printStackTrace();
               }
            }
         }).start();


Message gets to the client in 0ms.
(Highest being the occasional 10ms)

But I already wrapped my code to update the players position in a timer @ 10ms intervals, I'm guessing if I increased the delay it wouldn't be good soo? Sad
8  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-07 02:24:14
Could it be because I'm sending the data at such a fast rate? o.O

I made a benchmarking test using a for loop:
(I'm now sending raw bytes ^_^ no more raw strings)
1  
2  
3  
4  
5  
6  
   // I/O has just been initialized.
  for (int i = 0; i < 500; i++) {

      // send the client the time this message was sent.
     client.write(new String("TimeStamp: " + System.currentTimeMillis()).getBytes());
   }

Client output:
(Longest delay for message @ server -> client: 420ms)
http://pastebin.com/B84RW0hT

From the output it looks like the more and more messages that get sent in that for loop cause a build up in server -> client messaging delays?
9  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-07 00:44:55
You aren't going to get smooth gameplay if you are literally just sending player coordinates.
Thanks ^_^, I'm not familiar with interpolation / client side prediction yet.
Is that what you mean by your quote above?

Below is 2 code snippets, would both of them have the same effect on sending/receiving players positions?
Meaning: would both snippets below send the data in the same amount of time, and not cause the players position to be updated slightly later due to snippet #2's length?

1  
2  
3  
4  
// shortest possible IMO
byte[] bytes = (id + "," + x + "," + y + "," + z).getBytes();
DatagramPacket packet = new DatagramPacket(bytes, bytes.length, HOST, PORT);
socket.send(packet);


1  
2  
// way too much unnecessary data xD
clientObjectOutputStream.writeObject("~[Client[" + id + "]: packed-location: "+x+", "+y+", "+z+"]~");

(I don't know why player movement is so choppy :/ - Is it due to too much string parsing?)
10  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-07 00:33:35
Before you do that, try disabling Nagle's Algorithm.

@Jeremy:
No difference, just tried with it on / off.
Thanks though ^_^

I'm going to try using UDP with DataGramSockets & DataGramPackets I guess ^_^
Already wrote a simple client/server now to implement the 'player system' for sending / storing coordinates.

If you think about it, is that alot of data to send every 10ms?
int bytes2Send = 98 * onlineClients;


Quote
INCOMING DATA: ~[Client[2]: packed-location: 4.33860469818115, 0.0340594636558, 9.76801013946533]~
11  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-06 23:27:28
You've got two kinds of packets you can send: UDP and TCP. UDP is what you should use for inconsequential things like position and speed and stuff as it is much faster. TCP is for more secure data.

@Troncoso:
TCP Is default I believe.
UDP with java would require use of a DatagramPacket not raw strings =D

I will try switching to UDP/DatagramPacket and apply some benchmarking tonight Smiley

Thanks Troncoso, feedback's still welcome guys =D
12  Game Development / Newbie & Debugging Questions / Re: 3D Networking trials. on: 2013-10-06 23:13:32
only send it a few times a second and interpolate the movement between the spaces where you don't send them.

Sounds great, I will try implementing =D

At the moment the only time the players x / y / z is sent over the network is if it has changed:
(Code: Client-sided)
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  
   // This method is called by 'player.update(tpf)' which is called from the games update loop.
  private void updateLoc(double tpf) {

      // cam.getLocation() until physics are implemented.
     Vector3f loc = cam.getLocation();
      x = loc.x;
      y = loc.y;
      z = loc.z;
      boolean newX = false;
      boolean newY = false;
      boolean newZ = false;
      if (lastX != x) {
         newX = true;
      }
      if (lastY != y) {
         newY = true;
      }
      if (lastZ != z) {
         newZ = true;
      }
      lastX = x;
      lastY = y;
      lastZ = z;
      if (newX && newY && newZ) {
         sendValue("x");
         sendValue("y");
         sendValue("z");

         // we've updated the x, y, z no need to continue.
        return;
      }
      if (newX) {
         sendValue("x");
      }
      if (newY) {
         sendValue("y");
      }
      if (newZ) {
         sendValue("z");
      }
   }

This is called every 10ms to send the positions on the fly:
(Code: Server-sided)
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
   for (Player p1 : players) {
      for (Player p2 : players) {
         if (p1 != p2) {

            // Send player 2 player 1's position
           p1.sendPositionPacked(p2);

            // Send player 1 player 2's position.
           p2.sendPositionPacked(p1);
         }
      }
   }

All code criticism is welcome lol, I know I'm probably doing multiple things wrong.
13  Game Development / Newbie & Debugging Questions / 3D Networking trials. on: 2013-10-06 22:58:47
Hello JGO, it's been a while since I've made a post here :3

Last night I created a trial 3D networking app, it's laid out like so:
1  
2  
3  
     [server]
    |        |
[client] [client]

Everything seemed fine until I decided to start taking in players "Coordinate packets" (line containing x, y, x & ID) and shipping them to another player:
1  
2  
3  
   public void sendPosition(Player p) {
      p.session.writeObject(~[Client[" + id + "]: packed-location: "+x+", "+y+", "+z+"]~);
   }

Issues:
Looks like severe lag. (Player movements are super jittery)
If the players x or z is updated, occasionally the y value will go crazy? (X & Y != z so why's the z value being updated client sided?)


Features relative to this post:
Each player is represented in the game world by a box.
Both players render properly @ their x, y, z in the game world.

Questions:
Is the reason for the lag because I'm sending strings instead of another data type?

Notes:
Stream types are both ObjectStreams (ObjectInputStream -> ObjectOutputStream)
Thanks for any feedback guys =D
14  Game Development / Newbie & Debugging Questions / Re: Entity[] not working? on: 2013-07-13 16:54:48
EDIT: Oops, didn't see you edited your post to say you solved it ^_^
15  Game Development / Newbie & Debugging Questions / Re: [SOLVED/OPEN] Real-time Strategy Unit Highlighting on: 2013-07-11 06:35:04
I'm getting ready to go to sleep at the moment but for those who are still reading this post after it being marked as solved:

How would I go about detecting if a unit is inside of the rectangle?

The only idea I have so far is to have 4 rectangles than pick 1 depending on the mouse position relative to its starting position. (Doesn't sound too efficient)
16  Game Development / Newbie & Debugging Questions / [SOLVED!] Real-time Strategy Unit Highlighting on: 2013-07-11 05:46:05
I'm trying to achieve something like the standard rectangle that appears when you highlight things on your desktop:


Via simple graphics rendering calls (g.drawRect/g.drawLine) etc.

This is something I've always thought about implementing ^_^ I'm now at that point in a project of mine (RTS) where I'd like to implement this in it.

I've never used Vector math but I'm guessing that's what I'll be needing, I'm posting this in hopes of getting some help on how I'd achieve this.

If anybody could help me / push me in the right direction that would be great ^_^

EDIT: Solved! For those who were wondering:
1  
2  
3  
4  
5  
6  
7  
8  
      if (mouse1Down) {
         int mouseX = client.getController().mouseX;
         int mouseY = client.getController().mouseY;
         g.drawLine(clickX, clickY, mouseX, mouseY - (mouseY - clickY));
         g.drawLine(mouseX, mouseY - (mouseY - clickY), mouseX, mouseY);
         g.drawLine(clickX, clickY, clickX, mouseY);
         g.drawLine(clickX, mouseY, mouseX, mouseY);
      }
17  Game Development / Newbie & Debugging Questions / Re: Render methods on: 2013-07-10 02:33:18
@GabrielBailey74
I want to know what operations you exactly did to increase the performance. Can I use
GraphicsDevice.createCompatibleImage()
in applet?

I don't know about applets mate, I switched from overriding the JPanels paint(Graphics g) method to drawing off of the Canvas.BufferStrategy (Canvas replaces the JPanel) I have yet to implement using
GraphicsDevice.createCompatibleImage()
for my images.

In my case I just achieved a great performance increase because I was double buffering the chunky Image VS. rendering it with fancy graphics.

See here for "fancy graphics" layout: http://www.java-gaming.org/index.php?topic=27079.0

18  Game Development / Newbie & Debugging Questions / Re: Render methods on: 2013-07-09 21:44:47
Last night was the first time I ever implemented rendering via a BufferStrategy and let me say I'll never regular render lol.

I was rendering a 1024x600 (Image file: 1920, 1200) via simply overriding the JPanels paint method and I was only pulling around 20 FPS :/

I couldn't stand having a low FPS so I Googled for performance tuning 2D and I found 5-7 useful hints on 1 page and some of them were:
Use a BufferStrategy (Via a canvas)
Use GraphicsDevice.createCompatibleImage()
etc..

Anyhow, I switched to rendering the chunky Image on a double buffered BufferStrategy and the rest via Graphics2D (Super RenderingHints) and my FPS is now around 60-90.
19  Games Center / Contests / Re: MiniLD#44: 7dRTS on: 2013-07-09 03:53:00
I've never done a ludum dare ^_^
I might chip in here, sounds fun.
20  Discussions / General Discussions / Re: Whatever happened to Euclideon's Unlimited detail? look inside to see! on: 2013-07-06 21:35:16
If they try and make money off it (patent it?), they will fail.
There is simply not enough reasons for someone to pay for this.

I lol'd yesterday xD
21  Discussions / Miscellaneous Topics / Re: Green!!! on: 2013-07-02 22:46:02
I swear I was 100% ready to "Appreciate" your post due to realizing how  Cry pro your connection is.

Turns out mines slower? da hell 0.0


MAJOR BACKFIRE
22  Discussions / Community & Volunteer Projects / Re: yet another looking for members thread on: 2013-06-29 09:13:37
I'm online alot (daily) due to respiratory issues and all I do is program java ^_^

Games, Apps, Networking, GUI's and anything else to feed my programming rampage xD

I know that with each project I make, I gain more java knowledge. (Game Dev is a endless frontier)

I'd be willing join, send me a PM so we can talk more ^_^

EDIT: Heading to sleep at the moment, looking forward to a reply :>
23  Game Development / Newbie & Debugging Questions / Re: File reading for save function on: 2013-06-24 19:25:34
Is this because i'm trying to load too much it is about 450 blocks

Could you post line # 56 in MainMenu.Java?
1  
at sqr.gui.org.MainMenu.LoadGame(MainMenu.java:56)


Would be better if you could post the whole "Load Game" method ^_^
24  Game Development / Newbie & Debugging Questions / Re: File reading for save function on: 2013-06-24 18:21:18
Just wrote this up hope it's what you're looking for ^_^
(Documented so you know what's occurring ^_^)

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  
   LinkedList<Block> blocks = new LinkedList<Block>();

   public void loadChunk(String path2File) throws FileNotFoundException {
      FileReader fr = new FileReader(new File(path2File));
      BufferedReader br = new BufferedReader(fr);

      // the line being read
     String line = "";

      try {
         while ((line = br.readLine()) != null) {

            // line will be read as: 0,595,1

            // turn the line into 3 strings
           // each letter seperated by a comma

            String[] dataArray = line.split(",");

            // dataArray[0] = 0; (X)
           // dataArray[1] = 595; (Y)
           // dataArray[2] = 1; (BlockType)

            // CASTING FROM STRING TO INTEGER
           int x = Integer.parseInt(dataArray[0]);
            int y = Integer.parseInt(dataArray[1]);
            int blockType = Integer.parseInt(dataArray[2]);

            // add the block to the block list & load another
           blocks.add(new Block(x, y, blockType));
         }
      } catch (IOException e) {
         e.printStackTrace();
      } finally {
         try {
            br.close();
         } catch (IOException e) {
            e.printStackTrace();
         }
      }
   }
25  Game Development / Newbie & Debugging Questions / Re: [SOLVED] Updating Block Textures (Joined Boxes?) [3D] on: 2013-06-24 06:48:36
Great, I solved it ^_^

Thread closed.

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  
   /**
    * Updating the blocks texture.
    * @param parentChunk The chunk to iterate through.
    */

   public void updateBlockTexture(Chunk parentChunk) {

      // iterate through the parent chunk's blocks.
     for (int i = 0; i < parentChunk.getBlockList().size(); i++) {
         // obtain a instance of this block (class)
        final Block b1 = (Block) this;
         // obtaining a block from the list.
        final Block b2 = parentChunk.getBlockList().get(i);

         // are the blocks identical?
        final boolean identical = Boolean.valueOf(b1 == b2 || b2 == b1);

         if (!identical) {

            // check if b1 is ontop of b2
           if (b1.isOntopOf(b2)) {
               b2.setSideTextures("Bottom");
               Game.debug(b1.toString() + " is on top of " + b2.toString());
               break;
               // updateB2.texture -> solid block texture (Vice Versa)
           }

            // check if b2 is ontop of b1
           if (b2.isOntopOf(b1)) {
               Game.debug(b2.toString() + " is on top of " + b1.toString());
               break;
               // updateB1.texture -> solid block texture (Vice Versa)
           }

            // TODO: Check blocks ontop of blocks.
        }
      }
   }
26  Game Development / Newbie & Debugging Questions / Re: Updating Block Textures (Joined Boxes?) [3D] on: 2013-06-24 06:16:05
Just use different blocks for the top and fill.

Almost sounds like you're stating the obvious lol Roll Eyes Roll Eyes Roll Eyes.

Or maybe I didn't explain what I'm trying to accomplish well enough ^_^

Of course I want to use a different block texture for the top one xD each block is independent in the world so it has to be dealt with (In the method) independently.
27  Game Development / Newbie & Debugging Questions / [SOLVED] Updating Block Textures (Joined Boxes?) [3D] on: 2013-06-24 05:47:26
Hello JGO, today I've been messing around with cubes in a 3D application ^_^
Basically what I'm trying to accomplish is shown in the images below, but I'll also explain it:
Quote
Say there is 4 blocks stacked on top of each other.
I'd like the bottom 3 to be textured solid while the top block is textured as a top block. (Signifying a difference)

Here is what I am starting with:


I'm trying to accomplish something around the lines of:


Now I have been experimenting with this for the past few hours and I can't seem to write a method that "Dynamically" adjusts.

Here is the method at the moment (Clean restart, was WAY too long):
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  
   /**
    * Updating the blocks texture.
    * @param parentChunk The chunk to iterate through.
    */

   public void updateBlockTexture(Chunk parentChunk) {

      // obtain a instance of this block (class)
     final Block b1 = (Block) this;

      // iterate through the parent chunk's blocks.
     for (int i = 0; i < parentChunk.getBlockList().size(); i++) {

         // obtaining a block from the list.
        final Block b2 = parentChunk.getBlockList().get(i);

         // are the blocks identical?
        final boolean identical = Boolean.valueOf(b1 == b2 || b2 == b1);

         if (!identical) {

            // check if b1 is ontop of b2
           if (b1.isOntopOf(b2)) {

               // updateB2.texture -> solid block texture (Vice Verca)
           }
           
            // check if b2 is ontop of b1
           if (b2.isOntopOf(b1)) {
               
               // updateB1.texture -> solid block texture (Vice Verca)
           }

            // TODO: Check blocks on top of blocks.
        }
      }
   }


When I wrote a somewhat decent version of this earlier I managed to get it to do what I want, but when I changed the chunks size It wouldn't function properly xD.

If somebody whose done this before could help me out with a explanation / pseudo code or if anybody could link me to a tutorial I'd be very grateful thanks JGO ^_^

If you need anymore information, please ask ^_^
28  Game Development / Newbie & Debugging Questions / Re: Slick2D applet, signing jars? on: 2013-06-23 03:40:26
Have a google for: "RSPS Jar Signer" ^_^
29  Discussions / Miscellaneous Topics / Re: What video games have you been playing lately? on: 2013-06-19 03:51:56
I've stuck with
http://www.transformice.com for a few years Tongue

Than there's:
http://www.runescape.com (Quit)
&
http://www.tribesascend.com (Badass)

After those 3 I'll play a game I made / work on a project xD
30  Discussions / Miscellaneous Topics / Re: Obsoscating classes on: 2013-06-14 05:41:59
Its not really about caring to mod it. Its about wanting to mod it Cheesy
I concur.
Pages: [1] 2 3 ... 18
 

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 (45 views)
2014-09-23 14:38:19

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

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

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

moogie (41 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!