February 25, 2010 Leave a comment
There’s this wonderful physics based puzzler game called World of Goo, if you have the time, I encourage you to try it out. Buy it, it’s well worth it! I enjoy it by myself and I’ve played it with my six years old son – on the Wii we can play it together.
Anyway, a while back I decided I wanted to try make my own “clone” of World of Goo. At least copy the mechanics and the physics of the game.
Physics in Silverlight / C# / .NET
First of, I needed a physics engine. Previously I’ve worked heavily with Open Dynamics Engine (ODE) – a fully fledged 3D physics engine that I created a Delphi DLL wrapper for waaay back.
Rendering in Silverlight / Win32 / WPF
Previously, I’ve only worked with OpenGL, I’ve been a contributor to a OpenGL engine in the distant past. But for 3D graphics in Win32 / Silverlight, I decided to go with WPF – a decision I haven’t regretted.
Putting them Together
After a few days (literally) days of work, I was able to create a simple POC (proof of concept) that imitates World of Goo mechanics and physics using WPF for a renderer.
Have you ever seen the Simpsons episode where someone offers Homer goo and he replies “ooooh, free gooo!!!”? Well, if you ever have, you’re sure to realize that the only sensible name for a would be clone of World of Goo would be…. FreeGoo! So I created a project on CodePlex where you can download the source of FreeGoo.
If you’re interested in game development then you should download it and give it a try! Here’s a screenshot;
And Now for Something Completely Different – Silverlight
Since I’m a Silverlight fan and I’ve built FreeGoo using C# and WPF and FarSeer (both are available in Silverlight), one of my goals are to convert FreeGoo to Silverlight.
I’ll use this blog to outline my progress.
My first step is to handle the problem that C# projects/assemblies can’t be used in Silverlight and vice versa. That will be possible in Silverlight 4, but currently, it isn’t. What to do? Well, a tool of course – a tool that takes a C# project and emits a Silverlight project…
[Edit: Turns out the answer is Project Linker]