Java-Gaming.org Hi !
 Featured games (83) games approved by the League of Dukes Games in Showcase (538) Games in Android Showcase (132) games submitted by our members Games in WIP (600) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: 1 2 [3] 4 5 6
 ignore  |  Print
 Java port of Bullet Physics Library  (Read 104884 times) 0 Members and 1 Guest are viewing this topic.
LvR

Senior Newbie

 « Reply #60 - Posted 2008-03-14 07:24:43 »

I'm playing with HingeConstraint, and I have a issue :

There is two constructors to join bodies, one which takes Transform, and one where you specify Vectors ...
With the first one, hinge Limits and angularMotor work very well, but with the other constructor the physic explodes when it reaches limits !

Maybe I do something wrong, here is the 2 methods I use :

 1  2  3  4  5  6  7  8 `HingeConstraint hingeC;                Transform localA = stack.transforms.get();Transform localB = stack.transforms.get();localA.setIdentity();localA.origin.set(1.0f, 0.0f, 0.0f);                              localB.setIdentity();                localB.origin.set(-1.0f, 0.0f, 0.0f);                                          hingeC = new HingeConstraint(bodies.get(1), bodies.get(2), localA, localB);`

And my current issue :
 1  2  3  4  5  6  7  8  9  10 `HingeConstraint hingeC; Vector3f pivotInA = stack.vectors.get();Vector3f pivotInB = stack.vectors.get();Vector3f axisInA = stack.vectors.get();Vector3f axisInB = stack.vectors.get();pivotInA.set(1.0f, 0.0f, 0.0f);pivotInB.set(-1.0f, 0.0f, 0.0f);axisInA.set(0.0f, 0.0f, 1.0f);axisInB.set(0.0f, 0.0f, 1.0f);                hingeC = new HingeConstraint(bodies.get(1), bodies.get(2), pivotInA, pivotInB, axisInA, axisInB);`

Jezek, I can send you a test if you want to check by yourself.
LvR

Senior Newbie

 « Reply #61 - Posted 2008-03-14 11:05:28 »

I'm trying to debug :
In the first case which works, I get Tranforms for HingeContraints like this:
 1  2  3  4  5  6  7  8  9  10  11 `rbAFrame(1.0, 0.0, 0.0)1.0, 0.0, 0.0 0.0, 1.0, 0.00.0, 0.0, 1.0rbBFrame(-1.0, 0.0, 0.0)1.0, 0.0, -0.00.0, 1.0, -0.00.0, 0.0, -1.0`

but the computed Tranforms from Vectors are like this :
 1  2  3  4  5  6  7  8  9  10  11 `rbAFrame(1.0, 0.0, 0.0)0.0, 1.0, 0.01.0, 0.0, 0.00.0, 0.0, 1.0rbBFrame(-1.0, 0.0, 0.0)0.0, 1.0, -0.01.0, 0.0, -0.00.0, 0.0, -1.0`

LvR

Senior Newbie

 « Reply #62 - Posted 2008-03-17 07:40:28 »

Hi

I inspect HingeConstraint code, and there is some things a bit weird (also present in "upstream" Bullet), if I remember well my maths (which are years behind me now ...)
So I' ve rewrite the constructor public HingeConstraint(RigidBody rbA, RigidBody rbB, Vector3f pivotInA, Vector3f pivotInB, Vector3f axisInA, Vector3f axisInB) and it seems ok :

