Links

Open Source 3D Physics Engines

Bullet Physics
ODE

Box2D Editor

Musicala
qrayon
BoxCAD
Physics Body Editor
PhysicsEditor

BlackBerry adaption of Box2D

BlackBerry Box2D

Java Port of Box2D

JBox2D

Flash Port of Box2D

Box2DFlash

DS Port of Box2D

Box2D for the DS

C# Port

Box2DX
Box2D.XNA
Farseer Physics Engine (not a strict port)
starLiGHT.Engine (includes a Box2D port)
Box2C/Box2CS

Javascript Port

Box2DJS
box2dweb

Delphi Port

Box2D Delphi

Games using Box2D

Caelum
Crayon Physics
iPhysics
Orb-7
Fantastic Contraption

Tutorials

Box2D C++ Tutorials
Video Tutorials for Box2D Flash
A Box2D platform game tutorial
What is Box2D?
Constraints tutorial with live Javascript

Books

Box2D for Flash Games

Tool Kits

Angry Ninjas Sling Shot Game Starter Kit

26 thoughts on “Links

  1. Hello,
    I am a programmer and i am going to make an IOS and ANDROID game that i will place on app stores and not free and i would like t use your approval to use the engine for a commercial purpose.
    Please reply for approval.
    Best Regards.

    • No approval needed. Box2D is free to use and is covered under the permissive zlib license. Please give credit to Box2D in your games.

  2. Hey,

    I am doing my final year project for college on Video Game Development and have mentioned Box2D as part of my research into different game development technologies. In the documentation I am required to reference sources (of course) and was wondering if it is accurate to reference Erin Catto as this web site’s author? (I assume it is but I’m a tad pedantic about this kinda thing!).

    Also, if asked, what date would you say the “About” page was written!?

    Thanks!
    Jay.

  3. Box2D is great physics engine. But I didn’t find enough books on it. There are some really good examples to learn, but they are all scattered randomly. Beginner need comprehensive step by step tutorials. I hope we will see number of good books on Box2D soon.

  4. Just wondering if the Box2D for C# has been updated because the link goes to a demo as the last upload for that is 2008. Given how much time has gone by I’m sure someone has updated it since than and it would be nice to know where an updated version is. I’m working on a space shooter and some 2D physics for space are what I have in mind to try with this. 🙂

  5. Hi, I have been working on a box2d level editor, It supports all the features of box2d and also hcan handle the textures and place them to the bodies.

    It can generate the texxture atlas as well as a xml that contains the world and all the mapping of the textures.

    It also can export the world to objective c using cocos2d so that you can place it in a ios projecto out of the box.

    The program is free and you can download it from

    http://www.estebon.mx/fable
    http://www.freefable.com

  6. Hi Erin. I didn’t found a better place to ask this question but you should remove it later in order to not create a discussion here (:.

    My question is regards to the b2RevoluteJoint position solver.

    As Box2D constraint solver implements the Full NGS, then the velocity constraints are solved first, then the positions are integrated with the new velocities, then for the position iterations the Jacobians and effective masses are recomputed. But I’m seeing that at the b2RevoluteJoint class you’re setting up the angle limits state at InitializeVelocityConstraint(), and only rebuilding the Jacobians for the position iteration depending on the limits state computed at InitializeVelocityConstraint(). Why aren’t you recomputing the angles directly from scratch instead of checking the old angle limits state? AFAIK is it possible that the position constraints are satisfied after the velocity constraints are solved. Has this something to do with the way you solve the constraints (e.g. direct enumeration) or am I forgetting something pretty stupid here?

    Sorry for asking this question here!!

    • Hi Irlan,

      I do work with the live angles since that is part of the rigid body transform. However, I don’t update the limit state in the position solver. It is possible to update the limit state and I encourage you to test this.

      I decided to honor the limit state from the velocity solver. Otherwise there could be an angular correction in the position solver with zero torque in the velocity solver. This seems inconsistent.

      Also, my tests showed this decision to have little consequence. Therefore I stayed with the simpler approach.

      Cheers,
      Erin

      • I meant basically discarding the old state. Updating the state in the position solver seems to be incorrect as that would be fighting with warm starting I think. But either way what you said makes completely sense. I’ll try this and check if changes something at least when solving the limit as a separate contraint in 3D. Thanks!

  7. письмо Erin Catto
    =================
    Created среда 04 Май 2016

    Hello Erin!

    My question is about collision of the bodies which also have constraints on them.

    A very simplified example: suppose we have two circles of the same mass and radius, having a distance constraint between each other and moving down with the same speed (with no gravity). The restitution coefficient is 1. Here is the demo I made using jbox2d library v2.2.1.1:

    https://youtu.be/amntSn4HQ_g

    Here is the source code I have used to create the scene:
    http://pastebin.com/0Te3SYqF

    When the bottom circle reaches the wall, the system just stops, instead of bouncing back to the upper wall.

    In general, the problem is: distance constraint calculations work fine and preserve the constant distance between bodies, but when one of these bodies collides with other objects, the kinetic energy of the system is decreasing, although it must be constant. How to fix this?

    I think, one must calculate the collision not for the one body, but for the system of the bodies, which have a distance constraint. Or is there some another approach maybe? Where can I read more about it? Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *