Questions regarding the quality of unity...

Hello,

I’ve been looking around the site, and unity looks pretty decent, however it appears to be more of a drag-and-drop type of engine.

Does unity give you low-level access when you need it? I’m not sure how “simplified” it is, but I’m looking for something that wont limit me graphically or in speed.

I’m a hardcore artist for fun, and an experienced programmer. The demos are decent but if I want to make a game with cutting-edge graphics, will unity limit me?

From what I have read, unity has a quick turn around time. How fast really is it though? Can you give me some examples of a game and how long it took to develop the code?

The javascript/mono.net thing scares me a little.

How much does mono affect the speed? I’m guessing mono is used on windows too? How much slower is it than microsoft’s .net?

Can you build equivalent games in javascript and C# with unity?

Has anyone used Truevision 3D before? How does it compare to unity. I have used it before, but I’m looking for better options.

I have built a multiplayer prototype in Flash 9 Actionscript 3 and taken it to the max where Flash just can’t handle it any more. Creating my own socket server and writing the script to talk to it was easy and enjoyable. I have experience writing client-server games, how difficult would this be to do in unity? The thing I hate most about desktop development is the language. I’m really disgusted with the bloated, unnecessary complexity of .NET, so I’m thinking I may look at the javascript version… hoping you guys are serious about the speed.

What are the major complaints people have with unity? I think I read something about GUI stuff is not that great…

Is the trial version the pro version or the indie version? The pro version is supposed to have C/C++? What does that mean exactly? That I can use C instead of javascript/C#? What about Objective C?

I think I read something about graphically limitations on the indie version? :cry:
I want to push my graphics as far as possible so that may be a problem.

I want to make sure that unity will work for me as I’m on a tight budget. Do you have a student discount for the pro version?

What is the Asset Server client license and do I need it?

The tutorial links are broken?

I look forward to hearing from you.

Thanks
-Jason

I think downloading the trial and spending a few days playing with it and doing a tutorial or two will answer a lot of your questions. While Unity definitely makes a selling point about how easy it is to use, it’s by no means a simple drag and drop framework for games. This is not the iMovie of game development, you can get under the hood and really mess with it. As corny as it sounds, the only thing that’s going to really limit you is your own ability.

If you’re the only one in your organization working in Unity, there’s absolutely no need for the asset server. Even if you are working with someone else, depending on your level of interaction, it may still not be worth it. (I frankly can’t understand Unity’s logic in charging for it at all but that’s neither here nor there)

It’s true. There isn’t much you can’t do. Until the latest revision, GUI design and network gameplay were weak spots in Unity’s feature set, but no more. If you’re as handy a programmer as you seem to be, there is no limit in the gameplay you can create. With Indy, you will be restricted in several trivial ways, the omission perhaps being render-to-texture, which if may limit some of the special effects you can use, such as glow and reflections/refraction.

The convenient thing about Indy’s restrictions is that they don’t limit your process. You can still design the game of your dreams, then when you want to polish it perfect and deploy it to Windows, get Pro.

I’m sure better men than I will answer your specific questions.

>Does unity give you low-level access when you need it? I’m not sure how “simplified” it is, but I’m looking for something that wont limit me graphically or in speed.
You can get as “low level” as you want really. You definitely won’t be graphically. You have support for pretty much everything you could think of. All the shaders in the world (you can use either Cg OR GLSL with ShaderLab), you’ve got real time shadows, render-to-textures support, particles, and a zillion other things I don’t feel like saying. Speed wise it’s great also. Unity Technologies did a really great job. The whole engine is written in C++. Scripting is lighting fast compared to any other scripting engine. For example, most commercial games use an in-house language or lua, python ect. for all game logic. In Unity you get to use JS, C# or Boo which are powered by Mono. This is much faster than any other scripting environment you’ll encounter. Also, in C# you can work in “unsafe” contexts so you can work relatively low level.

>I’m a hardcore artist for fun, and an experienced programmer. The demos are decent but if I want to make a game with cutting-edge graphics, will unity limit me?
Most likely not.

>From what I have read, unity has a quick turn around time. How fast really is it though? Can you give me some examples of a game and how long it took to develop the code?
Take a look at avert fate. That was developed by two people (both of who were interns, one was 15 years old and the other was a recent Uni graduate, I believe). I think that game was developed in 2 months (don’t quote me on that though :wink: ).