Here is the original code :
 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 `rbAFrame.origin.set(pivotInA);// since no frame is given, assume this to be zero angle and just pick rb transform axisVector3f rbAxisA1 = stack.vectors.get();rbA.getCenterOfMassTransform().basis.getColumn(0, rbAxisA1);float projection = rbAxisA1.dot(axisInA);if (projection > BulletGlobals.FLT_EPSILON) {   rbAxisA1.scale(projection);   rbAxisA1.sub(axisInA);} else {   rbA.getCenterOfMassTransform().basis.getColumn(1, rbAxisA1);}Vector3f rbAxisA2 = stack.vectors.get();rbAxisA2.cross(rbAxisA1, axisInA);rbAFrame.basis.setRow(0, rbAxisA1.x, rbAxisA2.x, axisInA.x);rbAFrame.basis.setRow(1, rbAxisA1.y, rbAxisA2.y, axisInA.y);rbAFrame.basis.setRow(2, rbAxisA1.z, rbAxisA2.z, axisInA.z);Quat4f rotationArc = stack.quats.get(QuaternionUtil.shortestArcQuat(axisInA, axisInB));Vector3f rbAxisB1 = stack.vectors.get(QuaternionUtil.quatRotate(rotationArc, rbAxisA1));Vector3f rbAxisB2 = stack.vectors.get();rbAxisB2.cross(rbAxisB1, axisInB);rbBFrame.origin.set(pivotInB);rbBFrame.basis.setRow(0, rbAxisB1.x, rbAxisB2.x, -axisInB.x);rbBFrame.basis.setRow(1, rbAxisB1.y, rbAxisB2.y, -axisInB.y);rbBFrame.basis.setRow(2, rbAxisB1.z, rbAxisB2.z, -axisInB.z);`

And my code :
 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 `rbAFrame.origin.set(pivotInA);    Vector3f rbAxisA1 = stack.vectors.get();Vector3f rbAxisA2 = stack.vectors.get();Vector3f tmpVect = stack.vectors.get(axisInA);rbA.getCenterOfMassTransform().basis.getColumn(0, rbAxisA1);float projection = axisInA.dot(rbAxisA1);if (Math.abs(projection) >= 1.0f - BulletGlobals.SIMD_EPSILON) {            rbA.getCenterOfMassTransform().basis.getColumn(1, rbAxisA2);                                                                    tmpVect.scale(axisInA.dot(rbAxisA2));            rbAxisA2.sub(tmpVect);               rbAxisA1.cross(rbAxisA2, axisInA);                                                } else {                       tmpVect.scale(projection);            rbAxisA1.sub(tmpVect);                                        rbAxisA2.cross(axisInA, rbAxisA1);                   }rbAFrame.basis.setRow(0, rbAxisA1.x, rbAxisA2.x, axisInA.x);rbAFrame.basis.setRow(1, rbAxisA1.y, rbAxisA2.y, axisInA.y);rbAFrame.basis.setRow(2, rbAxisA1.z, rbAxisA2.z, axisInA.z);Quat4f rotationArc = stack.quats.get(QuaternionUtil.shortestArcQuat(axisInA, axisInB));Vector3f rbAxisB1 = stack.vectors.get(QuaternionUtil.quatRotate(rotationArc, rbAxisA1));Vector3f rbAxisB2 = stack.vectors.get();rbAxisB2.cross(axisInB, rbAxisB1);rbBFrame.origin.set(pivotInB);rbBFrame.basis.setRow(0, rbAxisB1.x, rbAxisB2.x, -axisInB.x);rbBFrame.basis.setRow(1, rbAxisB1.y, rbAxisB2.y, -axisInB.y);rbBFrame.basis.setRow(2, rbAxisB1.z, rbAxisB2.z, -axisInB.z);`

Maybe I should also post on Bullet forum ?

jezek2
 « Reply #63 - Posted 2008-03-17 08:13:23 »

Hi

I inspect HingeConstraint code, and there is some things a bit weird (also present in "upstream" Bullet), if I remember well my maths (which are years behind me now ...)
So I' ve rewrite the constructor public HingeConstraint(RigidBody rbA, RigidBody rbB, Vector3f pivotInA, Vector3f pivotInB, Vector3f axisInA, Vector3f axisInB) and it seems ok :

...

Maybe I should also post on Bullet forum ?

I looked into code and this particular constructor is not used in any demo, also HingeConstraint is same in both 2.66 and 2.67. So I think it might be bug in upstream, you should post there as well (in new thread).
erwincoumans

Junior Newbie

 « Reply #64 - Posted 2008-03-18 03:41:32 »

First of all, thanks Jezek for such impressive effort. I just PM'ed the moderator to make this topic sticky.

