I've recently been working on porting over the Farseer Physics Library over for the zune. It is a full working physics library. It features:
Code:
* General
o Easy To Use!
o Support for XNA (XBOX 360 and Windows)
o Support for Silverlight (1.1 and above)
o Support for Managed .Net Languages In General
* Collison
o Concave and Convex Polygons Supported
o Multiple Collision Geometries Per Body
o Collision Categories For Complex Interaction Between Physics Objects
o Collision Callback Mechanism
o Multiple Broadphase Colliders: SelectiveSweep, SweepAndPrunde, BruteForce
o Line-Line, Line-AABB, and Line-Geometry Collision Methods
* Dynamics
o Joints
+ Revolute Joint (body to body or fixed to world)
+ Angle Joint (body to body or fixed to world)
+ Slider (Prismatic) Joint
+ Pin (Distance) Joint
o Force Controllers
+ Linear Spring
+ Angular Spring
+ Fluid Drag and Buoyancy Controller.
+ Easy To Build Custom Force Controllers (Explosions, Steering Behaviors, etc.)
* Support and Debugging
o Samples Framework With Samples Covering Most Major Engine Features. (XNA and Silverlight versions)
o Debug Viewer To View All Major Physics Objects (part of samples framework)
o User Manual (in progress)
I also ported over the examples so that developers can see how it is used and everything. It is very easy to use and I'm already making a game that uses it.
I talked with Jeff Weber(The creator of the engine) and he has uploaded the port onto codeplex with the other versions of it.
In the file you download the DLL is in the main folder so it can be easily accessed and to test out the demos you can just launch the .sln file and deploy to the zune.
NOTE: I commented out most of Demo6 because i couldnt get it to work properly for some odd reason.
Also I forgot to mention, In any of the demo's, if you hold the center button and either left or right it will apply a rotational force to the object you are controlling
I hope to see some games made with this!
Heres a video of the Demo's on the Zune:
All credit goes to Jeff Weber, The creator of the Engine
Wow, that engine is very damn impressive! It definitely doesn't like forces acting on alot of bodies. Even the demo game is fun!
Yea I realized that if you have to many collision happening at once the fps drops really badly, you can overcome this a little by adding in less edges when creating circles(Look at Demo 4, 5, and 8).
This engine saves time spent on creating collisions, and weird shapes, and that sort of stuff.
I especially like the collision detection, It's really precise and you can customize what happens when a certain object collides with another
Edit: Also I forgot to mention, In any of the demo's, if you hold the center button and either left or right it will apply a rotational force to the object you are controlling
LedZepp! You did what I really wanted to have.... wow! This is awesome! I used Farseer before... look here: This is what I started with Farseer before I got the Zune fever (Some of you might remember some of the graphics ):
Im glad you know a little about Farseer, Im wondering if you know the answer to this question then.
I asked it on the Codeplex discussions page but i havent gotten a response for it yet.
I was trying to use the FluidDragController just to test it out and mess around with it a bit. Im able to deploy it with no errors and everything seems fine, except that it doesnt show up on the screen anywhere, I thought that maybe the texture for it is just not getting drawn, but my object doesnt even get affected where the "fluid" should be. Heres my code for it, maybe you can see something wrong.
Code:
recBody = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 100, 100, 1);
rectangleGeom = GeomFactory.Instance.CreateRectangleGeom(physicsSimulator, recBody, 100, 100);
waterAABB = new AABB(new Vector2(150, 240), new Vector2(50, 140));
waterContainer = new AABBFluidContainer(waterAABB);
fluidDragController = new FluidDragController();
fluidDragController.AddGeom(rectangleGeom);
fluidDragController.Initialize(waterContainer, .5f, 3.3f, 1, new Vector2(0, 100)); // Demo's Gravity is (0,200)
physicsSimulator.ControllerList.Add(fluidDragController);
Actually, maybe the problem is the last line. I think i read somewhere that the ControllerList is supposed to be read-only, and instead im adding to it. That might be the problem, I shall go investigate. lol
I never used the fluidcontrollers.... but your code looks ok so far... I don't know if the last line is the problem though. Did you try to find a similar problem on the discussion page of the codeplex site?
Adding in a texture for it helped lol, I found it hiding in the Top Left corner.
Unfortunately its not acting like water, just as a rectangle that collides with everything, hmm...
One thing you might try (if you haven't already) is to turn off the broad phase collision detection. I have it from a pretty reliable source that that will increase your performance. I haven't tried it personally though, so don't blame me if they were wrong.
There is a new version (2.0) of the Farseer Physics Engine just so you know. It would be great to have an update for the Zune version. I don't know what changes need to be made for it to work, but I'd love to play around with the engine and maybe even make a game with it.