Is Unity for me? (502768)

I’m a hobbie/indie dev, and I’m looking into using Unity for my next game: a scifi flight combat sim. I’ve found answers to many of my questions, but there’s still a few features in my game that I’d like to know for sure if Unity can/can’t do natively. Would these be off-the-shelf features?

  1. I’ve seen force-based physics in the tutorials/docs/videos sections. What I’m looking to do is proper thruster-based movement, such that if a thruster on your ship gets damaged, it starts behaving erratically exactly how it should.

  2. Vehicle control, with seamless transitions between which objects you control. I want to walk around on my ship in 1st person, walk up to a control station, and now be flying the ship without a transition between the two.

  3. Voip.

  4. Client-server MP with match-making. I’ve seen plenty of networking capability in Unity, but where’s that line of what I get, and what I have to build?

If you can answer any or all of these, thanks so much! Hopefully…looking forward to using Unity! Should be done downloading now… :slight_smile:

Yep, Unity3D is mostly limited by your imagination and skill, if you have both, you can do just about anything (including your game) :slight_smile:

  1. There’s no “DamagedThruster” object built in to Unity as its a pretty specific piece. It would be a matter of minutes to implement one though.

  2. This is 100% up to your code. There’s nothing to stop you implementing it.

  3. VOIP isn’t native either. I’ve seen a few assets offering this, although I’m not sure they support the free version . Of course (again) you can always implement yourself.

  4. Client server MP is built in, but (last time I checked) it didn’t include matchmaking. You can roll your own or see whats available on the asset store.

Regards,

John A

Out of curiosity, if not Unity, what else are you considering?

On topic - you can do pretty much anything with Unity, but you will obviously need some programming skills, etc. When considering Unity, you also need to remember the massive Asset Store that’s available to you as well. There’s a LOT of content there to save you re-inventing a whole lot of wheels.

Thanks all!
@SteveJ - Otherwise…just rolling our own engine, or more likely, use a graphics engine like Ogre3D plus some other libraries, like RakNet, for networking and such.

Something I haven’t seen for sure yet is what extending the off-the-shelf Unity looks like. I’ve seen C# is in there (and some JS, but no thanks, lol)…but do you get to C++ if you go deep enough? Is Unity entirely in C#?

You don’t use C++ with Unity, aside from plugins, which are only really for rare cases where it’s not possible to accomplish what you need with scripting. Plugins are limited to Unity Pro (except for the mobile licenses) and need to be ported to each platform separately, though not all platforms can use plugins. You program Unity using C#, Unityscript (it’s not Javascript at all; it’s more like what ActionScript 3 would be if it had access to .NET), or Boo (which has a Python-like syntax).

–Eric

When I hear scripting (for right or wrong) I think of limited coding capability sitting on top of an engine. Am I extending/modifying the engine code itself (is that possible) with OO C#, or am I making scripts using C# which sit on top the engine, and are still limited by it? Or…some 3rd option, whatever that would be.

No.

Yes, although that’s somewhat misleading since there’s very little to be limited by. If there’s a feature that doesn’t exist, you can almost always make it yourself, or buy it from a third party if somebody’s already done it and you want to save time. In your original post, for example, #2 is not something you would find as a “native” function, it’s something that you program yourself. Unity doesn’t know how you want your game to work, only you know that. I think you’d be better served just by downloading Unity (it’s free) and looking at the demo projects and stuff.

–Eric

Great, good enough for me :). Everyone, thanks so much for the replies - it’s heartening to know the community is very active, as forums are a huge part of learning a new platform! Time to start dinking around…

1.) Unity uses PhysX for physics, and exposes a ton of things you can tweak. Thrusters are actually very easy, little more than a function call (rigidbody.AddForceAtPoint or something like that)
2.) Almost any gameplay idea you can think of is totally possible. It’s all up to you.
3.) VOIP is completely possible, as of version 3.5. There are currently two offerings on the store (shameless plug: the cheaper one is mine), both work in Indie AFAIK (I know mine does, and I’m fairly sure the other does as well)
4.) Unity’s networking is built upon the client-server relationship. If you want server-specific code, you check just check Network.isServer. If you have Unity Pro, you can also build a “headless” version of your game (that is, run the game in command line mode) if you want dedicated servers.