What 2D physics engine are you guys using?

Pretty much what title says. I’m using Farseer but not 100% happy about it.

Any good alternatives?
Thanks!

XNA Platformer Starter Kit… lol…

http://xbox.create.msdn.com/en-US/education/catalog/sample/platformer

Custom

This allows me to use the bits I want and none of the bulk attached…

Can recommend a good book if you ask.

1 Like

A complete engine takes some time to get used to but I don’t think it’s a good idea to start from scratch, unless for very simple things like Pong. However if you are using out-of-the-box Farseer v3.5 I suggest to move to an older version.
I am using my own fork based of Farseer Physics Engine.
http://community.monogame.net/t/aether-physics2d-release-v-1-0/

1 Like

I have this one, It’s very good and simple with code in C++.
https://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

For 3D I have the following, the language used is more towards Linear Algebra Math with no much code but it’s still a good read.
https://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869/ref=pd_sim_14_9?_encoding=UTF8&psc=1&refRID=0XKSJHJ4R666K6EEXWS2

1 Like

I have one that includes C# code :sweat_smile:

EDIT

I have that second book

1 Like

I totally agree and gave the same advice to someone else here in the past :slight_smile:

Why? What’s wrong with the new version?

Thanks for sharing!

Anyway I think I solved my problems with Farseer, apparently it is optimized for small body sizes (0.1 - 10) and got a cap limit on velocity etc. This cause a lot of voodoo if you try to debug without knowing these limitations. :sweat_smile:

Another thing that left a really bad taste in my mouth was the fact that it goes crazy if you put two bodies directly on each other. I solved it with a silly patch that adds small randomness to new body positions, but it felt really wrong that they didn’t handle this properly since its a very common use case for games to spawn multiple objects on the same position (especially for game editors etc).

With that said, Farseer still feels like a good choice for 2d physics in C#.

Ah VooDoo, I so miss you…

[Kudos if you know what I am on about]

If you are working from source you absolutely must patch the following two.

There are other minor fixes & perf optimizations on the commit list.

I had a similar problem, working with small bodies. I fixed it by adjusting a few values in Settings.cs

Yes, that’s a problem I have too, but I don’t see how to solve it. It makes sense from a physics perspective. Maybe the editor can query the ContactManager and disable dropping bodies on top of another, or catch & fix collisions before the next .Step(), I don’t know.

2 Likes

No idea who VooDoo was, but I’ll play along. :sunglasses:

My randomness solution works pretty good, only caveat is a chance of 1 / (1,065,353,215 ^ 2) to crash every time two objects spawn at the same place (I add a different random value from 0-1 on X and Y axis when placing objects). And if someone is that unlucky to hit the exact same spot, the game crashing is the least of his problems…

Thanks for the links, the first fix sounds pretty important if it really means I’ll be missing some contacts when destroying objects…

1 Like

VooDoo by 3DFX

In my opinion the summit of graphics cards era…

lol I though you were talking about the username of some MonoGame veteran or something like that :sweat_smile:
I remember the Voodoo cards, what so special about them though?

1 Like

Did they run Crysis?

2 Likes

I believe they could :stuck_out_tongue: in 240p perhaps :stuck_out_tongue:

1 Like

I’m using Farseer but have had to dig into it multiple times to fix issues and won’t be using it again. I did some simple Minkowski Sum stuff during a Ludum Dare and was really happy with how easy it was. Handmade hero has some relevant episodes (maybe this one https://hero.handmade.network/episode/code/day050#227).

1 Like

Glad someone pointed out the very reason I choose to start from scratch…

I’ve used farseer in the past and was pretty happy on it’s ease of use.
At the end of the day, like in most scenarios, you have to understand what level of compromise you are ready to accept and where.
Unless you are making a physic simulation intensive game, farseer should be good enough.
Otherwise i would consider writing a specialized engine, maybe taking what’s good from farseer and dropping what you don’t like.

Let’s not forget about Farseer’s new embodiment, https://github.com/VelcroPhysics/VelcroPhysics.

Oh boy I like that name hahahaha

Is it cooked enough to be used in a game? Are you using it?