Quote from: jezek2
moving trimeshes, some misc. shapes, ContinuousDynamicsWorld. I'll leave extras (like multithreaded version, COLLADA support, etc.)
Small advice: moving trimeshes (GIMPACT), BulletMultiThreaded, BulletColladaConverter are not part of the core Bullet but optional Extras. btContinuousDynamicsWorld is currently work-in-progress, so I recommend waiting to port that and focus first on the remaining parts of the core parts in the Bullet/src folder.

I looked into code and this particular constructor is not used in any demo, also HingeConstraint is same in both 2.66 and 2.67. So I think it might be bug in upstream, you should post there as well (in new thread).

The constructor was created before the hinge limit contribution was added. It doesn't properly support hinge limits indeed.
The pivot+axis doesn't provide a full frame, so the limits are ambiguous. If we change the implementation, we break backwards compatibility.

One idea is to apply/reset the transform properly inside the 'setLimit' method, would that help? See issue report here:

Please discuss details in the Bullet forums, we will sort it out.
Erwin
EgonOlsen
 « Reply #65 - Posted 2008-03-21 16:23:34 »

I've created my own OpenGL-like software renderer. I've found jPCT unusable for that task, because it doesn't use the same projection and lighting as OpenGL...
...says who?

I've written a jPCT-implementation of IGL, but a very limited one. It can play the basic demo but that's it (i.e. it can only draw cubes). It was just meant as a proof of concept and as a training exercise if it's actually possible to develop on the Asus EEEPC...it is! To use jBullet (great work btw...multithreading would be a cool addition) with a 3d engine, one shouldn't use the demo framework IMHO, because it's bound too much to the way how OpenGL does things. However, it IS possible to use it anyway...as you can see.

Keep up the good work!

erwincoumans

Junior Newbie

 « Reply #66 - Posted 2008-03-22 23:33:31 »

That looks nice. What method is used for the real-time shadows?

Do you have a link to the source code/demo?

THanks,
Erwin
EgonOlsen
 « Reply #67 - Posted 2008-03-23 11:36:28 »

That looks nice. What method is used for the real-time shadows?

Do you have a link to the source code/demo?
It's shadow mapping. The sources are here: http://www.jpct.net/forum2/topics/performance-myths/1079/view.html But they aren't pure OGL, they are using jPCT as 3d engine. The demo framework is too low level to make a nice fit for the engine, so i'm trying to mimic the state machine that OpenGL is with jPCT, which looks quite hacky...

basixs

Innocent Bystander

 « Reply #68 - Posted 2008-03-24 21:00:49 »

Hi, AWESOME work.

jME http://www.jmonkeyengine.com/ would like to utilize this physics library.  Currently it is using a java port of ODE, if included this would be another available physics library.

I was wondering a couple of things though.  How are you going to handle Bullet updates?  and What is the the state of this current endeavor.  If it is still going to be changed quite a bit, would it be better to wait to implement it with jME?

Thanx, basixs
irrisor

Junior Devvie

 « Reply #69 - Posted 2008-03-24 21:42:01 »

jME http://www.jmonkeyengine.com/ would like to utilize this physics library.  Currently it is using a java port of ODE
No nitpicking intended, but I want to correct this a little bit: it would be great to use jBullet in jME Physics 2. No official plans yet. And it currently uses ODEJava (which is not a java port, though JOODE is supported as well)

Anyways, basixs is right overall - awesome work! any eta for a kind of release/stable or similar?
jezek2
 « Reply #70 - Posted 2008-03-25 00:16:15 »

I was wondering a couple of things though.  How are you going to handle Bullet updates?  and What is the the state of this current endeavor.  If it is still going to be changed quite a bit, would it be better to wait to implement it with jME?

After base features will be ported, I would like to keep syncing with newer versions. It seems that differencies of code between versions are not that big. The API will be changing a little in some versions, both because of Java port and original Bullet. But nothing significant I think. Therefore, I don't think you should wait with using JBullet.

... any eta for a kind of release/stable or similar?

No ETA is set, but I think that base features will be ported in month or two. I would like to switch to a new, more "official" versioning scheme that matches the original Bullet version, eg. 2.67-1, where 2.67 is original Bullet version and 1 is Java port version for that Bullet version. It will increase when bugfixes or other enhancements are made in Java version, or when some yet unported code was ported (eg. from extras).
lhkbob

JGO Knight

