He is creating an engine from scratch, so I'm guessing he would rather no use JBullet. To be honest wessles, this might be a really big undertaking, and you might be better off using JBullet. Even I (the person who hates using others' code) think its a good idea!

if your gonna implement it by yourself youd want to use some good algorithm. hopefully all or most of your shapes will be convex(other wise the hst wouldnt work sometimes), but look into some more trig and stuff

@jmguillemetteI am not using JBullet. I am just toying with the idea of a physics engine (small, albeit).

Nothing much. Just was working on implementing Newton's 3 Laws. I got the #3, and realized I need to be able to detect collision! I tried box-colliding, and it just is not good enough. I have been looking around though!

@opiop65I realize that this is a big undertaking. I just thought I would give it a try. In the end, I probably will go to JBullet, but so far it has been fun, and taught me some!

@Tim_wilsonThanks for the convex tippet!

@HeroesgravedevI can still learn a lot from creating some basic physics. Nothing like rotational momentum or anything, but simple stuff like bounciness(need collision, which brings us to this thread), friction (done), and velocity(done).

I plan to use JBullet, but it would be nice to toy with this idea. I have no hopes of making something close to the scale of JBullet. Also:

Quote

Just saying it's not worth learning unless you are going to use it.

I hope that you mean:

Quote

Just saying that it's not worth learning unless what you learnt applies elsewhere.

If not, I disagree.

Before I started coding, I was into hobbyist electronics. I quit due to it being way to expensive for me (cirquit boards aren't cheap!), but I left with valuable experience in audio-work, electricity, and wiring, which has helped me many of times in my computer-endeaveurs. Was taking up this hobby useless because I never made anything useful? No! I learnt a lot with it, most of which has helped me since. It definetely was worth learning basic circuitry.

I will NOT use this little experiment, but I will take more experience in vectors, etc. out of it.

I use the GJK algorithm personally. There's some complex vector maths involved but it's quite an easy concept to visualize and understand which always helps. There is a really good video (albeit long) talking through an implementation of GJK on the Molly Rocket site. I watched this once, taking notes, and never needed to look anywhere else again.

There's an extension (sort of) to the GJK called EPA (expanding polytope algorithm) which can work out the point of collision as well, which may or may not be necessary for your requirements). I currently use this but it has it's limits and I'll be moving away from it soon.

Before I started coding, I was into hobbyist electronics. I quit due to it being way to expensive for me (cirquit boards aren't cheap!), but I left with valuable experience in audio-work, electricity, and wiring, which has helped me many of times in my computer-endeaveurs. Was taking up this hobby useless because I never made anything useful? No! I learnt a lot with it, most of which has helped me since. It definetely was worth learning basic circuitry.

I will NOT use this little experiment, but I will take more experience in vectors, etc. out of it.

1. Read Realtime collision detection book. http://realtimecollisiondetection.net/books/rtcd/2. Play with code. Learn that stuff is hard.3. Read it again. Now you start to understand how complex things are.4. Play with code. After lot of work you have physic "engine" and you understand how things are done.5. Learn that one just don't write robust, fast, generic physics engines themself.6. Start to use physic engine.

Collision detection is fun and one should understand how these things work but its a lot of work.

I have said it a million times in this thread, and I'll say it again: I do not plan to use this! I will use a physics engine! I am just toying with physics, because it has been fun so far, and I want to see how far I could go!

When I am done (or more, burnt out) with this, I will move on to using a physics engine. As nerb put it: "Learning for the sake of learning."

Also,

Quote

Collision detection is fun and one should understand how these things work but its a lot of work.

For example, you can spend ages getting a system working that detects collisions for any shapes, but then you have an object travelling at huge speeds and have to get around that as well.

Perfect collision detection is not something that can be 'perfectly' done with a computer. It is one of several things that only work in the real world.And even close-to-perfect requires lots of work, and is slow for any real use cases.

Collision detection algorithms are really just "How can I cut out as much time as possible while still getting the same results".

By all means, learn it if you must, but don't expect it to be perfect or clean.

Finally, a thing to note is that 99% of players won't be able to notice the difference between complex polygon-polygon collision and simple AABB-AABB collision. (You may of course need to put multiple AABBs together for each model)

YES. Thanks for this explaination. Nice to know that my goal is not possible. Give closure on the subject.

I decided to quit on this experiment, since I have some other things to do, like adding physics to MERCury, or re-doing Horde(lost source code AGAIN). I learned a lot while doing it, but it is done. Thanks for the help everyone!

I would firstly give an object a square bounding box that begins calling a collision detection system. Then I would check if points on the line touch simple enough. You could take it a lot further but starting with that is a good way to build a framework.

I'd suggest just understanding why they work and not bother implementing any of them. Separating (hyper)planes is a easy (and why it's popular) but not very efficient. The Minkowski sum methods are much more interesting. The implementation details aren't very important...knowing that the methods exist is sufficient (and perhaps how the allow you to skip actually performing a full sum). This is useful because there are other (or special case) problems which the techniques can be applied. Like here: (http://www.java-gaming.org/topics/vectors-what-s-the-point/24307/msg/225743/view.html#msg225743) I'm logically using a Minkowski sum to reduce computation.

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