Commercialization of Farseer Physics Engine

Coordinator
Oct 28, 2012 at 12:00 AM
Edited Oct 28, 2012 at 12:02 AM

I am considering converting the engine to a commercial product. The core engine will remain open source and free, but the performance improvements, tools and all other parts will become a paid product. The reason for the commercialization is that the project has lost support over the years, and we no longer receive donations, despite the increased request for support - so another payment model have to be found.

I am developing this project by myself, and I used to have a bunch of talented developers help me out, but as life goes on, so have they. Commercialization of the engine will allow me to work part time on the engine and keep the engine going for many years to come.

Considering that we are used in most of the paid 2D games on the Windows Phone and Xbox platform, and we are even used in some of the top 30 2D and 3D games on those platforms, I don't think it is unreasonable to convert it to a commercial product.

Let me know what you think. I am open to suggestions and alternatives.

Oct 28, 2012 at 1:55 AM
Edited Oct 28, 2012 at 2:03 AM

I am in full support of this.

Looking at the donations page was disheartening. I;m still going to donate a flat percentage to Farseer.

Farseer is an amazing project; working with it has taught me so much about programming.

 

When you say you're making 'tools' as part of a paid product, does this mean that some formerly free things (such as CuttingTools, MarchingSquares) are paid as well?

Oct 28, 2012 at 11:11 AM

I'm totally in favor of you being paid for your hard work. Here are some thoughts (in no particular order).

Payment up-front is completely not going to work for indie developers. They'll use a different (inferior) product rather than pay $100 up-front.
Payment upon release of game not based on profits:  more would do this but still not too many. Many indie developers will be aware that they are not going to make any money from their game even if it's released. The thought of owing money on a venture rather than making any money will scare people off.

Payment owed if game makes a profit. Most people would be happy to do this. Especially if it's a one-off payment they can afford out of their first profit check. I'm personally annoyed that it costs money up-front to release a game through one of the "app stores" that apple, steam and the rest have. Paying for something that's actually a useful part of the product is much less annoying. A percentage payment paid quarterly would be slightly less popular, and you can never be sure people are paying their dues anyway. You would end up lurking in the app stores calculating how much people owe you and sending out threatening e-mails all day.

Different tiers of fee would be nice.
Indie Developers - $100 for the "Pro" library if your game makes you less than $10,000
Publisher based - $10,000 + 1% profit

Another option might be paid support but these days I think that is unlikely to yield any money when the question can probably be answered on stackexchange. This would also disconnect you from the majority of your userbase and your product might take weird paths to satisfy the small group of commercial clients. In the end the library becomes unsuited for the majority of products and ceases to be famous. I can think of a few 3d engines and other middleware libraries where this happened.

If the cost is very high, the chances that someone will fork or clone the library and give it identical features to your Pro version will increase.

I think your donation page suggests the fee that people will be prepared to pay. That is: $50 to $100.

Obviously I'm biased because I'm an indie developer with $0 in my pocket.

Oct 28, 2012 at 11:29 AM
Edited Oct 28, 2012 at 11:33 AM

I would first like to thank Genbox and the developers for their amazing work. I use Farseer extensively and am very satisfied with it. Digging a lot through the code I understand the amount of work and research that has gone into it especially considering that Farseer 2.0 was, from what I understand, made from scratch.


That being said if Farseer was commercial I would not have chosen it. Initially many physics projects start in the prototyping phase. Physics is hard and it's not clear whether a full-blown engine is useful. One thing is collision detection/response another is all the complex articulated bodies that a physics engine can provide. I'd say I spend 80% on the physics and 20% on the rest of the app. But once you hook an engine and do that 80% and it works well you don't want to go back.


There is, however, *a lot* of competition in the "free" physics engine world. PhysX, Havoc, Bullet, JigLibX, Jitter and of course Box2D and Chipmunk (and ODE, Newton Dynamics...). What bought me in Farseer was the elegance of Box2D, the power of .NET and the simplicity of XNA. But I could have gone with BulletSharp/MonoGame for example with little issues.


You say you would sell performance improvements. That's a tough one to sell. If my game is running slow and I buy something that should supposedly offer double speed I *expect* double speed. But most of the time my game is running slow because it's unoptimised, the algorithms are bad or it's simply impossible to implement full physics realtime. Judging on the questions on the forum most of the developers approach game physics for the first time (like myself), you don't deal with big studios who have engineers with many years of experience that can appreciate even 1% improvement or an algorithm that is O(logn) instead of O(n!). So if I don't get what I paid for I might get upset and that's bad karma. 

So how do you sell something in this enviroinment. Well look at the thriving Unity3D ecosystem - Addons!

So my suggestion is the following:

- Keep the core port of Box2D free and regularly updated. Perhaps it's not why all people will come to the engine but it's at least what they will use initially so user experience and satisfaction is very important. Once they do their physics prototype it's more expensive to replace it than to pay for improvements. This is the trick.

- Offer paid support and contracting services

- Offer Add-on packages relatively cheap with full access to code. Some things that are missing from the 2D physics engine scene:

  • Fluid mechanics - FLUIDS v2, http://www.rchoetzlein.com/eng/graphics/fluids.htm
  • Soft Bodies - Jello Physics http://walaber.com/wordpress/?p=85 or the Bullet implementation
  • Particles (simple raycasting scheme with collision detection will do), perhaprs integrated with Mercury if one wants
  • If you go with IOS/Android so we should go with Monogame/OpenTK for graphics why not move to  C#5 and async/await and Task.Parallel where possible and ditch Net 4.0/XNA 4 until XNA 5 comes out (if ever).
  • Multithreaded (multicore) solver and broadphase.
  • GPU OpenCL kernels for running on the GPU
  • Easier networking - (using lidgren), perhaps build a customizable implementation of synced physics with a server/client model with interpolation, resynching ecc.

So the way I see it it's not hard to replace Farseer (even if with a simple Box2D native binding). But each of the above addons (which will probably never be in Box2D as Erin Catto has said) is very very hard to implement from scratch and integrate into the engine. Hard means cost so buying a middleware, even if simple and to be used only as a starting point would be quite nice.


TL;DR: The core should be free for bonus good karma. I would buy addons for interesting stuff not found elsewhere.

Coordinator
Oct 28, 2012 at 12:12 PM
fnorder wrote:
When you say you're making 'tools' as part of a paid product, does this mean that some formerly free things (such as CuttingTools, MarchingSquares) are paid as well?

Some of those tools were contributed by users, and I would have to ask them for permission to license them, but they would also be included in the paid version. Nothing will prevent you from using the old version of the tools, but they would no longer be supported. However, I have other tools around such as a polygon mapper, world designer and more, that i would brush up and release together with the engine.

Coordinator
Oct 28, 2012 at 12:22 PM
codeimpy wrote:

I think your donation page suggests the fee that people will be prepared to pay. That is: $50 to $100.

Considering that we have around 100 downloads each day, I would expect that number to decrease if I were to aim for $50 or $100. Personally, I really like what Farseer has become, and I enjoy working with it, and I will always do everything in my power to spread the word, and get people involved with good quality physics that are easy to work with - in order to do so, I have to keep the numbers of downloads high, and that is why I like the idea of people paying the amount that they would like.

I know most of our users are indie developers or hobby game developers. If they release a game for free, or something that never gets popular (they took a chance), I would never ask them for any payment and I would just be happy that I helped out in some small way. However, if you already have a client and are making good money on the game/application, I think it would be fair that a small amount goes to supporting this project and its development.

Coordinator
Oct 28, 2012 at 12:55 PM
Edited Oct 28, 2012 at 1:06 PM
jerrysb wrote:

I would first like to thank Genbox and the developers for their amazing work.

Thanks Jerry. And thank you too! I've seen the excellent work you have done answering questions here in the discussions. I really appreciate it.

jerrysb wrote:

- Keep the core port of Box2D free and regularly updated. Perhaps it's not why all people will come to the engine but it's at least what they will use initially so user experience and satisfaction is very important. Once they do their physics prototype it's more expensive to replace it than to pay for improvements. This is the trick.

I love what Erin Catto have done with Box2D. Not only has his work a high standard and beautifully written algorithms, he is also a very talented developer and kept the engine clean and easy to understand. Even though I have improved on his code a lot over the years (Farseer is 20% faster than Box2D) and simplified working with it, I will always keep the core Box2D code free and open. I do try to push fixes and improvements upstream, and some of them have been accepted in the past 4 years, but I wish I could do more for him.

jerrysb wrote:

- Offer paid support and contracting services

- Offer Add-on packages relatively cheap with full access to code. Some things that are missing from the 2D physics engine scene:

  • Fluid mechanics - FLUIDS v2, http://www.rchoetzlein.com/eng/graphics/fluids.htm
  • Soft Bodies - Jello Physics http://walaber.com/wordpress/?p=85 or the Bullet implementation
  • Particles (simple raycasting scheme with collision detection will do), perhaprs integrated with Mercury if one wants
  • If you go with IOS/Android so we should go with Monogame/OpenTK for graphics why not move to  C#5 and async/await and Task.Parallel where possible and ditch Net 4.0/XNA 4 until XNA 5 comes out (if ever).
  • Multithreaded (multicore) solver and broadphase.
  • GPU OpenCL kernels for running on the GPU
  • Easier networking - (using lidgren), perhaps build a customizable implementation of synced physics with a server/client model with interpolation, resynching ecc.

I have provided online consultation for 2-3 projects in 4 years. People tend to believe that I'm too busy to help them out, but that is usually not the case. I have to prioritize what I'm working on since I have very little income, and were people to ask for help in exchange for a small payment, I would be more than happy to devote hours or days and help them out.

I've also done consultation 2 times where I traveled to their company and worked together with game developers in order to fix some issues. Last time was a local company i Copenhagen, Denmark that needed to upgrade from FPE 2.x to 3.x - I had their game up and working in 2 hours - they had been trying the past couple of weeks to do it. So as you can see, it is not a lot of work, but certainly well worth the time.

As for the features you listed, I would love to see an engine with all that included. Walaber's Jello Physics is actually based on FPE 2.x and I have been in contact with him to merge the changes into FPE 3.x, but the changes between the engines are simply too many and I lost track halfway in. Might take a stab at it again around Christmas when I get some spare time on my hands.

As for fluids, that is going to be implemented in FPE 3.5 - I have a working prototype of it, but it is really CPU intensive (mostly due to the contact solver in Box2D) and the algorithm is perfect for distribution on shaders in GPUs, but I have almost 0 experience working with GPUs, however, GPGPU libraries based on C# might come in handy here, at least to start with.

Edit:

It turns out that Micky Kelager from the FLUIDS project lives practically next door to me. I might try to contact him and see if he has any input on the SPH implementation I'm working on.

Nov 1, 2012 at 5:43 AM
Edited Nov 1, 2012 at 5:56 AM

I love how well the Farseer physics engine works. I took the time to switch from another engine and loved the results. I also can see all the time that it took to make the engine, but maybe there is another way to make money off of it then to charge the people who want all the features. If the game my team and I were currently developing wasn't free, I would gladly donate a percentage of the profit (if any) to you for being the core of the game. either way you go, thank you very much for the awesome physics engine!

Nov 8, 2012 at 2:24 PM
Edited Nov 8, 2012 at 2:38 PM

Hi Genbox, A big thanks for your effords! (the same goes for the other farseer contributers ofcourse)

genbox wrote:

I am considering converting the engine to a commercial product. The core engine will remain open source and free, but the performance improvements, tools and all other parts will become a paid product. The reason for the commercialization is that the project has lost support over the years, and we no longer receive donations, despite the increased request for support - so another payment model have to be found.

I am developing this project by myself, and I used to have a bunch of talented developers help me out, but as life goes on, so have they. Commercialization of the engine will allow me to work part time on the engine and keep the engine going for many years to come.

Considering that we are used in most of the paid 2D games on the Windows Phone and Xbox platform, and we are even used in some of the top 30 2D and 3D games on those platforms, I don't think it is unreasonable to convert it to a commercial product.

Let me know what you think. I am open to suggestions and alternatives.