>How much does mono affect the speed? I’m guessing mono is used on windows too? How much slower is it than microsoft’s .net?
Mono gives you a speed increase since it’s faster than any other scripting environment. The actual engine is written in C++, so the critical code will be fast.

>Can you build equivalent games in javascript and C# with unity?
What do you mean?

>What are the major complaints people have with unity? I think I read something about GUI stuff is not that great…
That was before Unity 2.0 was released!! The new GUI support is fantastic and amazingly easy to work with.

>Is the trial version the pro version or the indie version? The pro version is supposed to have C/C++? What does that mean exactly? That I can use C instead of javascript/C#? What about Objective C?
The trial version is indie, but you can request a pro trial by emailing Unity Technologies.
The pro version also you use to use C/C++ plugins. See this for more detail Unity - Manual: Plug-ins
BTW, you can use Objective-C as long as you provide a C interface to it, since Mono can only wrap around C functions. You might do this by doing something like this (this is C++, but the same idea):

(2) Write a C "firewall" between C++ and managed code.  DO NOT depend on
structural equivalence, but use pointers (System.IntPtr) everywhere. 
This allows you to take advantage of virtual functions and (multiple)
inheritance in C++, and still invoke the C++ code from managed code. 
This is what Qt# did.

Example:
	// C++ code
	class Base {
		std::string _name;
	public:
		Base (const std::string name) : _name (name) {}
		virtual std::string name () const {return _name;}
	};

	class Derived : public Base {
	public:
		Derived () : Base ("") {}
		virtual std::string name () const {return "Derived!";}
	};

	// C interface
	extern "C" Base* Base_New (const char* name)
		{return new Base (name);}

	extern "C" char* Base_getName (Base* b)
		{std::string n = b->name ();
		// Note: malloc or CoTaskMemAlloc depends on platform.
		char* r = (char*) malloc (n.length()+1);
		strcpy (r, n.c_str());
		return r;}

	extern "C" Derived* Derived_New ()
		{return new Derived ();}

	// C# code
	public class MyLib {
		[DllImport]
		public static extern IntPtr Base_New (string s);
		[DllImport]
		public static extern string Base_getName (IntPtr b);
		[DllImport]
		public static extern IntPtr Derived_New ();

		public static void Main () {
			IntPtr derived = Derived_New ();
			string r = Base_getName (derived);
			Console.WriteLine (r);	// prints "Derived";
		}
	}

Also see the docs at the end of the aforementioned web page doc.

>I think I read something about graphically limitations on the indie version? Crying or Very sad
I want to push my graphics as far as possible so that may be a problem
Indie doesn’t allow you to use render-to-textures, movie limitation.

>I want to make sure that unity will work for me as I’m on a tight budget. Do you have a student discount for the pro version?
I think Unity Technologies offers an educational package. I’d contact them about it.

>What is the Asset Server client license and do I need it?
Only if you’re working with someone. And even then, it’s not necessary. The project I’m working with, we’re able to stay up to date between each other, without ever actually physically meeting. Of course, the asset server will make the process much more painless and quick!

I hope this helps! Unity Technologies should be able to provide better insight once Unite is over :slight_smile:

From the software-point of view the scripting part is not the bottleneck - but the engine itself. The engine is written in C++ for highest performance possible. Almost all AAA engines are using scripts for game-control and C++ for the engine itself. This means that the script-parts almost all the time are waiting for the engine to complete a frame. But only if they are fast as Mono - for example Python would block the engine because it is way to slow. From the hardware point of view the bottleneck is the graphic-card and not the cpu - the cpu almost waits for the graphic card to complete a frame. It is true that .NET is faster implemented then Mono (in some parts) but in this case both would wait on the engine to complete a frame and not the other way around. On the other side you have the (real!) platform independency of Mono.

To sum it up:
It is way more important that the engine is fast and not the scripting part.
It is more important that the graphic card is fast and not the cpu.

Thanks for the responses!

It is really encouraging, I’m going to start trying it out tomorrow. - Anyone know why the tutorial link is dead? Is it moved somewhere else?

What I meant is will there be any advantage to using C# over javascript? What do most people choose?

I wonder if there are any benchmarks that compare the speed of using an low level calls vs. scripting with drag-and-drop. It just seems like there would be a substantial difference, but maybe not.

