Unity or XNA for my hobby development project
So being a tools programmer in the game industry is fun, but I'm a little removed from the magic, for better or worse, and I'm starting to feel the itch to program a small hobby game on the side in my copious amounts of non-existing spare time.
I've narrowed it down to Unity or XNA, as C# is my chosen language. (Though I haven't completely written anything else off, I case someone knows of something I missed.)
I'm shooting for a simple turn-based tactical game, which colors my choices a little further.
+In game editor
+GUI editor built in
+my work uses Unity, so it could come in handy for work
+lots of built-in stuff, Physics, Particle Editor -- but these aren't necessary for the game, only if i ever get to the point where i want to make the game pretty would I want to ragdoll a character on death, or whatever.
-Expensive for a pro license (on sale now for $1200?)
-missing features w/o a pro license (like no render to texture, which I planned on using, and some basic geometry call functionality is missing)
-its not actually C#, its mono. (Unity 3 has better support for C# but isn't available yet)
+cheap pro dev license ($100)
+xbox development for pro license
+more familiar with the dev environment (Visual Studio)
+possible to put upon the 360's indie game listings (pipe dream really)
- less built-in features.
- less support in general
I have more experience with XNA overall, just from past tooling around with it, so that's what I'm currently leaning towards. I think if i was going for a more modern game style, Unity might be better, as it seems like it would be easier to crank out a 3d platformer or FPS with it, but for TBS, I'm not sure its worth the effort, and the dev license price difference is huge, if unity had full coding features I might be more inclined to go that way or if the license was in that more throwaway dollar value.
But I'm curious what other people may think, and what experiences they've had with the two dev platforms.
I've used both and would recommend going straight C#/XNA for a TBS game if you're already a programmer and doing this as a hobby anyway.
Unity is an awesome product for what it is but it is very opinionated on how everything is structured which is awesome if you're a designer with a bit of programming experience and just want to tool around until something like a game pops out but it can be rather constricting if you're a programmer with your own opinionated views on how things should be structured.
Either would be fine, so I'm not really anti-Unity here, but in your situation I'd just go with straight C#/XNA.
Yeah, Unity already drove me nuts with, "Everything must be a game object, and ALL game objects MUST have a transform."
I figure worse comes to worse, I could try porting it over once I get anywhere, TBS game logic would be mostly platform independent. But I also tend to have the bad habit of getting distracted by other things, so it may all be moot if I don't make any progress.
What about using FlashDevelop and one of the popular Flash game frameworks like Flixel or Flashpunk? Means you can deploy online, plus you can author UI and stuff in Flash rather than rolling your own GUI library.
You could even earn some bucks by selling licenses to the game from somewhere like Flashgamelicense.com, which I've got good experience with so far.
Flash is on it's way out. Unity is just a pig. So of the choices you present, XNA.
Apparently HTML5, in about a decade or so. No way Flash web apps and games are going away until there's a replacement for the distribution infrastructure (Flash game portals), all interest in current social games die out and there's a superior set of tools and libraries available that consigns Flash to the dustbin of history.
That's not happening until the most popular browsers have very close to equal support for HTML5. As of now, Canvas isn't really a realistic alternative yet. Might be some day, but with hardware accelerated Flash on phones and tablets, I don't see it happening any time soon. Apparently, there's like 800 million Flash users out there, and you can rely on Flash 10 to work the way it's supposed to work even if your user is on IE6. That's quite handy when you're doing social or casual games.
World's End Supernova
XNA may have less bells and whistles out of the box, but there's plenty of samples and documentation. Plus you can use the worlds best dev tools for free as part of it. Hooray!
Plus if you are a tools programmer already, whipping up your own shit to tack on with windows forms or WPF should be a breeze.
Frankly, I've been leery of using licensed engines. I've paid for two in the past ten years, and both times got fucked. The first when the company decided that the engine was no longer available for use (yay?) and the second when all the promised upcoming features ended up being released as a different license on a different version number.
XNA has MS behind it. Nuff said, really.
Just be aware that XNA has a lot of holes in it, things like text input and menus and other GUI widgets. At least it did when I was fiddling around with it around 2.0/3.0. I ended up going from Java/Java3D to XNA to finally settling on Python/PyGame/Panda. You might look into the Python stuff - it's a great language that is very easy to pick up. I don't think of Unity when I think turn based tactical game.
Unity has been awesome for us. If you really want to, you can create objects that are completely decoupled from their gameobject/component paradigm (although you probably don't want to do this).
If you want to be a game engine programmer, avoid Unity. If you want to make games it's a great choice ;)
With regards to C# and Unity or XNA... I've done a moderate amount of programming in ruby, python, and futzing around in processing, and I feel pretty comfortable with OOP concepts. I won't pretend to be a good programmer, but I have fun messing around with it as a hobby. I don't know any C#, however. I'd like to try to make some simple games.
Don't both Unity and XNA use C# for scripting?
What resources would you suggest for learning C# and either Unity or XNA?
Unity can use C# and other .NET languages for scripting. XNA uses C# for everything, not just scripting -- it's a regular .NET library.
I haven't used either, but you can find XNA resources at Microsoft's new App Hub, and the first Google hit showed a pretty nice tutorials collection.
For my own hobby projects (written in C# and targeting PC only) I'm moving to SlimDX. The SlimDX library wraps DirectX so you can issue D3D drawing commands in C#. And the new WPF D3DImage class in .NET 3.5+ allows hosting a D3D9 surface in a regular WPF Image control, so you can superimpose WPF widgets on that surface -- that takes care of text and GUI controls. Pretty neat combination, although I'll have to learn some Direct3D to use it properly.
Originally Posted by Khoram