I empathize with you; I really like and endorse open source software, but there's always this struggle between idealism and making enough money for a living and/or having enough time for more important things :/ As a heads up I just donated you some money ;)

codeimpy wrote:

Payment up-front is completely not going to work for indie developers. They'll use a different (inferior) product rather than pay $100 up-front.

I agree with this. An alternative (or addition) to the suggested tiers of fee, could be not shipping the full source for the free license (just compiled libs), and/or for the addons. Addons would be nice, as you can determine yourself what you pay for... no need for fluids? no need to pay either..
Also a percentage of profits above a certain threshold seems totally fair to me... just look at the money Angry birds brought in, Erin Catto doesn't mind, but he could have earned a retirement there ;-)...

genbox wrote:

As for fluids, that is going to be implemented in FPE 3.5 - I have a working prototype of it, but it is really CPU intensive (mostly due to the contact solver in Box2D) and the algorithm is perfect for distribution on shaders in GPUs, but I have almost 0 experience working with GPUs, however, GPGPU libraries based on C# might come in handy here, at least to start with.,/p>

You should have a look at this: https://www.youtube.com/watch?v=cTYZFoa5YYw&feature=plcp

He basically ported the fluid demo from jBox2d over to box2dxna, with some spatial partitioning to overcome spatial limitations of jbox2d's fixed grid and custom AABB queries. It seems to work quite well, maybe he has some ideas for you too. EDIT: he provided a short description here: https://plus.google.com/104301319754911100519/posts/4BaC8MJC7UP

Also I remember reading about optimizing SPH here (from page 72 on): http://directtovideo.wordpress.com/2012/03/15/get-my-slides-from-gdc2012/


Keep up the great work!

Matthijs

Coordinator
Nov 9, 2012 at 12:08 AM
Edited Nov 9, 2012 at 12:10 AM

Wow, I did not even know that jBox2D had any fluids, back when I last took a look at their port, they were still 30 revisions behind Box2D and had garbage collection problems. Thanks for letting me know.

The funny thing is that the implementation of SPH that is currently in Farseer, had the exact same properties. I have implemented it with circles as particles, and it was also limited to an area. However, I have now removed all AABB testing code, the boundaries of the area of effect and the signed distance field it used to have. It now works with SAT instead, however, it is really slow and I can only manage 700 particles at the moment.

If I get to integrate a second broad phase based on a spatial hash or similar, I expect that number to go up greatly. But at the moment, I have some troubles getting it to work correctly, and I hope jBox2D might have some of the answers I need. I will also take a look at the slides you linked to, thanks a lot for the resources.

Edit: Thanks for the donation too! I will take today off work and work on FPE instead.

Nov 18, 2012 at 12:36 PM

Hi Genbox.

I'm starting using FPE, I'm still a newbie but you're doing an amazing hard work with it. Considering donate for this project soon without regrets.

I still have a question for the future, when you said : "The core engine will remain open source and free, but the performance improvements, tools and all other parts will become a paid product.", can you explain what you mean with "performances improvements, tools and all others parts" ?

Thanks, and good luck with 3.5 developement !

Coordinator
Nov 18, 2012 at 1:13 PM

FPE is optimized for speed by redesigning small parts of the engine to be closer to the CPU cache. Inlining, pooling and other techniques have been built into the engine in order to improve performance. They are not part of the original Box2D distribution, and they are responsible for FPE actually being faster than Box2D, even when Box2D is written in C++, and FPE in C#.

FPE also contains a lot of self-contained tools to for example decompose concave polygons, convert textures to vertices and a lot more. Some of the tools were contributed by the community, and the original code will remain open unless the contributes are willing to put their code under the paid license.

So to answer your question; FPE will become a direct port of Box2D and will be kept up to date and improved for stability and flexibility. However, all the parts that makes FPE a powerfull engine will become a paid product.

However, have in mind that this is only speculation at the moment, and I wanted to hear the response from the community. I appreciate all the kind words and help I have received the past 4 years, but in order for me to work part time on the engine and improve documentation, samples and help on the forums at the same time, I have to sacrifice a lot of my holidays and weekends.