Unity is amazingly easy and quick to use–on a par with Flash only more fun–but NOT because it’s simple or limited in its power. Asset import is easy (drag and drop easy) but it’s not a mere drag-and-drop authoring tool. It’s quick to use because it’s well-designed, reliable, predictable, and has a MASSIVE list of features, which actually do just what they claim, reliably and predictably. Did I mention reliable and predictable? You have to debug your game logic, not the underlying engine, because that engine has been tested to death. That’s why you don’t need source code for the engine itself. The things you need to “fix” at low levels in other engines (Torque-choo!) don’t need to be fixed in Unity.

The flexibility you have includes:

  1. A massive dictionary of powerful scripting commands (for JavaScript, C#, or Python/Boo) that give you more flexibility than would believe. It’s not in the same league as other “scripting” languages at all. Torquescript may not do all you need, and leave you digging into the lower levels. But Unity’s scripting WILL do all you need*. Start exploring here to get a sense of Unity’s scripting power–and then realize that you also have access to .NET (though you probably will never need it) on top of that:
    http://unity3d.com/support/documentation/ScriptReference/10_reference.Classes.html
    (And Unity’s included text editor links directly to the documentation, to help you make use of all that power.)

Scripting is not “drag and drop”–it’s text-based–but assigning scripts TO objects is drag and drop, and assigning objects TO script is drag and drop too. (Though you can use pure scripting for that and locate objects by name, tag, etc. if you wish.)

  1. *If scripting can’t cover something, then you can write C# plugins to extend (not replace) the low-level engine. (Plugins require Pro - but I don’t hear of much need for them other than to support custom peripherals.)

  2. You can write your own shaders in various ways.

  3. The GUI inspector links to the scripting in very streamlined and effective ways. Your script variables automatically become editor GUI items that you can tweak while your game runs, seeing the results in realtime.

And then you can export in one click to Mac, Windows (with Pro), Web (and later Wii). That won’t work so well in an engine where you have to tweak the low-level engine just to get your game to work.

Performance and quality are excellent. I’m sure you’ll see many more 2.0 examples posted in these forums soon. We’re talking faster scripting than Flash, and MUCH faster than you expect JavaScript to be. It gets compiled–nothing like slow JavaScript on a Web page. (You can use C#, but JavaScript seems to be the most popular.)

As for specific examples: my game Clockwork 360 (still in progress) took me two solid weeks start to finish. That included reading a few tutorials–I started completely cold, knowing nothing about Unity, and had a working game a day or two later, which was fully fleshed out not long after that. Most of the remaining time was spent tweaking and perfecting things: improving the feel and the fun factor, adding extra effects, etc. And that two weeks wasn’t just the Unity work, it included all the 3D modeling, textures, programming and debugging. Complete with very customized mouse control as well as keyboard control and even gamepad control. It was my first JavaScript work of any complexity, my first days with Unity ever, and my first real 3D game. (I’d done a 2D version in Flash and Director that I was unhappy with–and which ran far slower than the vastly-better Unity version.) Because I was in the worst part of the learning curve, I made some mistakes and had to re-do some stuff. It was still just two weeks of work, so tackling the same thing today would probably take me one week. (That’s to build one level. I’ve added two other levels since then, and each was done in ONE long sitting–including, again, modeling and textures and sounds. My dominoes level was conceived after midnight, and built before I went to bed! Rather late, admittedly…)

My game was not any kind of “best case”: it was not based on “what the engine could do” nor on any of the tutorials. It was a game concept I’d been working on for years, and was not willing to compromise on. I demanded that the engine bend to do exactly what I wanted–and it did. I used physics for some things, programmed pseudo-physics to get the right feel for other things, and it all integrated just fine. And ran nicely on old machines too.

Play here:
http://adamsi.com/clockwork

Unity makes very extreme claims–but it’s one of the rare software packages that lives up to the claims. There is no other tool that can remotely compare to it, on any platform (I have searched–some show promise, but nothing else delivers like Unity now). A year later I am still astonished by the product, and wishing I could shove other parts of my job aside and work with Unity full-time! One day… :slight_smile:

If cash is tight, the Indie version just dropped to $199. You can make money on Mac and Web/portal versions, and then afford the Pro upgrade to ship for Windows later. Graphically, you’ll have to do without realtime reflections and shadows, and post-processing effects like bloom, until you get Pro. But you can retrofit those goodies in later. Meanwhile, Indie can do some nice skybox reflections, rippling water, parallax mapping, lens flares, particles, full physics… lots of eye candy.

You won’t need the Asset server. Even without that server, you save a change in Photoshop or your 3D program, and your running game reflects the change instantly. No import step needed. (Though some 3D apps require an export step. I use Lightwave.)

I never had any complaints about Unity’s GUI power, but it’s now far better than it was. My only complaint was the lack of easy multiplayer support. And now they’ve added that. Oh–and Undo is very limited (might still be with 2.0). It’s never gotten me into trouble once I was used to that, but I do wish for multi-level Undo that applied to ALL operations.

One of the tutorial links is broken (the new site need a few fixes I think) but these links work:
http://unity3d.com/support/documentation/examples
http://unity3d.com/support/documentation/video

Try the free Indie trial. Most likely you can get your whole game re-built in 3D within the trial period with time to spare, and then $199 won’t seem like much. You have the skillset to get used to Unity quite quickly I expect. (I don’t–and I still dove in and got stuff done on day one!)

Not really. There was a poll a little while ago, which I believe had the majority of people using Javascript, but there’s no reason to do what the majority does just because it’s the majority.

Scripting isn’t drag-n-drop. D-n-D is used in the editor for some things, but scripting is just scripting. You’ll understand it all a lot better when you give it a try. :slight_smile:

–Eric

from the features/scripting page

==========================
World’s Fastest JavaScript
Unity’s JavaScript implementation JIT-compiles to native machine code. It runs 20x faster than Flash or Director based JavaScript, and the same speed as C# and Boo.

jason, use whatever you want and enjoy Unity! it’s a blast!

Does unity give you low-level access when you need it? I’m not sure how “simplified” it is, but I’m looking for something that wont limit me graphically or in speed.

Yes.

I’m a hardcore artist for fun, and an experienced programmer. The demos are decent but if I want to make a game with cutting-edge graphics, will unity limit me?

Highly unlikely.

From what I have read, unity has a quick turn around time. How fast really is it though? Can you give me some examples of a game and how long it took to develop the code?

Nothing will make developing a good game easy. Unity is probably as close as it gets right now.

The javascript/mono.net thing scares me a little.

It shouldn’t.

How much does mono affect the speed? I’m guessing mono is used on windows too? How much slower is it than microsoft’s .net?

Mono isn’t based on Windows. Mono is slower than .NET as far as I can see, but the speed of Mono isn’t critical in most cases.

Can you build equivalent games in javascript and C# with unity?

Yes.

Has anyone used Truevision 3D before? How does it compare to unity. I have used it before, but I’m looking for better options.

Not a comparable product. It’s essentially a library for Visual Studio languages, not a game-centric IDE.

I have built a multiplayer prototype in Flash 9 Actionscript 3 and taken it to the max where Flash just can’t handle it any more. Creating my own socket server and writing the script to talk to it was easy and enjoyable. I have experience writing client-server games, how difficult would this be to do in unity? The thing I hate most about desktop development is the language. I’m really disgusted with the bloated, unnecessary complexity of .NET, so I’m thinking I may look at the javascript version… hoping you guys are serious about the speed.

Yup.

What are the major complaints people have with unity? I think I read something about GUI stuff is not that great…

Undo doesn’t work properly (in Unity itself).

Unity doesn’t have a “real” debugger. What it does have (the editing environment is LIVE during testing and you can browse objects and see their properties) is, in some ways, better than a real debugger, but sometimes a real debugger would be REALLY nice.

Is the trial version the pro version or the indie version? The pro version is supposed to have C/C++? What does that mean exactly? That I can use C instead of javascript/C#? What about Objective C?

Trial version is Indie, but you can ask for a trial of Pro.

Pro C means you can write plugins.

I think I read something about graphically limitations on the indie version?
I want to push my graphics as far as possible so that may be a problem.

Then you’ll want Pro.

I want to make sure that unity will work for me as I’m on a tight budget. Do you have a student discount for the pro version?

You can work using Indie for now and upgrade later.

What is the Asset Server client license and do I need it?

It’s a game-centric source control system (think Subversion for Unity development allowing comparison of graphical assets etc. the way a text-centric system lets you look at code differences). Haven’t used it, but that’s what it is, so you can figure out the answer yourself :wink: It costs $500 extra on top of Pro … no advantage to buying it bundled AFAIK.

The tutorial links are broken?

Fixed now I believe.

I’ve started to dabble in unity, and I have to say I’m pretty excited… ok I can’t sleep… :stuck_out_tongue:

…earlier I was just staring at it, too excited to even move the mouse :smile:

Anyway, I was looking through the multiplayer documentation and I have a few questions.

I wrote a 2.5D multiplayer shooter in Flash some time ago (Similar to Stick-Arena but in 3D) and I figure I would port it to Unity. When I made the flash game I wrote my own socket server and just made up my own simple format for sending/receiving data. It was really optimized as I would send a single character such as “m” plus the direction the character wants to move, ie: “m1” (To send chat messages I would send something like “cUsername:Message here”). The other clients would receive the “m1” and guess the position of the character. My socket server would then calculate the transformed position and synchronize the clients with the real position every so often and let them correct themselves.

I really just skimmed the documentation but it looks like unity “simplifies” this by sending the full delta position/rotation if an object moves. Why? All calculations should be done on the server and only key presses/directions should be sent. It would slow down too much otherwise.

If I use a socket server made with unity will the server render the game too or is there a command line mode or background process?

I was thinking I might use my own socket server, but then I thought about taking advantage of unity’s physics :smile:. But how can I access the physics on the server? Could they be converted to bezier lines or something for fast communication? Sending position of a physics object would be really slow.

I know the multiplayer is a new thing for unity, but has anyone here gotten an multiplayer demo working? I’d love to see a sample game.

Thanks

Outside of the Unity-included example project, I think Castles is the only game out “in the wild” with network support.

I feel like I’m shamelessly plugging iteverywhere, but it really is the only one I know of…
http://lastbastiongames.com/CastlesGame.html

(note: the current version is crashing on a network game, but I’m hoping to have that fixed shortly)

Does your game use a client-server model or peer-to-peer?

I can’t get the web player to work, so I can’t view your game at the moment.

Are you using Unity’s socket server?

It’s peer-to-peer. I don’t do anything directly with sockets, just RPC’s (which is waht Unity 2.0’s networking is based on)

Do you mean there is no way to use client-server in unity? I thought I read in the docs otherwise? That would be catastrophic if unity didn’t support client-server… all my drooling would be wasted :cry: I knew it was to good to be true…

Maybe there is a low-level approach I can use?

My understanding of the docs is that client-server is a supported method and the networking is not BASED on RPC’s, it’s only one method. Wait for the UT guys to comment on this. :slight_smile:

Everyone here is very new to the built-in Networking with Unity because it has only been widely available for a couple days now. :slight_smile:

Best thing to do, Jason is just try some stuff. The documentation is there, you seem to have decent experience. I’d just noodle with it with a couple of spheres being moved around and see what you can do. :slight_smile:

Read this:

My impression from the above (and the rest of the networking docs) is that you’re basically pretty free to accomplish anything. The model out of the box is peer-to-peer (connected by a master server). You would probably want one client to be the “master client/host” though and keep that hidden to prevent cheating etc.

If you need true serverside behaviour (ie. MMO stuff) I think you have to roll your own master server - which is doable since UT has provided the source for the “standard” master server.

[edit] Or maybe not quite. I assume you could write a separate version of your project with minimized graphics and use that as your master server. On a good machine I see no reason why it wouldn’t be able to support a large number of connected clients.

As for the performance, I trust that UT has done a solid implementation - I doubt the network implementation is going to be a bottleneck. Our implementation on top might be though. :slight_smile:

You can use both authorative client - server models or non-authorative client servers.

How you implement your communication is up to you and depends on the game you are making.

Joachim,

How much is unity built for the client-server model? From some small tests I see that I can build the server in unity, however it doesn’t look like you fully support the idea yet. The closest thing to stripping down the server version is to remove the camera, but you still have the blank gui window sitting there.

Will there be support any time soon to run it in the background?

I also thought I read something about deploying the server on linux, is this available yet? I’m currently running it on a dedicated mac server, but I was planning on moving it to a linux server later on.