Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (542)
Games in Android Showcase (133)
games submitted by our members
Games in WIP (604)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  3DS File and NIO  (Read 3316 times)
0 Members and 1 Guest are viewing this topic.
Offline InfoRital

Junior Devvie





« Posted 2005-07-22 00:39:29 »

Hi,
I'm trying to make a little 3DS file loader. For best performances, i want to use NIO.
The problem is i can't load a simple file (text or hexa as 3DS files) and show it. I've tried many solutions and i always get...nothing, or only numbers (what are these numbers, i don't know...).
So it will be very helpful for me if you would give me a little code which loads and shown a file with NIO, because i've searched on Google and...i found nothing  Huh

And are the chunks (0x4D4D, 0x4000...) in 3DS files one per line or ones following the others on the same line, and maybe without space ?

Thanks a lot for your help.

Java In Games : Java Games Community for French Developers
Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #1 - Posted 2005-07-22 08:37:59 »

All files on your hard disk are stored as numbers, because computers dont understand letters. You have to manually convert from those numbers into some language - which you have to choose. If you're loading files written by Americans, it's likely you need charset "ISO-8859-1". Have a look at the Charset class and the CharBuffer classes (these are how you convert raw NIO bytes into characters)

For the 2nd part, sounds like you might need to go and read about the actual file-format - there are plenty of googleable sites that give full info on .3DS.

malloc will be first against the wall when the revolution comes...
Offline InfoRital

Junior Devvie





« Reply #2 - Posted 2005-07-22 13:03:48 »

Thanks but it's incredible, i really can't deal with NIO to read a simple text or hexa file...
Can someone give me a little code which reads a file and shows with NIO ?

Thanks a lot for your help.

Java In Games : Java Games Community for French Developers
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline blahblahblahh

JGO Coder


Medals: 1


http://t-machine.org


« Reply #3 - Posted 2005-07-22 14:27:31 »

Thanks but it's incredible, i really can't deal with NIO to read a simple text or hexa file...
Can someone give me a little code which reads a file and shows with NIO ?

Thanks a lot for your help.

The documentation comes with java, and is free. I suggest you read the documentation for the classes I mentioned. If you specific problems then, then people can help.

malloc will be first against the wall when the revolution comes...
Offline InfoRital

Junior Devvie





« Reply #4 - Posted 2005-07-22 15:03:09 »

I always read the documentation first but i don't  understand english very well, and they didn't explain the APIs uses and give  no examples..I must know the basics of NIO,whithout that it's a bit difficult to understand the javadoc.
And my search results didn't help anymore. I've found nothing on a simple file reading and showing it.  Reading with a channel, that's ok, but i can get the length of the buffer or text (remaigning() always gives me 0) for the while() to traverse the file. And i can't get the caracteres and the 3DS hexa bytes.

All the tutorials i've found always give me another way , but no one gives me a solutions to read and show a file as with standard IO.

That's why i ask for a little code which does that job...

Java In Games : Java Games Community for French Developers
Offline InfoRital

Junior Devvie





« Reply #5 - Posted 2005-07-22 18:03:35 »

I succeed in loading and showing a text file with the above code :

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
   public static String readFile(File a_file) throws IOException {
      FileInputStream fin = new FileInputStream(a_file);
      FileChannel fc = fin.getChannel();
      ByteBuffer buffer = ByteBuffer.allocate(4 * 1024);
      StringBuffer l_stringBuffer = new StringBuffer();
      while (fc.read(buffer) != -1) {
         byte[] l_bytes = buffer.array();
         String s = new String(l_bytes, 0, buffer.position());
         l_stringBuffer.append(s);
         buffer.clear();
      }
      String retour = l_stringBuffer.toString();
      System.out.println(retour);
      return retour;
   }


But when i try to load an 3ds file, i get :
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
MMo
==(>=
ÿ¯ì
APE ▒   kU      b6$  ▒  y       RCm0 ▒  ÿÿÿ     ÿÿÿ@ 9A NP R S  
?¢.d£APE.CELQS£
ÍÌÌ=ÿ¯ú ASPHALT


                                  ▒     ?=8     0 ▒     |xq     FB;@ A P R S    
¢2d£ASPHALT.JPGQS£

×£=ÿ¯ AMOEBA PATTERN ▒  C6C       ▒     t       U>T0 ▒  áà×     ÌÊŒ@ AP R S    
?¢2d£PAT0107.TGAQS£
ÍÌÌ=
?pH pÏp7Àh`å
            ? AðAamera01p7¿Àh`å
                               ?amera01p7wÀhÿÿ`å?@ACamera01p7¿wÀh`å
                                                                   ? AðAamera01p7üÿ?amera01p7Àh`å
                 ? AðAamera01p7¿Àh`å
                                    ?amera01p7wÀhÿÿ`å?@ACamera01p7¿wÀh`å
                                                                        ? AðAamera01p7üÿ?amera01
?P
`
?!▒¡  =¡  =¡  =*v?".zDÈB???"#(ÈB????#zDÈB#000
                                             MáÁ:M
Âu2BãC@5Box01A)AÀÂ/m®ÂïÃRÂĪÝB/m®ÂïÃRÂĪÝBx²BöÃRÂÀÂx²BöÃRÂÀÂ1m®Â©!ÏÂĪÝB1m®Â©!ÏÂĪÝBv²B­!ÏÂÀÂv²B­!ÏÂ@A=▒Ÿñ>|,A?ûc_>³?õB▒?(>     [?=▒Ÿés>|,A?=▒
                                                              »³?·»Ã>(>ê£"?pA\?? h@°▒wÂ?æ[_?,ú>
$l°6šØŸ>oA?¿,zŸæ[ß>׳]????A`A6?HDŽÿÿ¿ÿÿ?HDŽè@ºh?ÒAÂeA AÂ
                                                        0A$APE


P  @ÕCone01AÈA@▒Èûõ@hYd@W%CÜ3¢@ZÀW%CÌèÝ@ªRÁW%CLAÁW%CohšA{±ÁW%C÷&ìAD¢ÁW%C·­B{gÁW%Cµ&▒B(ÆÀW%C°Bô@W%C§öAñ¥
AW%CøqŽAö4AW%CØfaA{¯AW%C2m.Â[Bj{8µîó^Âûû¿: 6Ò^<ÂÏ$ÂöB#7#äÁÁžÂ³f7ãAü¥Â3»7p8fB±ÂWùm7.m®B`ö<Â=ß07°ÆBYýÁÓµ6fµBahòA&$4L_~B%ÖoB[¶PÊAl.BÉ=ž¶ò,_ÁÕÇ}B±C¶1m®Am®ÀW%C1m®AJm®ÀW¥6@AØ▒§W>É­a?N>É­a»>É­a?dÎÜ>É­a?Û<ý>É­a?5É?É­a?▒?É­a?p1?É­a?²(F?É­a?©/_?É­a?I}?É­a?¹ß=É­a?[->H©`=~>H©`=ë«>H©`=xÔ>H©`=Hü>H©`=@C?H©`=ó&?H©`=(S;?H©`=ÈáP?H©`=!3g?H©`~?H©`=.C§=H©`=ûÿÿ>É­a?ûÿÿ>H©`=pA\??4m®Ax²B???????A<▒`A6?HDŽÿÿ¿ÿÿ?HDŽ1m®A:m®ÀW¥BeA AÕ0▒
          ▒
           ▒
            ▒
             ▒
              ▒
               ▒
               ▒
                ▒






 ▒























                                                                               0AhASPHALT,


▒▒!#$%&'()*+,-./0AAMOEBA PATTERN"
PAÆ@ICamera01G:çÃØ:DÃ@C`KAAa▒BG GzD@CCamera02G4ç{_ChÂhÂêʪBhÁåÑÁÿÿGB GzD@ÄHSph01A·AÔžÎÃæÑBîbA/iÍÂþB¯Ú,?Pî¬▒wB€Ž?ý$ÃÂY»B
                                                                          ùk?ÆþÂÚBk­¿ÃË ÅB7^À~.ÃrBäy1À³M$ÃlBË%ÀMÃ2m®A¢ðZ¿ÍÒ±ÂéZAÂá)Â{ÂUqBÕ·%ÂøM£ÂóÃÒB¶|(Âi÷Âv(þB'0ÂâÃ(ÃMáBu99ÂÁo>ÃBgc=ÂK0Ã]ËA:ÂŒøïio@2ÂA*`A6Ž?1žD=žD!
                                                      ŽŽ¿1ÿÿ!
                                                             Ž°RÃäÑBRžWÁeA Av













                PA~°7
pH pÏp7Àh ±A?
             MáÁ:M
Âu2B AðAamera01p7¿Àh ±A?
                        MáÁ:M
Âu2Bamera01p7wÀh~|?
                   MáÁ:M
Âu2B@Aamera01p7¿wÀhÝh;?6GÂZ»âÁÜÑ%> AðAamera01p7wÀh~|?
                                                     MáÁ:M
Âu2B@Aamera01p7Àh ±A?
                     MáÁ:M
Âu2B AðAamera01p7¿Àh ±A?
                        MáÁ:M
Âu2Bamera01p7wÀh~|?
                   MáÁ:M
Âu2B@Aamera01p7¿wÀhÝh;?6GÂZ»âÁÜÑ%> AðAamera01p7wÀh~|?
                                                     MáÁ:M
Âu2B@Aamera0°   °
°²0°Box01p@ÿÿ° °&@è@ºh?ÒAÂ!°*@ÜÉ??"°&@???°
PwÖ>°³0°Cone01p@ÿÿ° °&@1m®A:m®ÀW¥B!°*@ÜÉ??"°&@???°
PwÖ>°I0°Camera01ÿÿ °&@`KA°0°Camera01pÿÿ °&@çÃØ:DÃ@C#°@|B$°@A°I0°Camera02ÿÿ °&@êʪBhÁåÑÁ°0°Camera02pÿÿ °&@ç{_ChÂhÂ#°@@B$°@°y0°HSph01p@ÿÿ° °pC°RÃäÑBRžWÁ¿PôÂòxB=¬¢ÁÍÌÌ>)\¿ž>?¶³²ÂäÑB|rÀÁ
°RÃäÑBRžWÁ!°V@º"É?FÚ?¹Ä<¹Ä<Vè>Ž¿²žDœPwÖ>Ž¿À±·Dœ"°J@???H¿??ZEC???)°°
PwÖ>°J0ÿÿ°$AMBIENT$ÿÿ%°&@¡  =¡  =¡  =


I wish you can see what i copy/put into the code marks, because it's only lots of special, very very special caracteres...and as i'm french, maybe we don't have the same charset...

Any idea of how i can get hexa datas (like 0x4D4D, 0x4000...) ?

Thanks.

Java In Games : Java Games Community for French Developers
Offline tom
« Reply #6 - Posted 2005-07-22 19:44:56 »

3DS files are binary files. You do not want to read it as text. Hex data is a way of describing binary data as text. 0x4D4D says that there is 2 bytes with the values 77, 77 (unless it's 4 or more bytes where the high bytes are 0). To learn more about binary data and hex values, buy a Java teaching book. Read it a couple of times before starting on your loader.

Offline InfoRital

Junior Devvie





« Reply #7 - Posted 2005-07-22 20:02:01 »

I've two Java books and only one deals with binary datas, it shows how to read a binary file with IO in one very short examples which is almost the same as the text file reading example.My last luck are internet examples and this forum.
So, a little help would be very helpful for me.

Thanks.

Java In Games : Java Games Community for French Developers
Offline InfoRital

Junior Devvie





« Reply #8 - Posted 2005-07-22 20:17:46 »

If i load a binary file, convert it to int (is it possible ?) and then convert it to a string representation with the 16 base, i suppose that can work.
But the question is how to convert binary file to int ?

Java In Games : Java Games Community for French Developers
Offline Jackal von ÖRF

Junior Devvie





« Reply #9 - Posted 2005-07-22 20:27:15 »

I can't see why anybody would want to handle binary files as plain text. What you should do, is to search Google for 3ds file format if you want to know how to parse 3DS files.

If you want to print the data in hex format, use Integer.toHexString somewhat like this:
1  
2  
3  
4  
5  
6  
7  
8  
9  
      byte[] bytes = ...
     
      for (byte b : bytes) {
         String hex = Integer.toHexString(b & 0xFF).toUpperCase();
         while (hex.length() < 2) {
            hex = "0" + hex;
         }
         System.out.println(hex);
      }

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline tom
« Reply #10 - Posted 2005-07-22 20:42:58 »

Ok, atleast you've got a book. Shows you have put some effort into it. I'll try to help.

Hex numbers are numbers written in base 16 number system. We usually use the decimal system wich uses the base 10 number system. Hex has 16 symbols representing the 16 values. The 10 first is the same as the decimal system with 0-9. The last uses the characters A-F to sombolise the values 10-15. "C" written has hex means 12 written as decimal. When you've got more than one symbol you've got to multiply with 16 instead of 10. So "C4" means (12*16)+4=196. A hex symbol represents a 4 bit number. That is why they are usally written in pairs to represent bytes. "0xC4" represents a single byte, "0xC400" represents 2 bytes etc.  Look through your books again to read about hex, oct and binary representation of data. It might be in a appendix named "number formats".

So when the 3ds docs says "0x4000" it means you need to read 2 bytes, one with the value "0x40" and one "0x00. You can use the windows scientific calculator to switch between hex and decimal number.

In your code you could use the l_bytes array directly, or wrap it in a DataInputStream. In any case you need to know what endian is used by the file format. Be also aware that java bates are signed wich you don't wan't. So to check for "0x4000" you could write:
1  
2  
3  
if ( (l_bytes[0] & 0xff) == 0x00 && (l_bytes[1] & 0xff) == 0x40) {
   // marker at index 0 eqals 0x4000
}

Offline kevglass

« JGO Spiffy Duke »


Medals: 221
Projects: 24
Exp: 18 years


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #11 - Posted 2005-07-22 20:46:44 »

The source code on this page might help you out:

http://www.multi.fi/~mbc/v3ds/Decode3dsApplet.html

If you're at the stage where binary files are an unknown concept you might want to start somewhere a little easier going. Writing a 3DS loader isn't the easiest place to start.

Kev

Offline tom
« Reply #12 - Posted 2005-07-22 20:47:08 »

If i load a binary file, convert it to int (is it possible ?) and then convert it to a string representation with the 16 base, i suppose that can work.
But the question is how to convert binary file to int ?

Forget about strings. You will not use it when doing a 3ds loader (with the exception of reading text lumps like material names).ut it.

Offline InfoRital

Junior Devvie





« Reply #13 - Posted 2005-07-22 23:09:34 »

Thanks for all your answers.

Quote
If you want to print the data in hex format, use Integer.toHexString somewhat like this:
Code:
byte[] bytes = ...

for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xFF).toUpperCase();
while (hex.length() < 2) {
hex = "0" + hex;
}
System.out.println(hex);
}

Why the while (hex.lenght() < 2)) ? It makes the while infinite and always return 00.
If i remove this "while" it seems to work, i get on each line 2 caracteres (hex). But the while is very long, i had to kill it...

Quote
Hex numbers are numbers written in base 16 number system. We usually use the decimal system wich uses the base 10 number system. Hex has 16 symbols representing the 16 values. The 10 first is the same as the decimal system with 0-9. The last uses the characters A-F to sombolise the values 10-15. "C" written has hex means 12 written as decimal. When you've got more than one symbol you've got to multiply with 16 instead of 10. So "C4" means (12*16)+4=196. A hex symbol represents a 4 bit number. That is why they are usally written in pairs to represent bytes. "0xC4" represents a single byte, "0xC400" represents 2 bytes etc.  Look through your books again to read about hex, oct and binary representation of data. It might be in a appendix named "number formats".

So when the 3ds docs says "0x4000" it means you need to read 2 bytes, one with the value "0x40" and one "0x00.
Thanks for your little lesson, now it's clearly in my head. But my two books doesn't have any explication on number formats, binary, hexadecimal, decimal...and yet they were quite expensive...

Quote
The source code on this page might help you out:

http://www.multi.fi/~mbc/v3ds/Decode3dsApplet.html

If you're at the stage where binary files are an unknown concept you might want to start somewhere a little easier going. Writing a 3DS loader isn't the easiest place to start.

Kev
Thanks, but i already know this loader. And someone on this forum are the new maintainer of the loader. But wehre are the sources ? I can't found them. Not the sources of the applet, but the sources of the 3ds loader.

Quote
In your code you could use the l_bytes array directly, or wrap it in a DataInputStream. In any case you need to know what endian is used by the file format. Be also aware that java bates are signed wich you don't wan't. So to check for "0x4000" you could write:
Code:
if ( (l_bytes[0] & 0xff) == 0x00 && (l_bytes[1] & 0xff) == 0x40) {
  // marker at index 0 eqals 0x4000
}

What's the gain if i wrap it in a DataInputStream ?  And 3ds files use little-endian. Must i do something particular ?

And great thank tom ! Thanks to your help, i've succeeded to find the Main Chunk of my 3ds files  Smiley.

Thank to all of you, now i can start my 3ds loader  Smiley

Java In Games : Java Games Community for French Developers
Offline tom
« Reply #14 - Posted 2005-07-23 00:06:10 »

Thanks for all your answers.

Quote
If you want to print the data in hex format, use Integer.toHexString somewhat like this:
Code:
byte[] bytes = ...

for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xFF).toUpperCase();
while (hex.length() < 2) {
hex = "0" + hex;
}
System.out.println(hex);
}

Why the while (hex.lenght() < 2)) ? It makes the while infinite and always return 00.
If i remove this "while" it seems to work, i get on each line 2 caracteres (hex). But the while is very long, i had to kill it...

You must have typed it in wrong. The while makes sure that the string always ends up with 2 characters. That is important so you don't drop zeros.


What's the gain if i wrap it in a DataInputStream ?  And 3ds files use little-endian. Must i do something particular ?

DataInputStream makes it easy to read in primitives like unsigned shorts, float etc. But I don't think you can use it beacause java is big endian? ByteBuffer has got something similar, and you can set the endian on the buffer. So instead of:
1  
if ( (l_bytes[0] & 0xff) == 0x00 && (l_bytes[1] & 0xff) == 0x40) {


you could have:
1  
if ((byteBuffer.getShort() & 0xffff) == 0x4000) {



Offline ap_kelly

Junior Devvie




Java rocks!


« Reply #15 - Posted 2005-07-23 07:41:46 »

If you look at the Beta v0.3 tutorial on my site, it shows you how to load and render a .3ds file, source code is provided as is a webstart demo.

http://games.swizel-studios.com/tutorials.html

Andy.

Offline InfoRital

Junior Devvie





« Reply #16 - Posted 2005-07-23 09:19:26 »

Quote
If you look at the Beta v0.3 tutorial on my site, it shows you how to load and render a .3ds file, source code is provided as is a webstart demo.

http://games.swizel-studios.com/tutorials.html

Andy.

That was your version i quoted before. But i really don't find the source of the mri-v3ds loader...

Java In Games : Java Games Community for French Developers
Offline InfoRital

Junior Devvie





« Reply #17 - Posted 2005-07-23 09:50:23 »

That's my little function.
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  
   public static void readFile(File a_file) throws IOException {
      int i = 0;
      int length = (int) a_file.length();

      System.out.println("Loading " + a_file);

      System.out.println("Length of the file is " + length);

      FileInputStream fin = new FileInputStream(a_file);
      FileChannel fc = fin.getChannel();
      ByteBuffer buffer = ByteBuffer.allocate(length);

      while (i + 1 <= buffer.capacity()) {

         fc.read(buffer);
         byte[] l_bytes = buffer.array();

         if (i + 2 <= length) {
            if ((buffer.getShort(i) & 0xffff) == 0x4D4D) {
               System.out.println("Main Chunk found");
            }
         }

         String hex = Integer.toHexString(buffer.get(i) & 0xFF)
               .toUpperCase();
         if (hex.length() < 2) {
            hex = 0 + hex;
         }
         System.out.println(hex);

         i++;
      }
      System.out.println("File loaded");

   }


What do you think about my code ?
Is it better to map the file in memory rather than load it in streaming ?

Java In Games : Java Games Community for French Developers
Offline InfoRital

Junior Devvie





« Reply #18 - Posted 2005-07-23 17:28:27 »

Now i can't get the length of the chunks, the strings data, and the vertex list...
I've passed many hours today in it, but i found nothing that could help me on internet, and there is nothing in my books. But all are java and bytes problems.

First for the length, it's on 4 byte just after the chunk's id. But to get 4 bytes, it's getFloat(). But i've tried buffer.getFloat & 0xffffffff (8 f because of 4 bytes).
but that's wrong...so how can i get the 4 bytes after the id chunk and convert it to int ?

Then the string data, per exemple, for the object name.
I've found this code on internet :
1  
2  
3  
4  
5  
6  
7  
8  
9  
         case 0x4000: 
            i=0;
            do
            {
               fread (&l_char, 1, 1, l_file);
               p_object->name[i]=l_char;
               i++;
            }while(l_char != '\0' && i<20);
         break;


But it's in C.
I've tried to make this code :
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
int j = 0;
               char[] c = new char[20];
               StringBuffer sb = new StringBuffer();
               while(c[j] != '\0' && j<20){
                 
                  c[j] = buffer.getChar(i+j);
                  sb.append(c[j]);
                   i++;
                  }
               String st = sb.toString();
               System.out.println("Chaine = " + st);


"i" is the byte position in the buffer.
char[20] because of the 20 max caracteres and because i didn't know how to initialize my char array in an other war...

But that just doesn't work...

And finally for the vertex list, it's a vlue on 2 bytes just after the 0x4110 chunk. I found many 0x4110 chunks in my file, but it isn't the problem.
So i do :
1  
2  
int numbervertex = buffer.getShort(i);
               System.out.println(Integer.toString(numbervertex));


And it returns me 16656.Is it possible 16656 vertices for a 24824 bytes file ? And there is many 0x4110 in the file...

My basic function is on the previous post.


PS : where are the source of the vrmi-3ds loader on this site http://games.swizel-studios.com/tutorials.html ? I didn't found it in the library section and ine the jar and in the tutorial section there is only the applet source code.

Thank for your help.

Java In Games : Java Games Community for French Developers
Offline ap_kelly

Junior Devvie




Java rocks!


« Reply #19 - Posted 2005-07-23 22:20:19 »

You don't need the source, you have the jar file and the javadoc available. This will get you a loaded .3ds file into memory, then all you have to do is write a simple renderer. Beta v0.3 on my site is an example of a very simple renderer.

Andy.

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

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

The first screenshot will be displayed as a thumbnail.

BurntPizza (15 views)
2014-12-27 22:38:51

Mr.CodeIt (13 views)
2014-12-27 04:03:04

TheDudeFromCI (17 views)
2014-12-27 02:14:49

Mr.CodeIt (25 views)
2014-12-23 03:34:11

rwatson462 (56 views)
2014-12-15 09:26:44

Mr.CodeIt (46 views)
2014-12-14 19:50:38

BurntPizza (92 views)
2014-12-09 22:41:13

BurntPizza (113 views)
2014-12-08 04:46:31

JscottyBieshaar (86 views)
2014-12-05 12:39:02

SHC (97 views)
2014-12-03 16:27:13
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

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
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!