Nov 18, 2012 at 1:32 PM

Appreciate your fast answer.

Thanks for enlighting me on this subject.

Nov 20, 2012 at 5:50 PM

Finally got around to making a posting account.

I just wanted to say thank you for developing Farseer and, more importantly, maintaining it so well. I'm often impressed by the volume of helpful responses the developers make to aid users' debugging. Farseer has saved me a lot of development time between the engine and the discussions here but I probably would not have started using it if there was a pricetag attached. Now that my project is moving along and I'm more confident in its success, I'd like to promise to donate $100+ in a few months when we release. I think that keeping all or a segment of Farseer Physics free is essential to capturing new users and the focus should be on making sure they reciprocate later when they have the means.

Coordinator
Nov 20, 2012 at 7:02 PM

Thanks for the kind words.

I myself do my best to keep helping out on the forums. I must admit that I have been missing in action for quite some time, but back then, I tried to answer all questions. FPE have had (and still have) some really helpful users and I think every one of them are awesome for helping out :)

I wish you best of luck with your game! Remember to post it here, so we all can have a look at it.

Dec 1, 2012 at 9:17 PM

I'd pay for the commercial version. When you think of it, most products that use a physics engine need it as the core of their functionality. It's not something that you decided to include or not, but something that you either need or not.

Jan 1, 2013 at 3:12 PM

I think Microsoft should pay you. It´s a huge part of the games many delevopers use for free. We are paying developer licensens. I would have no problem that some of the money paid the Farseer Engine going and became part of the windows libraries.

Apr 22, 2013 at 4:48 PM
So I just jumped over here thinking about using Farseer for my next project and saw you are going commercial -- My first thought was; well I'll be going somewhere else - I like to work with the most up to date versions of things and usually look for items where I can get the full version for free when developing my games. Then once the game has been released for 3 months I take 50% of the profits and divide that up amongst all the engines I have used (not proportionally). None of the games I have released have ever made even $500 in the first 3 months... And most of my stuff I release for free; my job is in marketing - not developing; that's just a hobby.

Based on what I am reading here I am going to go ahead and use Farseer on my game; but I would encourage you to adopt a model where you release the full version for free for games where the profits are less than $1000; and Indie developers licence of 2% of the profits made up through the first 12 months after release (so if there is a prerelease it doesn't count towards that time frame). Then for developers that expect to make over $10K do a $100 base price + 2% of the profit or a flat $1000 licence (developers choice).

Of course use whatever numbers you want. I think doing something like this you will keep the community that has brought you this far happy and see a good enough return on your time to make it worth while...
May 26, 2013 at 11:07 AM
Edited May 26, 2013 at 11:11 AM
Latecomer to this thread, but having recently experimented with Farseer I'd have no problem with paying for it for a commercial title.

For me to do so, I'd expect to be able to download, try out, ship to testers, etc. a fully performant version of the engine along with my game right up until I'm ready to release, and then to buy the full version when I'm ready to ship (in other words, the engine is protected by copyright and its license agreement not by DRM).

If the price was much north of the $50 mark, I'd kind of expect comprehensive documentation at a superior quality than the excellent Box2D material that's out there, and e-mail support for a limited time (say 30 or 60 days, even if I could only raise a certain number of issues in that time, Microsoft-style - I should RTFM before pestering the author). Whilst Box2D's tutorials are easy to follow, if I'm paying "full price" I'd expect full service. I'd also expect to purchase once, not per game :)

Either way the engine is excellent, exactly what I needed. My only regret at this stage is that I didn't look to Farseer earlier, before scratch writing a bunch of collision / physics handling I've since junked in favour of Farseer. Excellent job and thank you!
Coordinator
Oct 10, 2013 at 7:47 PM
I'm unable to close discussions on Codeplex, so consider this post a closing post.

Reason: I've recently been hired full-time (with my dream job, woo!), which means the idea of a commercial Farseer Physics is no longer viable. I would like to thank everyone here for your input; it gives a lot of insight! Have in mind that this thread was only speculation - a way for you to give ideas and thoughts on what would happen if FPE were to go mainstream. For now, it will stay as a pet project :)