Medals: 32

 « Reply #71 - Posted 2008-03-26 20:09:54 »

@jezek2, I was wondering if you could clarify something for me.

I've been trying to link my rendering engine to javabullet to test it without the debug drawer.  However, when I create a box with half extent <1, 1, 1>, to get the visuals right, I need to draw a cube with side lengths 1.  Do half extents in bullet represent actual side lengths or half the dimension (as the name seems to imply)?

Thanks

Marvin FrÃ¶hlich

Senior Devvie

May the 4th, be with you...

 « Reply #72 - Posted 2008-04-05 13:59:11 »

I don't know if it's really useful, but I have an idea of XXX.asReadOnly() method, which would create a new XXX readonly instance with shared float[] array. The instances should be cached in WeakHashMap (EDIT: or better own cache that uses SoftReference, should be pretty straightforward to create), so you could simply write code like this:

 1  2  3  4  5  6  7  8  9 `protected final Point3f position = new Point3f();public Point3f getPosition() {   return position.asReadOnly();}public void setPosition(Point3f pos) {   this.position.set(pos);}`

I really like this idea. I think, I will add this feature soon .

Marvin
erwincoumans

Junior Newbie

 « Reply #73 - Posted 2008-04-08 03:15:40 »

Jerez: I would wait porting the upcoming soft body dynamics, it is work-in-progress. There are some important fixes in btConeTwistConstraint, btQuaternion and RagdollDemo that you might need to integrate in the Java version.

Thanks a lot for the feedback,
Erwin
LvR

Senior Newbie

 « Reply #74 - Posted 2008-04-08 09:01:52 »

Thank you Erwin.

Jezek, I have the same fixes available for jbullet.
With a mtn status or mtn diff I can see the changes. How I can commit safely just one file (I've have some other files I've changed for some test) ?

jezek2
 « Reply #75 - Posted 2008-04-08 11:26:50 »

Thank you Erwin.

Jezek, I have the same fixes available for jbullet.
With a mtn status or mtn diff I can see the changes. How I can commit safely just one file (I've have some other files I've changed for some test) ?

Should be just about specifying the file name on command line, like this: mtn commit SomeFile.java or mtn commit path/to/SomeFile.java (both relative to your current dir). You'll get then summary of changes when editing commit message. Remember to sync afterwards

Jerez: I would wait porting the upcoming soft body dynamics, it is work-in-progress. There are some important fixes in btConeTwistConstraint, btQuaternion and RagdollDemo that you might need to integrate in the Java version.

Thanks for your advice, nice stuff btw! I'll probably still leave JBullet on 2.66 for some time, with exception of important fixes like these. And in some near future I'll upgrade directly to 2.68.
LvR

Senior Newbie

 « Reply #76 - Posted 2008-04-08 14:17:44 »

ok, HingeConstraint fix should be commited.
LvR

Senior Newbie

 « Reply #77 - Posted 2008-04-14 11:58:57 »

I've a pb when I try to remove rigidbodies from my dynamicworld (it's not systematic, and arryy index causing this exception change)

 1  2  3  4  5  6  7  8  9 `Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13        at gnu.trove.THashMap.removeAt(THashMap.java:414)        at gnu.trove.THashMap.retainEntries(THashMap.java:315)        at com.bulletphysics.util.HashUtil\$TroveHashMapImpl.retainEntries(HashUtil.java:114)        at com.bulletphysics.collision.broadphase.OverlappingPairCache.processAllOverlappingPairs(OverlappingPairCache.java:123)        at com.bulletphysics.collision.broadphase.OverlappingPairCache.removeOverlappingPairsContainingProxy(OverlappingPairCache.java:127)        at com.bulletphysics.collision.broadphase.SimpleBroadphase.destroyProxy(SimpleBroadphase.java:73)        at com.bulletphysics.collision.dispatch.CollisionWorld.removeCollisionObject(CollisionWorld.java:164)        at com.bulletphysics.dynamics.DiscreteDynamicsWorld.removeRigidBody(DiscreteDynamicsWorld.java:375)`

