Use which version of Box2D

These days i make Box2D as a prebuilt lib to speed up compiling and remove warnings: https://github.com/cocos2d/cocos2d-x/pull/18422.

The Box2D git repo is here: https://github.com/erincatto/Box2D. The latest release version is 2.3.1, which is released 3 years ago. After that, there are many commits merged, but not a stable version is released.

@anon98020523 suggests to use latest commit of Box2D, and he always uses Box2D’s latest codes. But i am not sure since the author doesn’t make it as a release version.

I am not sure if we can do it as @anon98020523’s suggestion, because:

That’s why i create this thread. I will use latest commit if most developers agree with it.

  • use released version 2.3.1
  • use latest commit

0 voters

Really? Use 3 years old version? No thanks.

@zhangxm Why do you think that author of Box2D is like some company and producing software? So there are like “stable”, “beta”, “gold master” and other?
It’s just a repo on git, which sometimes gets updated… by one person… ahh common…

This vote makes no sense…

If so, then why he released 2.3.1? We can not make any assumption. I have created an issue to ask it: https://github.com/erincatto/Box2D/issues/478.

  1. So all fixed applied to Box2D since v2.3.1 is unstable?
  2. Opposite of that means that you sure for 100% that 3 years old v2.3.1 is stable?
  3. How do you think, If author of Box2D creates a tag release, this means that:
    • he mentally sure that its a stable release
    • he doing a lot of some real QA test’s in games and devices?
  4. Have you ever used Box2D for games?

The only person who can say for sure if the code is stable would be the author, hence zhangxm asking for clarification on github. If no answer is forthcoming then it would make sense to continue using the “stable” version, as defined by the author by nature of the tags in git. There are two official releases, the latest being 2.3.1.

zhangxm is absolutely correct to question this and not just use the latest development commit. If it’s going to be included in cocos2d-x, you can’t just include a third party project mid-development and hope for the best. Also, without a tagged release how can you go back and get the same version if needed? It would be buried in commits.

The guy working on box2d seems to have forked the whole thing to do development elsewhere so the master version probably is the “stable” version but a new release should be made. No assumptions.

Are you using Box2D?

Why not use 3 year old version? What is there in later commits that you need in your games?

I believe that any product bundling another product should ensure it has stable releases of that bundled product - else people using it may find issues because the owner of the repo has not yet determined it’s stable.

If you as an individual want to just grab the latest, then that’s obviously fine - but I wouldn’t want the version of Box2d to be updated to a latest bleeding-edge build every time!

1 Like

Can you answer these questions: Use which version of Box2D ?

As you asked:

  1. I don’t know. I do know that the last version said to be stable by the main author was 2.3.1,.
  2. You’re being silly.
  3. I don’t specifically know what the author does to determine stability - maybe he has a bunch of tests, maybe he just listens to feedback from people playing with the latest code base
  4. Yes

Sure - I have done.
Will you answer my question?

from the commits i see on git there is no particular reason to stay on the stable one.
I would also pleasently use a testing version of any software because i understand i would deal wth bugs in front of having new features, that’s the nature itself of github.
as long this is specified in the cocos build and it’s given choice to users there is no problem at all.
this is a point.
other point is if you want to pack as stable a unstable git.
on a concept meaning of things.
this really needed to be tested, if really commits from the stable version are stable themselves in your and user experience then there is no problem also given that you inform the users.
on git there are a lot of packages that are updated very slowly, packages made by one man only, packages that use old tech but they are so good that people still use them ect ect.
even if not tagged as stable many packages are just good and working in user experience that the tag as not that importance.
so my vote here is for using the last commit.
ciao!

I noticed that the latest commit fails under Windows as it cannot find libbox2d.lib, which I assume is related to removing the Box2D source code. However the .lib file has not been provided by the look of it.

Reverting to 3.16 solved the issue.

You should update 3rd party libraries if you use codes from github.

It was a new check-out, so it should have taken the latest 3rd party libraries. I’ll try again.

EDIT: Yep, the external libs version is now v3-deps-139.zip and the link errors have gone. However there is an assertion in the TMX tests reading TileMaps\iso-test.png, so I’ll stick to 3.16 for the time being.

@zhangxm so votes is for using latest commit. Why you don’t you use it?

My game will have instant crash when I run with latest cocos2d-x(currently using 3.16) because it’s not using latest Box2D.

Since that time some bugs have been fixed and some improvements have been made. I’m using that latest Box2D code for all my games and current one, for all this time and never got any problems.

So now you care what others have to say?

KAMIKAZEUA commented 8 days ago
I actually don’t care what other devs will say, I just need to use latest v2.3.2 Box2D, that’s it.
And I was sure that with this merge it’s not latest, that’s why I wrote.

It seems like you think cocos2d-x exists solely for your purpose and everyone else be damned. There is absolutely nothing stopping you from using the latest version of box2d just as you have been for years. I do not understand why you insist that everyone should use the same version as you.

I’m assuming you don’t do enterprise level development for a living because I’m telling you that this cavalier attitude of just adding something because you personally want it would get you fired. It jeopardizes not just yours, but everyone’s project.

Personally I would fully support moving to the latest version since it seems like the developer managing it doesn’t really support the project anymore, but as a fork that the cocos2d team can tag and at least add some sanity to the process rather than just keep adding the latest version whenever it’s updated. That’s just asking for trouble going forward.

This process now becomes harder, because you have to build it as prebuilt libs.

Also, to build it you need Mac only, as from git description of cocos2d-x 3rd party libs - “Windows is not supported yet”.

For those users no choice? Also, what if I have custom Box2D code?

I will after the poll ended (at the end of this month).

Also, as vote like 50/50 maybe you can do 2 options lib? In some config of cocos2d?
Like use: one 3y old or latest. Thats would be good solution for all people. And if they catch some bug with old version, like me, they can easily try option with latest Box2D, with fixes and improvements.