I still have a soft spot in my heart for BGE, and I really hope it becomes a serious engine someday. I went on to Panda because there were things I wanted that BGE couldn’t offer, and now I’m going on to Unity, possibly keeping Panda in my backpocket for now.
Here’s the pro’s and con’s as I see them.
Unity Pro’s vs. Blender
Asset Protection - This is huge. Like, omg huge. Dealbreaker huge. A game maker slaves over their assets, there should be a layer of protection that goes at least a little beyond double click. If someone has Blender on their computer, the .blend just shouts “Open me!”
Now, Blender does have a few script hacks, and also a full blown asset protection that works on Windows only atm (my hat is off to the creator of bpplayer), but in Unity, assets are protected right out of the box, and expect nothing from the user. .Net wasn’t working on my laptop for a while and Unity would still play. It runs on damn near anything.
Again, I’m more of an exception in this case because most people have all the .Net frameworks installed already, I have old systems. If I were to attempt a commercial blender game right now, Bpplayer would be the first thing on my list of resources.
License - This is also a dealbreaker. Unity allows you to sell your games with the free engine until a certain point, as I recall with the Indie license before it was free, it was something like 100,000 units (and at that point, if you don’t have more than enough money to buy the professional edition, you must’ve been spending it pretty darn fast). I could be wrong, this may be different now with the free version. I’m assuming the Indie license is the same, so please correct me if I’m wrong.
In Blender, it’s either have a nicely packaged .exe and a GPL game, or vulnerable assets and a technically legal game. On top of that, I still haven’t found a way to place your own icon into the top left corner of your game without recompiling the blender player- which, at that point, again you’re subject to GPL.
Web Player - Ok blender used to have a web player, I don’t know what happened with that project- but Unity’s web player is pretty badass. Panda3D is only now getting one, but the Unity Player download is speedy, and the install doesn’t even require you to restart your browser. Install- refresh page, you’re done. I can easily see this plugin becoming as ubiquitous as flash.
Speed - Unity is fast. Impressively fast. I’m getting framerates with scenes I wouldn’t have thought I could have gotten in any other engine.
Shaders - Another “correct me if I’m wrong” thing. Shaders in Unity run very fast- my experience with BGE shaders has been not to use them, they bog things down to a point of unplayable.
Instant Water - Unity has a readymade water material. That’s awesome. My last water test in blender involved rendering an animated video texture, writing code so that it rendered to texture, and a bunch of other things. Here it was, simple to apply. It may not be hydrax, but it gets the job done quickly.
Alpha - You all -know- the issues involving Blender GLSL Alpha. Let me recap. 14-15 steps?
Very Strong Documentation - Blender is also strong in this area, but Unity is probably stronger. Unity has a whole site, forum, and wiki dedicated to just game creation.
Out of the box server - Networked gaming is ready to go with minimal code. Yes, blender does have its own networked project, but this is designed to fit in.
In-game GUI - Okay, this is another big thing. One of the reasons I was poking through Panda3D was because of its directGUI api. The GUI’s I’ve seen come from Unity are -nice-. I haven’t gotten too deep but, what I’ve seen so far in the examples are just slick.
Blender Pros vs. Unity3D
Render to Texture - This feature is only available in the 1500$ pro version. Blender has it, but it’s still kind of crippled. You can’t have synched sound to video unless you try to program it in yourself somehow. Still, this is a really nice feature if you want to do things like mirrors, reflections, etc.
Python - Unity has Boo, but Boo only looks like Python, you can’t import python’s libraries.
Tighter Integration - No import/export process, it’s all converted at runtime. Downside is, with so many versions of blender flying around, this integration sometimes breaks when you move from one version to the next. Not Blender’s fault, it’s the nature of progress.
Morph Targets - Unity has them too, but you have to script them in, though I hear it’s not hard and the script is available. Right now, Blender supports native morph targets, and that’s pretty darn nice.
Conclusion
That’s all I can think of at the moment, there may be some things that need correction, but I tried to push forward only the things I was mostly sure about. In the end, Blender may be more suitable for university projects where the setting is more GPL friendly.
If you’re a serious game maker that wants to be able to -sell- your game at some point in the future, the web player, asset protection, and license are the main factors that just win you over.
The fact that Unity is specialized for this means that all the important pieces have been smoothed out, such easy packaging and distribution. When I first saw Unity I thought, “Wow, it’s like Blender but with all the things I’ve been needing.” Because Unity gets paid to be what it is, it has to make sure all the important parts are in check and working correctly- so all the biggest and most important aspects to building your game are there and solid.
Please don’t take this as knocking Blender, I’m still an avid user, for animation and some modeling (I’m holding out for Ngons now). Particularly its amazing UVmapping and blindingly fast workflow.
Seriously, the developers for the BGE are amazing. They’re pretty much doing singlehandedly what you would expect of a full blown company with a huge budget and backers.
It’s just the the crucial pieces are just not in place for an Indie to feel safe with BGE, and if BGE manages to champion itself out and become a serious contender in the game community like Blender has in the 3D community, I’ll probably come scurrying back. I just need a reason to give Blender the love. Right now though, I need to use the tool that lets me get what I need done right now.
– Raz