I used to work at Rovio (the creator of Angry Birds). Everyone was telling the story of a talk given by Peter Vesterbacka, the head of marketing. When it was time for questions, a man from the audience asked what physics engine the game uses. Vesterbacka gives the correct answer, Box2D, to which the person replied with another question. "Why isn't it mentioned in the credits? And by the way, I'm Erin Catto, the creator of Box2D." To this Vesterbacka replied "Come talk to me after the show". Maybe that's when Erin was given the hoodie? Also, his name was soon added to the credits.
But one thing amazed us all. It was impressive that the marketing guy knew which physics engine was used!
gregsadetsky 24 hours ago [-]
To the larger point, do you know if Rovio did support/pay Eric in any other way than that hoodie?
Angry Birds generated $500M [0], supposedly.
I would also not be surprised if the Rovio developers, designers, testers, etc. who worked on this game did not get a share of that $500M pie - I actually assume they didn't.
But still, you know. Dare I say it - what about "fairness"? :-)
> I would also not be surprised if the [staff] on this game did not get a share of that $500M pie
That's almost certainly the case, yes. Anything like royalties / residuals is pretty much unheard of in gamedev. You do the work, you do the crunch, you don't talk about conditions, you don't talk about pay, you are actively hostile towards the 'U' word, your boss _________ ____ __ _____.
For your service, you get the chance to be in the credits, provided your service continues after going "gold"[0], of course. Then you get laid off which is actually a win because you get to leave the company without getting blacklisted. Please forgive the gentle hyperbole, it's illustrative.
The situation may have improved (slightly)[1] with ~actors as SAG-AFTRA was a growing influence in the industry some years ago. I'm a bit out of the loop on that side of things, though.
[0] not that anyone ships after going gold anymore
[1] improved slightly relative to "I'm the voice of Niko Bellic and I got paid in Famista cassettes" -- no this is not a true story, I'm actually not even a voice actor.
sosodev 23 hours ago [-]
I find it odd how we frame fairness in regards to open source software. He licensed his software as MIT. It says anyone can you use it without owing the author anything. So how is it unfair?
To be clear, I think that open source maintainers deserve much more, but I don't understand why we rarely inspect the licenses as the source of the problem.
nananana9 23 hours ago [-]
Well there's this little pesky thing in the MIT license:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
That's what he was asking for, a mention in the credits.
sosodev 23 hours ago [-]
He got his name in the credits. The question was if he is owed anything else. The contract he created says he was not. I’m simply suggesting he might need a different contract.
adamhartenz 20 hours ago [-]
I bet if you caught a homerun ball in a baseball game, you wouldn't give it to the kid next to you because "I don't owe the kid anything".
gamblor956 15 hours ago [-]
Depends on what the little kid intends to do with it. A lot of them collect MLB baseballs to sell them for cash.
MisterTea 5 hours ago [-]
> A lot of them collect MLB baseballs to sell them for cash.
You have evidence of this? Because it would be my first guess that the parent coerces their child to sell the ball.
20 hours ago [-]
laszlokorte 19 hours ago [-]
If the comment above is correct, he was only added to the credits after he had to ask for it after the fact.
So the ONLY thing the license asked for is to be named and that was supposedly violated. So a multi million dollar company can just violate a generous license and then after a fact cling to this exact license while arguing to not pay a single cent more than the license asked for. Alright...
left-struck 14 hours ago [-]
It’s not a contract, a contract requires an exchange of value both ways.
singpolyma3 21 hours ago [-]
Only if he wants to force something different. Which it seems he does not.
sharts 17 hours ago [-]
But only after $$ was made.
SiempreViernes 22 hours ago [-]
Since he eventually got the credit, your unfairness argument better build entirely on the damage the creator suffered by the delay of his credit.
LeBit 23 hours ago [-]
If I made 500M$ using an Open Source library and didn’t send at least 1M$ to the author, I would be an objectively bad person.
ploxiln 18 hours ago [-]
But you probably depend on over 500 open source libraries and tools, mostly ones you're not aware of. (Do you ever use a linux VM to run or just develop your stuff? Ever use git or curl etc? Did you know that tools and components in turn use other open-source libraries that you didn't pay for?) The main reason you use such things is so that you don't have to worry about this question.
sosodev 23 hours ago [-]
That’s a fine perspective, but the whole point of law is to guarantee outcomes. The license could easily say “if you make more than $500M, you must pay me $1M”. Why is that not an acceptable solution here?
guyomes 22 hours ago [-]
An interesting approach is the dual GPL and commercial license. This is used for example by the CGAL geometry library [1]. In this case, a user of the library has the choice of either paying for the library, or open sourcing the code of their software.
Have you ever taken part in a legal dispute? The "whole point of law is to guarantee outcomes" sounds like someone who has not.
The easiest, most "acceptable solution" is to obviously throw the oss maintainer who made your hundreds of millions possible a bone. It's not that complicated. Why you find this such an odd notion I find rather strange.
sillysaurusx 15 hours ago [-]
I find it strange you’re arguing for something beyond the licensing terms. Imagine if companies were run that way. "Hey, we did an especially good job mowing your lawn, so please pay us double. You have a rich house, you can afford it. Oh and if you don’t pay us, you’re a bad person and should feel bad."
This is exactly the same argument: you’re saying the open source maintainer who knowingly released their code as open source (and got famous for it being open source) should be paid way more than they asked for ($0) based on vibes. Society doesn’t work that way. Companies don’t work that way. And it’s baffling people are saying open source should work that way. He already got the fame and free publicity from being the maker of Box2D, which he wouldn’t have gotten unless he released it for free. You can’t get the major benefits of that and then ask for a million dollars because "kindness".
If you want to be professional, keep it professional. Otherwise everyone here saying that the company should feel bad are fooling themselves. You’re owed what you ask for.
Tipping culture has obscured this somewhat. You’re supposed to give more money if they do a really good job. But it’s that way so that the business can pay employees less money. Tipping, like identity theft, is one of the most successful marketing campaigns of all time: you’re considered a bad person if you don’t tip, and that it’s your fault if your bank fails to verify your identity. Both of these are bogus.
I tip, because 15% is the normalized rate. But it shouldn’t be our problem. It’s the company’s problem to pay their employees. And it shouldn’t be the business’s problem that they made a lot of money using something that was knowingly given away for $0.
dwaltrip 5 hours ago [-]
You sound cheap and a little scroogey. I’d buy you a drink if we were at a bar, help you relax a bit :)
nirvdrum 12 hours ago [-]
He didn’t ask for it, as far as I can tell. It looks like a Rovio customer asked how they treat downstream partners. I think that’s allowed under capitalism.
Be that as it may, plenty of engineers don’t understand the full ramifications of their open source license choice. Undoubtedly some, if not many, regret it afterwards. Companies change the terms or revoke licenses all the time. But, the dumb, naive engineer that gave their work away didn’t pay a lawyer to advise how to best give their work away, so screw ‘em.
If I made a boatload of money on the back of someone else’s work, I’d reward them. You wouldn’t. Neither one of us is legally required to. I’m not fond of taking advantage of people that don’t realize their worth. And I think the whole open source thing works best giving and taking, whether that’s code, money, or time.
But, this cutthroat approach to open source also hasn’t always been the societal norm. IBM and others made sizable donations to groups like the Apache Software Foundation back in the 90s and 00s and were more or less expected to do so. It seemed to me more a case of both sides agreeing a bunch of money could be spent on lawyers to iron out whatever terms or we could keep the licensing simple and have a gentlemen’s agreement on how to conduct ourselves. I’ve never heard of the Box2D guy so I hope that fame was worth something. It sounds a lot like being paid in exposure.
To your point, I don’t know how to codify a “leave a penny, take a penny” approach to open source and really don’t have the inclination to spend either the time or the money on a lawyer to figure that out. So, nowadays I just don’t release open source code anymore or, if I do, it’s AGPL just so I can protect my interests. I don’t think I’m alone in this. The camaraderie aspect of it has been supplanted by maximum value extraction and I don’t think that’s really sustainable. But between LLMs and an endless source of naive optimists, maybe this is fine.
tripzilch 9 hours ago [-]
> Imagine if companies were run that way
oh no, won't someone think of the companies
godwinson__4-8 5 hours ago [-]
"Society doesn't work that way" from the guy who says "the whole point of law is to guarantee outcomes".
Ok buddy. Why is tipping the analogous model? Do the economics fit at all? Why is it tipping that is teaching us about the economics of oss? I also don't give the grocery store extra money just for "kindness". Why not go with that one? You think an oss maintainer reflecting on someone making hundreds of millions with their work is analogous to a server waiting to see what you write down on the check? Is that it? Who is the business (not) paying the server in this case? The oss maintainer is both the emotionally manipulative server and the benefiting business owner? Because "exposure"? Or are you saying they are stupid for not acting more like a business in the first place, meaning the two should become the one? Why are you putting a human in front of me and making me come to some sort of pseudo-moral judgement? What does my contract say? Is that your point?
I just have to level with you and say your argument is deeply unimpressive. You also repeat maxims like "you're owed what you ask for" as if this is self evident. Then you call other people fools and say what other people can and can't do, all from this position of supposed hard-nosed knowledge of the the real world and how things work when it's pretty clear you have no idea what you're talking about. Trying to go from grandstanding about tipping culture (go off) to some self evident law about how humans should share rewards in something like oss is not obvious, despite your brilliant legal and economic insights.
And feeling bad is not something you can legalize your way out of. Another comment already touched on this. You don't seem to understand the point being made. No one is claiming there is a legal obligation or there was some company to company transaction. You know not everything in life is a contract, right? Morals and law are not the same. Your inability to acknowledge this basic fact feels pretty antisocial to me. I'm not really impressed by your shallow attempt at diagnosing society, or whatever your move from tipping to identity theft was supposed to prove... it seems to me underlying your replies is a resistance to feeling guilt. Not to psychoanalyze you but frankly, the degree to which you don't seem to understand how simple this is and instead seem to think this is some kind of emotional scam (why are you making me feel bad about giving you pennies on the dollar when the contract said it was free) makes me, at the risk of violating the HN equivalent of the Goldwater rule, simply wonder who hurt you.
CooCooCaCha 23 hours ago [-]
I find this whole conversation baffling. Licenses and contracts are not a replacement for being a decent person.
sillysaurusx 15 hours ago [-]
I find it baffling in the other direction. The whole point of licensing is to ensure you’re a decent person.
If you’re creating something new and you dare try to copy anything without a license, the pushback is unanimous and universal: everyone agrees you’re a bad person for even thinking of it.
This is the same argument in the opposite direction. By fulfilling the terms of a license, you’re ensuring you play by the rules. In fact, licenses are the only real protection that open source maintainers have.
So why diss on someone for following the license terms? This whole moralizing and tut-tutting is a weird branch of the convo.
tripzilch 9 hours ago [-]
> So why diss on someone for following the license terms?
you're being deliberately obtuse now. this has been explained clearly several times in this thread.
SiempreViernes 22 hours ago [-]
Sure, but contracts is the remedy society has developed to the problem that there are lots of indecent people around (not to mention that reasonable persons can disagree without being unreasonable).
singpolyma3 21 hours ago [-]
Only if you can afford to sue
gafferongames 21 hours ago [-]
You can't have a good contract with bad people.
jasonkester 13 hours ago [-]
I don’t think this is about fairness so much as a wish that developers would look out for their own self interest just a tiny bit.
We all get the full-court open source brainwashing during our early years of learning about programming, so it’s hard to ever step back and look at creating something from any other lens than “I should release this as open source”.
That’s the default, and anything less might get you grumped at by “the community”, so it’s the safest option.
But if your thing can be picked up by a megacorp and used as the basis for their $100M product, it might be in your best interest to carve yourself out a little clause that lets you capture some of that.
seshwanseb 2 hours ago [-]
I think box2d was zlib licensed at the point angry birds was made. Not that the sentiment changes.
mvdtnz 22 hours ago [-]
You seem to be confusing what is legally/contractually required with what is fair. Fairness, in general, isn't defined by law or contracts, although some laws try to codify it.
CooCooCaCha 23 hours ago [-]
Because there’s a clear mismatch between the value generated from Box2d vs the value the creator receives, and that’s common for open-source in general.
It would be common decency to donate even a small portion of that $500 million, even if the license technically doesn’t require it.
SiempreViernes 22 hours ago [-]
But if this expectation really were very common, what would be the harm of putting it in a licence?
CooCooCaCha 22 hours ago [-]
MIT is simple, open, and common which is a big benefit for indie projects, small studios, and anyone with limited legal resources.
It means there’s lots of info on the internet explaining how to use the license and they can be relatively certain they won’t accidentally fall into some legal trap or misinterpret the license. It also means there’s legal precedent around the license.
All that to say, custom licenses are actually a big issue for small players.
Yeask 21 hours ago [-]
[dead]
maccard 22 hours ago [-]
Box2d is open source. For better or for worse, Rovio are entitled to use it.
raincole 14 hours ago [-]
Personally, I define fairness as being able to use a piece of code however the license permitted. "Kindness" might be a better word.
left-struck 14 hours ago [-]
I think you’re confusing something being permissible with something being fair
tikotus 21 hours ago [-]
I don't know enough to give an answer. But I also wonder if Unity, using Box2D to empower games generating billions, paid him anything.
protocolture 14 hours ago [-]
>But one thing amazed us all. It was impressive that the marketing guy knew which physics engine was used!
Yeah that was my immediate take away.
ainch 23 hours ago [-]
As an ML researcher, I know box2d because it underpins many of the standard reinforcement learning environments (in OpenAI Gym) that we use to benchmark methods, like Lunar Lander or Car Racing: https://gymnasium.farama.org/environments/box2d/car_racing/
Thanks to Erin for such a useful piece of software!
erwincoumans 13 hours ago [-]
Great to finally see Box3D released! Glad to see some healthy physics simulation options, next to Jolt, PhysX and https://github.com/newton-physics/newton (using MuJoCo Warp, which I've been pushing at NVIDIA).
Bullet Physics author.
tkfoss 9 hours ago [-]
Hi, many thanks for amazing work you did! I was wondering, how does Box3D compare to bullet for game engine integration, if you had a look at box3d?
RobLach 1 days ago [-]
Box2D was a foundation for a lot of interesting physics oriented indie games in my day.
I wonder if the landscape is empty enough for a resurgence.
flohofwoe 1 days ago [-]
There weren't many free and open source 3D physics engines to begin with. The ancient forefathers are ODE, Bullet and Newton Dynamics (all first released in the early 2000s), then nothing(?) for nearly two decades until Jolt in 2021 and now Box3D.
Any addition to this small and exclusive list is very welcome :)
badsectoracula 1 days ago [-]
> ancient forefathers are ODE
I remember trying this back in 2004 or so when i was making my first real 3D game engine, but i ended up abandoning it because i was trying to use it on 64bit Linux and the source code had typecasts between pointers and (32bit) ints all over the place :-P.
That was fixed later and apparently the engine was used in a few commercial games during the 2000s and early 2010s.
Physx and Havok have been around for a while and dominate in the games industry for a huge class of games since they are integrated in Unreal and Unity.
On the web alone, there is also:
ammo.js, - a wasm port of bullet
cannon.js, - a hand rolled engine
oimo.js, - an older hand roll
rapier.js - a newer hand roll
jolt.js - a newer engine based on the engine used in horizon zero dawn.
physx.js/wasm - nvidia wasm port of physx
havok.js/wasm - microsoft endowed wasm port of havok (used in babylon)
I've been in the space for a while, and anecdotally, PhysX is the most robust, stable, and vying for speed with Havok which is slightly faster, but makes some different accuracy choices for speed.
ammo/(Bullet) was one of the earliest serious engines to make it to the web.
r.e. - Box3d - Erin Catto is pretty legendary in the physics engine scene for (box2d).. it has powered a huuuuge number of games that many of us have likely enjoyed...
So I'm definitely gonna keep my eyes on this one!
mangogogo 1 days ago [-]
i remember being hooked on Incredibots back when that was still a thing! that was how I heard about Box2D way back.
thederf 1 days ago [-]
Well hello random IncrediBots-remembering person! Such good times with an oddly wholesome and welcoming community.
This is so cool! I also tried replicating Incredibots during the pandemic, but abandoned it in favor of 3d stuff.
I remember every day as a kid logging on to find new vehicles, challenges, rube-goldberg machines. Some content archives are still online, but don't scratch that itch as an adult. For its time, Incredibots really nailed the sweet spot between expressiveness and ease to create content.
mangogogo 17 hours ago [-]
this looks like amazing work, i'll be checking it out. thank you
adamrezich 1 days ago [-]
Box2D is still pretty darn good! Definitely recommended for 2D physics game projects. The C APIs for Box2D and now Box3D are just so nice to work with.
actionfromafar 1 days ago [-]
I used Chipmunk2D a little back in the day, found it easier to use for whatever arcane thing I was doing.
turkeyboi 1 days ago [-]
Box2d was somewhat recently rewritten in c and the api is improved, fwiw.
Jeaye 1 days ago [-]
Yes! This is exciting to see. Erin Catto is such a cool hacker. Thank you, Erin, for sharing your code with the open source community.
There wasn't anything about determinism in the announcement, but I'd really love to see some more about that, too. Trying to use Unity's built-in physics to make a networked billiards game is quite troubling, when none of the clients can happily agree on what happened.
qwery 3 hours ago [-]
PhysX itself (assuming Unity still uses PhysX, but any major physics engine will be the same) is unlikely to be your problem, although it is possible that Unity compiles it with undesirable optimisations, or some aggressive multithreading strategy, etc.
In any case, it's quite likely that the physics simulation is not being initialised with identical state on each instance, so the physics engine -- even if it claims to be deterministic -- cannot be expected to arrive at the same solution across instances.
From the scripting layer atop Unity (et al.) you are essentially out of luck. You don't have the requisite control/access to guarantee the simulation input is consistent.
To expand on the "quite likely" variance in the simulation input, there's an unending list of possibilities, so just a couple of points: Unity is really really big and complicated.
The physics engine in Unity is not primarily there to be a FEATURE: physics engine. It's a general purpose collision system, and it's fundamental to Unity's whole world/scene/components. It's always running. Stuff that has nothing to do with what you see as your simulation can affect your simulation.
My unopinionated advice is: read Glenn Fiedler's classic networked physics articles[0].
My opinionated advice is: you're making a game where the physics is the whole game. It's also a very nicely contained problem space. Write your own physics simulation. It's gameplay code. Also, typical rigid body physics engines certainly can do a billiards sim, but they aren't actually that good at it.
I was looking for the same thing. There is a replay mechanism, so it seems to be deterministic. But with floating point physics, not across platforms. Though -ffast-math is unsupported according to the documentation, so maybe it is intended to be deterministic across platforms? https://box2d.org/documentation3d/recording.html
Physics simulation is a dangerous rabbit hole. Even if you focus just on rigid bodies and just physical plausibility there are plenty of open problems related to collision detection and collision resolution. Convex approximations and/or decompositions for geometry and hand tuning of solvers are the norm, balancing robustness and precision against speed.
MomsAVoxell 1 days ago [-]
Oh I'm so ready for this.. I've had some success with Box2D in the past, it's well and truly one of the top bits of F/OSS out there.
Box3D-based Spectre VR? It's so happening. (Shades of Tanarus ..)
EDIT: holy smokes, the transition to recording and playback in the Legend of California demo (Unreal Engine-based) is quite a jarring leap. If you at first get the impression things are quite basic, be sure to get into at least 18:00 into the demo video, it gets pretty wild .. recording and playback is awesome.
RubberSpoon 21 hours ago [-]
I think of Tanarus all the time, I rarely see anybody mention it.
MomsAVoxell 12 hours ago [-]
I do too, it was something I played solidly for about 6 months and then life changed and it kind of disappeared, but it was really a fun game. I’d love to play a modern version.
HexDecOctBin 1 days ago [-]
I do wonder how it compares against Jolt. Both seem to have a good pedigree, one from Valve and Eric Catto, and another used in Horizon games.
sph 10 hours ago [-]
I am excited for Box3D because it’s written in C so it will have ergonomic bindings for other languages such as Odin.
Someone tried to bind Jolt to C and then Odin, and the result is not very enjoyable.
1 days ago [-]
utopiah 1 days ago [-]
I'm a bit familiar with Rapier (and before that Cannon and Ammo) so how does it compare?
PS: FWIW made my own physics engine in 3D space just few weeks ago (and shared it here). OK ok ... it's just a 1-liner that brings an object down at regular interval but it's surprising how well it works already! I recommend you give it a go as from a learning perspective it's really fun.
nasso_dev 1 days ago [-]
> On the Valve side, Rubikon continues to evolve and Dirk has developed optimizations (similar to those in Box3D) in a new engine called Ragnarok. Look for that in future Valve games.
wait....
maplant 1 days ago [-]
Don't get your hopes up, it'll be used in deadlock's volleyball game mode
dom96 1 days ago [-]
It’s hilarious that I can’t tell if you’re being serious or not here
nitwit005 1 days ago [-]
They do have a bouncing ball of about the right size in the beta. I was thinking basketball though.
tapoxi 1 days ago [-]
Valve is working on a game codenamed HLX that apparently uses a ton of physics features. No idea what "HLX" means though.
rf15 23 hours ago [-]
Considering the years, that X must mean we're skipping straight to ten! Gabe is a former MS employee, so of course counting problems are cropping up occasionally.
cr125rider 1 days ago [-]
Valve
Box3D
3D
3
Hope!
InsideOutSanta 1 days ago [-]
Confirmed.
1 days ago [-]
jamesfinlayson 14 hours ago [-]
This hobby version of Rubikon isn't open source then is it? I can't find anything obvious.
jayd16 1 days ago [-]
Halflife 2D confirmed?
dude250711 1 days ago [-]
Confirmed, released, and already forgotten. It was called "Codename: Gordon".
6SixTy 1 days ago [-]
Day of Defeat Source 2.1 just a week away!
pezezin 17 hours ago [-]
Is DoDS still going? I played the heck out of it around 2008/9, it was the best online experience I ever had thanks to the fantastic community.
dom96 1 days ago [-]
Funny to see this just a few days after I’ve started building a Tron-like 3D game for the browser using Jolt[1]. So far Jolt is working pretty well but I’ll certainly be taking a look at this.
I'm a big fan of jolt because they have a more incremental way of snapshotting physics state which really reduces the amount of serialization and memory you have to do if you want to implement deterministic netcode.
ivanjermakov 10 hours ago [-]
Nice! JoltPhysics.js is quite finicky with typescript, having to have global variable Jolt of type Jolt and using that as a namespace.
tikotus 1 days ago [-]
Oh, nice! What a wonderful surprise!
Very easy to build, and quite small. A release build of the library is 916K (on macos at least). I have a game engine that compiles to WASM for web, and having 3D physics has been a challenge. 3D physics libraries tend to be large and hard to compile. I didn't try yet, but compiling this into a WASM library with emscripten should be easy, and it's likely small enough to be justifiable for a simple web game.
lukan 12 hours ago [-]
Have a look here, this guy maintains a wasm build of box2D
I remember reading about it in S&Box's (Source-2-based game engine) blog a while back - glad to see it released out to the public!
alex_suzuki 1 days ago [-]
Some years ago, I used Box2D from Python to get a couple of bodies moving naturally in a 2D plane, lightly disturbed by random impulses (like water lilies in a pond when it's raining). It was a fun project and working with Box2D was pleasant. Looking forward to using Box3D!
hdjrudni 23 hours ago [-]
Love to see this! I got started with Box2D back in probably 2006ish. Great to see Erin is still working on this stuff. Thank you Erin for the great libraries!
999900000999 1 days ago [-]
I went ahead and wishlisted his legend of California game. Probably won’t use Box3D, I’m not a fan of low level programming. I will look forward to the abstraction layers above it
minraws 1 days ago [-]
I feel like Box2D, was pretty good for the time, I didn't feel like it aged quite as well, mostly because where the solutions built internally went, but hoping box3d is great for it's time as well, would love lots of fun physics engines.
a1o 1 days ago [-]
Have you tried the latest Box2D (it started as the experimental Box2c)? It’s pretty good afaict. It may not be what you want specifically in your 2D game, as often people prefer more arcade-like mechanics than the physics it tries to deliver.
minraws 1 days ago [-]
I have been using an in-house/handrolled physics engine for the last few years so not sure if something has changed, but being able to modify the physics engine for arcade or other non-realistic style games was a big let down over time as well.
Basically optimizing your game for feel was quite hard with Box2D in general.
For a long time there wasn't deformers in Box2D (not sure if it's in there now), I hacked by own but I was a dumb 17yo and it was a horrid mess back in the day. Maybe AI could do better than the old me, but I gave up pretty quickly after not getting good results.
So basically lack of support for non-rigid bodies and lack of easy customisability made it not age well for someone like me.
But I know people who have had performance issues with it when building large maps/worlds as well so there are other issues.
Again all of these could have been fixed if they paid more attention to it, more dev time, but it was free so I couldn't really ask for more as a broke student.
And best part was you could run it on any hardware, I remember cooking up a small 2d demo on a rpi back in the day. Fun times.
a1o 20 hours ago [-]
ok, so you haven’t tried box2c, there are some posts about it in the blog
It became the current box2d implementation, now after version 3.0, it was entirely rewritten in C, it works differently.
minraws 20 hours ago [-]
I just fired it up, couldn't find anything related to soft body or deformers, neither does there seem to be anything regarding common issues around 2d platformer features character mover is sort of moving in that direction does seem to provide better controls over how I would setup slide/jump and stuff, but still seems like not a great choice for a 2d game that I would like to build.
The biggest issue with overly generalized 2d physics systems is ideally they should be built as patch works and provide escape hatches as the default, since in most 2d games you don't want real world physics.
Angry birds and early 2010 games were an exception when real world esque physics was the well interesting thing. Example Angry Birds, and Cut The Rope.
The above blog even seems to suggest that soft constraints were added recently which is well surprising.
I just feel like Box2D is very lacking albeit less now.
Let me give you an example imagine you want box2d to allow applying weird forces to player most of the time, but you also don't want to allow the player to clip through at certain movements and speeds to avoid weird cases where your character hits a wall and loses all momentum because that's how the physics should work, or it forces some rotational momentum which you have disabled...
Again in a lot of these character controllers you always end up with custom physics setups either way, and this is where I feel like box2d was especially lacking they seem to have worked on it with character mover, but it seems just very late.
Again I have used a lot of it in the past for making shitty flash style games, and it has been great but I honestly don't think there is a great use for it as it stands today in the projects I like to work on.
Ofc it's also largely because I find writing my own physics engine to be easier than picking up a library, and I would probably copy some of the code verbatim if needed for collision optimizations and stuff, but Box2D just feels a tad behind the times.
Again I am not a big time dev, and I am certain since Godot ships Box2D there must be a lot of users of it, but I just don't care enough at this point.
plopz 1 days ago [-]
The dev got scooped up by Blizzard right? Maybe thats part of why it feels like it didn't age as well, more attention to Domino and less to Box2D.
minraws 1 days ago [-]
I believe so. Box2D was one of the first good physics engines back in the day, well I learnt a lot tinkering with it.
neals 1 days ago [-]
Made look up some of my game stuff from back in the day, but the apps are not in the store (after 15 years, to be expected) oh well...
tancop 1 days ago [-]
i love that we went from bullet being the only real option for open source 3D physics to jolt, rapier, avian, nvidia physx and now box3d.
jnurmine 22 hours ago [-]
It was delightful to see the Dzhanibekov effect in the "gyroscopic torque" part of the video.
gafferongames 1 days ago [-]
Yeah this library is great. Use it!!!
ajdoingnothing 1 days ago [-]
I love your articles. Used some techniques almost 10 years ago for hobby projects.
Box2D/3D would make physics synchronisation a lot easier.
gafferongames 24 hours ago [-]
Thank you. I agree, Box3D is great! Maybe Erin will even add rollback determinism at some point. That would be a huge step forward for network physics rollback!
gafferongames 1 days ago [-]
Who the fuck is so petty to downvote this. Shame on you. This is a great library and Erin deserves your support. https://github.com/erincatto/box3d
yunnpp 17 hours ago [-]
Probably people who don't register the name. Your comment adds nothing and is the kind that always ends on the bottom of the thread, so you shouldn't take it personally.
Great website, though. I'm fixing my time step all day.
gafferongames 15 hours ago [-]
All good. I'm just trying to support my friend Erin.
dude250711 1 days ago [-]
> ...native physics engine (called Chaos)...
I have to say, based on those videos, that is one accurately-named engine.
jackling 1 days ago [-]
Glad to see the release, Box2D has some of the best code I've ever read.
It's interesting to see that Box3D was originally a fork of a physics engine made by Dirk. Dirk is one of the best presenters in GDC, and so influential in Physics Engine space, nice to see how he's continuing to push the latest and greatest forward.
LoganDark 1 days ago [-]
I first heard of Box3D when s&box loudly ripped out the Source 2 physics engine in favor of it (along with ripping out all cross-platform rendering code, etc). Nice to see it really is open-source now.
vardump 24 hours ago [-]
Great, now we can have Angry Birds in 3D.
shevy-java 21 hours ago [-]
> Chaos spinning rifle physics
Well - simply see it as a feature. A horror game
where poltergeists infiltrate objects. Stephen
King even wrote some book about that, and that got
a B movie too.
Also shame on the Unreal engine to have such huge
bugs and nobody fixing it. Still, I like the idea
of horror movies more. Finally poltergeist makes
a come back - it was a really scary movie when I
was young.
dym_sh 1 days ago [-]
Box>:3Drawr
Rendered at 18:09:37 GMT+0000 (Coordinated Universal Time) with Vercel.
https://kotaku.com/this-guy-created-angry-birds-physics-and-...
But one thing amazed us all. It was impressive that the marketing guy knew which physics engine was used!
Angry Birds generated $500M [0], supposedly.
I would also not be surprised if the Rovio developers, designers, testers, etc. who worked on this game did not get a share of that $500M pie - I actually assume they didn't.
But still, you know. Dare I say it - what about "fairness"? :-)
[0] https://gameworldobserver.com/2023/02/28/angry-birds-2-reven...
That's almost certainly the case, yes. Anything like royalties / residuals is pretty much unheard of in gamedev. You do the work, you do the crunch, you don't talk about conditions, you don't talk about pay, you are actively hostile towards the 'U' word, your boss _________ ____ __ _____. For your service, you get the chance to be in the credits, provided your service continues after going "gold"[0], of course. Then you get laid off which is actually a win because you get to leave the company without getting blacklisted. Please forgive the gentle hyperbole, it's illustrative.
The situation may have improved (slightly)[1] with ~actors as SAG-AFTRA was a growing influence in the industry some years ago. I'm a bit out of the loop on that side of things, though.
[0] not that anyone ships after going gold anymore
[1] improved slightly relative to "I'm the voice of Niko Bellic and I got paid in Famista cassettes" -- no this is not a true story, I'm actually not even a voice actor.
To be clear, I think that open source maintainers deserve much more, but I don't understand why we rarely inspect the licenses as the source of the problem.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
That's what he was asking for, a mention in the credits.
You have evidence of this? Because it would be my first guess that the parent coerces their child to sell the ball.
So the ONLY thing the license asked for is to be named and that was supposedly violated. So a multi million dollar company can just violate a generous license and then after a fact cling to this exact license while arguing to not pay a single cent more than the license asked for. Alright...
[1]: https://doc.cgal.org/latest/Manual/license.html
The easiest, most "acceptable solution" is to obviously throw the oss maintainer who made your hundreds of millions possible a bone. It's not that complicated. Why you find this such an odd notion I find rather strange.
This is exactly the same argument: you’re saying the open source maintainer who knowingly released their code as open source (and got famous for it being open source) should be paid way more than they asked for ($0) based on vibes. Society doesn’t work that way. Companies don’t work that way. And it’s baffling people are saying open source should work that way. He already got the fame and free publicity from being the maker of Box2D, which he wouldn’t have gotten unless he released it for free. You can’t get the major benefits of that and then ask for a million dollars because "kindness".
If you want to be professional, keep it professional. Otherwise everyone here saying that the company should feel bad are fooling themselves. You’re owed what you ask for.
Tipping culture has obscured this somewhat. You’re supposed to give more money if they do a really good job. But it’s that way so that the business can pay employees less money. Tipping, like identity theft, is one of the most successful marketing campaigns of all time: you’re considered a bad person if you don’t tip, and that it’s your fault if your bank fails to verify your identity. Both of these are bogus.
I tip, because 15% is the normalized rate. But it shouldn’t be our problem. It’s the company’s problem to pay their employees. And it shouldn’t be the business’s problem that they made a lot of money using something that was knowingly given away for $0.
Be that as it may, plenty of engineers don’t understand the full ramifications of their open source license choice. Undoubtedly some, if not many, regret it afterwards. Companies change the terms or revoke licenses all the time. But, the dumb, naive engineer that gave their work away didn’t pay a lawyer to advise how to best give their work away, so screw ‘em.
If I made a boatload of money on the back of someone else’s work, I’d reward them. You wouldn’t. Neither one of us is legally required to. I’m not fond of taking advantage of people that don’t realize their worth. And I think the whole open source thing works best giving and taking, whether that’s code, money, or time.
But, this cutthroat approach to open source also hasn’t always been the societal norm. IBM and others made sizable donations to groups like the Apache Software Foundation back in the 90s and 00s and were more or less expected to do so. It seemed to me more a case of both sides agreeing a bunch of money could be spent on lawyers to iron out whatever terms or we could keep the licensing simple and have a gentlemen’s agreement on how to conduct ourselves. I’ve never heard of the Box2D guy so I hope that fame was worth something. It sounds a lot like being paid in exposure.
To your point, I don’t know how to codify a “leave a penny, take a penny” approach to open source and really don’t have the inclination to spend either the time or the money on a lawyer to figure that out. So, nowadays I just don’t release open source code anymore or, if I do, it’s AGPL just so I can protect my interests. I don’t think I’m alone in this. The camaraderie aspect of it has been supplanted by maximum value extraction and I don’t think that’s really sustainable. But between LLMs and an endless source of naive optimists, maybe this is fine.
oh no, won't someone think of the companies
Ok buddy. Why is tipping the analogous model? Do the economics fit at all? Why is it tipping that is teaching us about the economics of oss? I also don't give the grocery store extra money just for "kindness". Why not go with that one? You think an oss maintainer reflecting on someone making hundreds of millions with their work is analogous to a server waiting to see what you write down on the check? Is that it? Who is the business (not) paying the server in this case? The oss maintainer is both the emotionally manipulative server and the benefiting business owner? Because "exposure"? Or are you saying they are stupid for not acting more like a business in the first place, meaning the two should become the one? Why are you putting a human in front of me and making me come to some sort of pseudo-moral judgement? What does my contract say? Is that your point?
I just have to level with you and say your argument is deeply unimpressive. You also repeat maxims like "you're owed what you ask for" as if this is self evident. Then you call other people fools and say what other people can and can't do, all from this position of supposed hard-nosed knowledge of the the real world and how things work when it's pretty clear you have no idea what you're talking about. Trying to go from grandstanding about tipping culture (go off) to some self evident law about how humans should share rewards in something like oss is not obvious, despite your brilliant legal and economic insights.
And feeling bad is not something you can legalize your way out of. Another comment already touched on this. You don't seem to understand the point being made. No one is claiming there is a legal obligation or there was some company to company transaction. You know not everything in life is a contract, right? Morals and law are not the same. Your inability to acknowledge this basic fact feels pretty antisocial to me. I'm not really impressed by your shallow attempt at diagnosing society, or whatever your move from tipping to identity theft was supposed to prove... it seems to me underlying your replies is a resistance to feeling guilt. Not to psychoanalyze you but frankly, the degree to which you don't seem to understand how simple this is and instead seem to think this is some kind of emotional scam (why are you making me feel bad about giving you pennies on the dollar when the contract said it was free) makes me, at the risk of violating the HN equivalent of the Goldwater rule, simply wonder who hurt you.
If you’re creating something new and you dare try to copy anything without a license, the pushback is unanimous and universal: everyone agrees you’re a bad person for even thinking of it.
This is the same argument in the opposite direction. By fulfilling the terms of a license, you’re ensuring you play by the rules. In fact, licenses are the only real protection that open source maintainers have.
So why diss on someone for following the license terms? This whole moralizing and tut-tutting is a weird branch of the convo.
you're being deliberately obtuse now. this has been explained clearly several times in this thread.
We all get the full-court open source brainwashing during our early years of learning about programming, so it’s hard to ever step back and look at creating something from any other lens than “I should release this as open source”.
That’s the default, and anything less might get you grumped at by “the community”, so it’s the safest option.
But if your thing can be picked up by a megacorp and used as the basis for their $100M product, it might be in your best interest to carve yourself out a little clause that lets you capture some of that.
It would be common decency to donate even a small portion of that $500 million, even if the license technically doesn’t require it.
It means there’s lots of info on the internet explaining how to use the license and they can be relatively certain they won’t accidentally fall into some legal trap or misinterpret the license. It also means there’s legal precedent around the license.
All that to say, custom licenses are actually a big issue for small players.
Yeah that was my immediate take away.
Thanks to Erin for such a useful piece of software!
Bullet Physics author.
I wonder if the landscape is empty enough for a resurgence.
Any addition to this small and exclusive list is very welcome :)
I remember trying this back in 2004 or so when i was making my first real 3D game engine, but i ended up abandoning it because i was trying to use it on 64bit Linux and the source code had typecasts between pointers and (32bit) ints all over the place :-P.
That was fixed later and apparently the engine was used in a few commercial games during the 2000s and early 2010s.
On the web alone, there is also:
ammo.js, - a wasm port of bullet
cannon.js, - a hand rolled engine
oimo.js, - an older hand roll
rapier.js - a newer hand roll
jolt.js - a newer engine based on the engine used in horizon zero dawn.
physx.js/wasm - nvidia wasm port of physx
havok.js/wasm - microsoft endowed wasm port of havok (used in babylon)
I've been in the space for a while, and anecdotally, PhysX is the most robust, stable, and vying for speed with Havok which is slightly faster, but makes some different accuracy choices for speed. ammo/(Bullet) was one of the earliest serious engines to make it to the web.
r.e. - Box3d - Erin Catto is pretty legendary in the physics engine scene for (box2d).. it has powered a huuuuge number of games that many of us have likely enjoyed...
So I'm definitely gonna keep my eyes on this one!
I spent many of my teenage and early adult years trying to replicate it in HTML5. Finally got the Open Source version of IB2 largely ported during COVID: https://github.com/JoshTheDerf/Incredibots-2-HTML5-Open-Sour...
I remember every day as a kid logging on to find new vehicles, challenges, rube-goldberg machines. Some content archives are still online, but don't scratch that itch as an adult. For its time, Incredibots really nailed the sweet spot between expressiveness and ease to create content.
There wasn't anything about determinism in the announcement, but I'd really love to see some more about that, too. Trying to use Unity's built-in physics to make a networked billiards game is quite troubling, when none of the clients can happily agree on what happened.
In any case, it's quite likely that the physics simulation is not being initialised with identical state on each instance, so the physics engine -- even if it claims to be deterministic -- cannot be expected to arrive at the same solution across instances. From the scripting layer atop Unity (et al.) you are essentially out of luck. You don't have the requisite control/access to guarantee the simulation input is consistent.
To expand on the "quite likely" variance in the simulation input, there's an unending list of possibilities, so just a couple of points: Unity is really really big and complicated. The physics engine in Unity is not primarily there to be a FEATURE: physics engine. It's a general purpose collision system, and it's fundamental to Unity's whole world/scene/components. It's always running. Stuff that has nothing to do with what you see as your simulation can affect your simulation.
My unopinionated advice is: read Glenn Fiedler's classic networked physics articles[0].
My opinionated advice is: you're making a game where the physics is the whole game. It's also a very nicely contained problem space. Write your own physics simulation. It's gameplay code. Also, typical rigid body physics engines certainly can do a billiards sim, but they aren't actually that good at it.
[0] http://gafferongames.com
EDIT: Clarified meaning about ffast-math
This is absolutely fantastic!
Box3D-based Spectre VR? It's so happening. (Shades of Tanarus ..)
EDIT: holy smokes, the transition to recording and playback in the Legend of California demo (Unreal Engine-based) is quite a jarring leap. If you at first get the impression things are quite basic, be sure to get into at least 18:00 into the demo video, it gets pretty wild .. recording and playback is awesome.
Someone tried to bind Jolt to C and then Odin, and the result is not very enjoyable.
PS: FWIW made my own physics engine in 3D space just few weeks ago (and shared it here). OK ok ... it's just a 1-liner that brings an object down at regular interval but it's surprising how well it works already! I recommend you give it a go as from a learning perspective it's really fun.
wait....
Box3D
3D
3
Hope!
1 - I’ve been sitting on this domain for years: https://lightcycles.io
https://github.com/snackdotgame/jolt-ts
I also have an open source character controller for it
https://github.com/snackdotgame/jolt-ts-character-controller
I'm a big fan of jolt because they have a more incremental way of snapshotting physics state which really reduces the amount of serialization and memory you have to do if you want to implement deterministic netcode.
Very easy to build, and quite small. A release build of the library is 916K (on macos at least). I have a game engine that compiles to WASM for web, and having 3D physics has been a challenge. 3D physics libraries tend to be large and hard to compile. I didn't try yet, but compiling this into a WASM library with emscripten should be easy, and it's likely small enough to be justifiable for a simple web game.
https://github.com/Birch-san/box2d-wasm
And Catto said, Box3D is very similar to Box2D.
For a long time there wasn't deformers in Box2D (not sure if it's in there now), I hacked by own but I was a dumb 17yo and it was a horrid mess back in the day. Maybe AI could do better than the old me, but I gave up pretty quickly after not getting good results.
So basically lack of support for non-rigid bodies and lack of easy customisability made it not age well for someone like me.
But I know people who have had performance issues with it when building large maps/worlds as well so there are other issues.
Again all of these could have been fixed if they paid more attention to it, more dev time, but it was free so I couldn't really ask for more as a broke student.
And best part was you could run it on any hardware, I remember cooking up a small 2d demo on a rpi back in the day. Fun times.
https://box2d.org/posts/2025/04/box2d-3.1/
It became the current box2d implementation, now after version 3.0, it was entirely rewritten in C, it works differently.
The biggest issue with overly generalized 2d physics systems is ideally they should be built as patch works and provide escape hatches as the default, since in most 2d games you don't want real world physics.
Angry birds and early 2010 games were an exception when real world esque physics was the well interesting thing. Example Angry Birds, and Cut The Rope.
The above blog even seems to suggest that soft constraints were added recently which is well surprising.
I just feel like Box2D is very lacking albeit less now.
Let me give you an example imagine you want box2d to allow applying weird forces to player most of the time, but you also don't want to allow the player to clip through at certain movements and speeds to avoid weird cases where your character hits a wall and loses all momentum because that's how the physics should work, or it forces some rotational momentum which you have disabled...
Again in a lot of these character controllers you always end up with custom physics setups either way, and this is where I feel like box2d was especially lacking they seem to have worked on it with character mover, but it seems just very late.
Again I have used a lot of it in the past for making shitty flash style games, and it has been great but I honestly don't think there is a great use for it as it stands today in the projects I like to work on.
Ofc it's also largely because I find writing my own physics engine to be easier than picking up a library, and I would probably copy some of the code verbatim if needed for collision optimizations and stuff, but Box2D just feels a tad behind the times.
Again I am not a big time dev, and I am certain since Godot ships Box2D there must be a lot of users of it, but I just don't care enough at this point.
Great website, though. I'm fixing my time step all day.
I have to say, based on those videos, that is one accurately-named engine.
It's interesting to see that Box3D was originally a fork of a physics engine made by Dirk. Dirk is one of the best presenters in GDC, and so influential in Physics Engine space, nice to see how he's continuing to push the latest and greatest forward.
Well - simply see it as a feature. A horror game where poltergeists infiltrate objects. Stephen King even wrote some book about that, and that got a B movie too.
Also shame on the Unreal engine to have such huge bugs and nobody fixing it. Still, I like the idea of horror movies more. Finally poltergeist makes a come back - it was a really scary movie when I was young.