Here is how I do (I only have box rigidbodies and HingeConstraint) :

 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 `public void deleteWorld() {            // Delete joints      int numConstraints = dynamicsWorld.getNumConstraints();      for (int i=0; i();            // Delete dynamicWorld            dynamicsWorld.destroy();      dynamicsWorld = null;         }   `

Any idea ?
jezek2
 « Reply #78 - Posted 2008-04-15 04:52:16 »

Any idea ?

This looks like bug in GNU Trove itself, try latest version of it. I've seen that they fixed some bug with retainEntries in newer version. If that doesn't help you can try to remove it from classpath, JBullet will then use normal HashMap.

BTW: thanks for the commit, I will just fix minor divergence of the code style to match other code (the else blocks starts on same line as '}').
LvR

Senior Newbie

 « Reply #79 - Posted 2008-04-15 07:18:02 »

With trove-2.0.3, I can't reproduce it so it was a trove bug.
thx for the help.
LvR

Senior Newbie

 « Reply #80 - Posted 2008-04-30 10:01:42 »

Hi Jezek,

Any news on jbullet porting ?
Is still there issues for 2.66 or you have started on 2.68 sync ?
jezek2
 « Reply #81 - Posted 2008-05-09 09:03:49 »

Hi Jezek,

Any news on jbullet porting ?
Is still there issues for 2.66 or you have started on 2.68 sync ?

Hi, sorry for late reply. Currently I'm not doing any development on JBullet, I'm working on other things. But soon I will work again on physics related code which implies more porting

I think I'll look on AxisSweep3 and then convert everything already ported to 2.68, so the gap is not opening that much.
Beezlebub33

Innocent Bystander

 « Reply #82 - Posted 2008-06-07 13:01:38 »

I have been playing with the port, and it looks great.  I ported the HelloWorld.cpp application, since I'm interested in a non-interactive simulation for some of my work.  The port was trivial as I basically did the same change as in BasicDemo.  I can email it to anyone who wants it but it only takes about 5 minutes.

Running time is about the same for them, but it ends so quickly that it is not a good measure.  The good news is that the numerical results are exactly the same for the first 100 steps between Bullet and JBullet (100 steps is the default).   My question would be whether this in general would be true?   After 110 steps, they seem to diverge, with an X value creeping in with JBullet.   I didn't know if that was a numerical stability issue with this particular simulation, or a more general issue.

Thanks for JBullet in any case!
jezek2
 « Reply #83 - Posted 2008-06-08 06:37:50 »

I have been playing with the port, and it looks great.  I ported the HelloWorld.cpp application, since I'm interested in a non-interactive simulation for some of my work.  The port was trivial as I basically did the same change as in BasicDemo.  I can email it to anyone who wants it but it only takes about 5 minutes.

Nice to hear If you wish you can contribute it, just remember to put your real name in the copyright and use the ZLIB license header like other files. You can send me it to my e-mail (with subject that contains "JBullet").

Running time is about the same for them, but it ends so quickly that it is not a good measure.  The good news is that the numerical results are exactly the same for the first 100 steps between Bullet and JBullet (100 steps is the default).   My question would be whether this in general would be true?   After 110 steps, they seem to diverge, with an X value creeping in with JBullet.   I didn't know if that was a numerical stability issue with this particular simulation, or a more general issue.

I think there is no such guarantee, JBullet uses little different math functions, uses Java's HashMap, Java vs C++ can have little different float behaviour, not to count that different machines can have slightly different results, etc. There can also be some bug in JBullet
swpalmer

JGO Coder

Exp: 12 years

Where's the Kaboom?

 « Reply #84 - Posted 2008-06-08 22:39:06 »

Just tried the demo on Mac OS X with Java 6 and LWJGL fails to link:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.javaws.Launcher.executeApplication(Launcher.java:1281)
at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1219)
at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1066)
at com.sun.javaws.Launcher.run(Launcher.java:105)
at org.lwjgl.Sys\$1.run(Sys.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.<clinit>(Sys.java:101)
at org.lwjgl.opengl.Display.<clinit>(Display.java:111)
at javabullet.demos.opengl.LWJGL.main(LWJGL.java:51)
at javabullet.demos.basic.BasicDemo.main(BasicDemo.java:230)
... 9 more

I'm guessing that it's because there isn't a 64-bit image in the jnilib.  Java 6 on Mac is only 64-bit so all JNI must be 64-bit as well.

CypT

Junior Newbie

 « Reply #85 - Posted 2008-06-30 15:50:18 »

So , is JBullet physic deterministic?
jezek2
 « Reply #86 - Posted 2008-07-16 18:35:40 »

New version available on JBullet homepage.

Changes in release 20080716:
- Fixed bug in conversion between planes and point cloud
- Added DynamicControlDemo (contributed by Olivier OUDIN)
- Changed package from "javabullet" to "com.bulletphysics"
- Bug fix for constructor with pivots and axis in HingeConstraint (contributed by Olivier OUDIN)
- Converted to use JStackAlloc
- Converted to use output parameter when returning vectors, etc.
- Updated existing code to match Bullet 2.70-beta1
- Ported original version of HashedOverlappingPairCache
- Removed optional dependency on GNU Trove
- Changed to make single thread build by default
- Changed to use nanoTime
- Added HelloWorld demo (contributed by Clark Dorman)
jezek2
 « Reply #87 - Posted 2008-08-03 21:10:36 »

New version available on JBullet homepage.

Changes in release 20080803:
- Removed dependency on JStackAlloc in demos
- Added support for moving triangle meshes
- Optimized allocation of collision algorithms
CommanderKeith
 « Reply #88 - Posted 2008-08-04 01:56:19 »

The rabbits that you shoot out are pretty cool in the new Concave demo.  But I was wondering, are  the walls meant to do anything?

gouessej
 « Reply #89 - Posted 2008-08-07 10:52:43 »

When I launch the vehicle demo, I get this:

org.lwjgl.LWJGLException: Could not choose visual
at org.lwjgl.opengl.LinuxDisplayPeerInfo.initDefaultPeerInfo(Native Method)
at org.lwjgl.opengl.LinuxDisplayPeerInfo.<init>(LinuxDisplayPeerInfo.java:52)
at org.lwjgl.opengl.LinuxDisplay.createPeerInfo(LinuxDisplay.java:702)
at org.lwjgl.opengl.Display.create(Display.java:779)
at org.lwjgl.opengl.Display.create(Display.java:733)
at com.bulletphysics.demos.opengl.LWJGL.main(LWJGL.java:53)
at com.bulletphysics.demos.vehicle.VehicleDemo.main(VehicleDemo.java:609)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.javaws.Launcher.executeApplication(Launcher.java:1272)
at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1218)
at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1065)
at com.sun.javaws.Launcher.run(Launcher.java:105)

Is it possible to use JBullet with JOGL?

Pages: 1 2 [3] 4 5 6
 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.
 rwatson462 (29 views) 2014-12-15 09:26:44 Mr.CodeIt (20 views) 2014-12-14 19:50:38 BurntPizza (40 views) 2014-12-09 22:41:13 BurntPizza (75 views) 2014-12-08 04:46:31 JscottyBieshaar (37 views) 2014-12-05 12:39:02 SHC (50 views) 2014-12-03 16:27:13 CopyableCougar4 (47 views) 2014-11-29 21:32:03 toopeicgaming1999 (114 views) 2014-11-26 15:22:04 toopeicgaming1999 (102 views) 2014-11-26 15:20:36 toopeicgaming1999 (30 views) 2014-11-26 15:20:08
 LiquidNitrogen 33x basil_ 31x HeroesGraveDev 27x Rayvolution 27x BurntPizza 18x appel 17x kevglass 17x kpars 15x gouessej 14x Riven 13x Gibbo3771 13x Ecumene 11x Spasi 11x SHC 10x pitbuller 9x KevinWorkman 9x
 Resources for WIP gamesby kpars2014-12-18 10:26:14Understanding relations between setOrigin, setScale and setPosition in libGdx2014-10-09 22:35:00Definite guide to supporting multiple device resolutions on Android (2014)2014-10-02 22:36:02List of Learning Resources2014-08-16 10:40:00List of Learning Resources2014-08-05 19:33:27Resources for WIP games2014-08-01 16:20:17Resources for WIP games2014-08-01 16:19:50List of Learning Resources2014-07-31 16:29: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