You can share code between projects by having seperate visualstudio projects that create a managed library. just put the managed library into your assetsfolder. it live reloads as smoothly as when you edit just one script.
While I'll be the first to admit that we have some things that you can consider basic that don't work as well as they could yet, the perspective from inside the development team is that we have an enormous focus on improving what we have, and do not do "jump on new feature, and quickly move on and forget about it".
@reitzensteinm, We would love to fix your crash! If it happens in Unity4 as well, it would be great if you could file a bug, or give us some way to reproduce the problem. While we think using our serialization system makes a lot of sense for most games, we will always support people wanting to do things in their own way, and serializing your data with json should not be a problem. obviously, you crash and there is a problem, so we'd love to get our hands on that and fix it!
Bye, Lucas Meijer
The trouble is, these come at the expense of the basics. Not so impressive is that the only supported method for sharing code between projects is copy and paste.
The engine is six years old. I'm not kidding.
Unfortunately, frustrations like that are common. I adopted Unity expecting to be there for the next few years at least; however my experience has been lukewarm.
It's a shame, because it could be a fantastic engine if they'd concentrate on polishing what they've got. But I don't get the impression that's the roadmap.
Lets compare the coding workflow in Unreal Engine 3 and Unity 3:
In UE3 you play the game, find something you want to change. So you shutdown the Game/Editor and go to the code. You code in some immature language called UnrealScript (I think there is a complicated way to use C++ too). Then you compile. Then you startup the Game/Editor again (this is slow).
Also the engine APIs are one of the best software designs I've seen in a long time.
And, naturally, there's no way to turn it off. Strictly speaking there is but it requires restart of Unity, not just the game, to reload code. Which is basically the UE3 workflow you describe.
You're right though; there are quite a lot of good parts of Unity - which is why I'm sticking around for now.
But I stand by my assertion that their focus on headline features is troubling.
The way I see it, Unity's primary market are hobbyist developers or professional developers who are making casual / indie / 2d games, and usually those games are on Mobile. Those types of people want less headaches and they want to be able to do common stuff really really easily. They don't really care about the high end features.
Unfortunately, Unity has terrible built in support for 2d art. Unity also zero built in wrappers for common Mobile tasks like In App Purchases.
Jumping through hoops to get your source control setup properly is a huge knock against it as well. This type of thing should just work out of the box.
You can't cut and paste components between game objects. When importing sounds you have to change the import settings on each sound individually because they don't support multi-object editing.
I use Unity professionally as a casual / indie game dev and while it is the best game engine for me, I can't help but think it could be so much better.
Edit: You should also exclude the Library folder from your VCS, because with metafiles enabled the Library is just a local cache.
The problem is that there is no method to build libraries and share them between multiple projects, since all the code needs to be under the Assets folder of each project. There is no support for classpaths.
If you update the code in one project, you have to copy the file to the other. Or have some equivalent method of doing so outside of Unity.
Prior to Unity 4, people were using symlinks to accomplish this, but Unity 4 disabled them on Windows to match the OS X behavior (this is described in the post I linked).
That's not quite true; they should split their commit so they don't span trees. But it's not a requirement, it just makes things a lot nicer.
You'll find that the Unity folk disabled symlinks to avoid thorny edge-cases and are trying to figure out a way to give you what you want, including simply allowing sym links but generating a warning message (and Windows devs are suggesting using a junction link -- no clue what that is).
It seems to me that the best option would be for Unity to expressly support the inclusion of folders outside the project tree in projects.
The engine being "six years old" is somewhat beside the point. Major changes and improvements have been made to the engine have taken place, and in some cases these have been as dramatic as "from scratch" rewrites.
It seems you disagree, but many people have popped up in this thread with the same complaint, and workarounds they should not have to be making.
I have no problem with the 3D rendering part of Unity, it's fully featured and works well. Especially for the price tag.
Agreed that age being bad is a nonsense metric. I was saying the opposite - it should indicate polished workflow.
Ticked off at one feature is not an accurate assessment at all. If lack of classpaths were my only problem, I'd be in love with the product.
I don't think it's a bad engine either. I was just expressing my concern for where they're choosing to spend their effort.
I'm saying that given the age of Unity3D, the basics should be 100% nailed.
* Version control is a pain. We used Git (with Github) all the time but unitys meta files like to screw things up from time to time. Unity also uses alot of binary files (eg. prefabs) that could easily be replaced by some kind of JSON based format, making version control much easier
* its not cheap. If you want to use their killer multi platform features you will need licences for all platforms per seat, which adds up to quite a lot if you have several developers. When they release a new major version once a year, you will need to upgrade all your licenses (granted for a reduced price). Its a nice customer lock-in...
* its not very stable. At least under Windows it crashes alot on big projects
-the ability to launch a command line will be gone, because the command line could allow accidental damage to your system
-it will not be possible to minimize or maximize windows (if you can still call what they have turned it into "windows"), those buttons will instead have been replaced by a shopping basket, and a helper assistant button, respectively
-because top left is not exotic enough, the window close button will now be in the bottom left
-launching more than one window of the same application will not work because this is confusing
-the menu of a program will be on the right side of the screen. You'll have to hover the mouse there first, then wait for a list of helpful suggestions to slide into view, scroll through it with an awesome fluent scrolling animation, and then finally at the end will be the menu options.
-the file system is abstracted away. Directories are confusing, so the concept of directories is hidden. Instead it presents the files as if they're in one large "basket". Extensions won't be shown because those, too, are not understood very well by most users.
-the scrollwheel, middle and right mouse button, and keyboard shortcuts, are ignored, to unify the desktop better with touch interfaces of mobile devices
Also, wondering if there any competitive open source game engines to aide in learning.
Right now, though, our only programming openings are for Java server engineers. Sorry.
I do recommend learning Unity though, if that's what you're interested in. As Unity improves, its easy cross-platform deployment becomes more and more attractive to larger companies.
Next, asset loading but since you're on the web, ideally you'd have smarter on-demand streaming of compressed assets, rather than a 10-minute-long "Loading Game Assets" splash-screen page...
Next, user code. Uh-oh... I give up.
My impression is that the web browsers aren't quite there yet, in terms of support for all the necessary functionality required by a modern 3D video game. For example, IE doesn't support WebGL.
Edit: Note that it is possible to upgrade just your Unity 4 Pro license without upgrading the individual platforms. For instance, I have Pro iPhone/Android licenses, but currently working on a PC/Mac game, so I upgraded my Unity 4 Pro license and left the platforms for a later upgrade.
The Mali-400 on http://www.hardkernel.com/renewal_2011/products/prdt_info.ph... is already posting better benchmarks than the Tegra3 on the Ouya and the CPUs are the same core, this one slightly lower clocked. Sure the price is a bit higher than the Ouya for a dev board, but that's something you can buy right now. And they're only going to be better and cheaper by the time the Ouya hits, which if I might remind is still five months away if everything goes to plan. Might as well be eternity at the rate cellphone hardware evolves.
Really, all they've done is sold a case and gave us some simple interface mockups. Even https://en.wikipedia.org/wiki/List_of_Ouya_software is completely underwhelming and resembles the total lack of commitment other DOA consoles like the NGage had going for them.
You can expect Asia to be cranking out a new Ouya-like every few months. It's the software stack on these devices that is significant, as the hardware is now practically free. Hell, it's even open source: https://www.olimex.com/Products/OLinuXino/ *
(* Mali-400 GPU still not fully reverse engineered. As usual, GPUs are the FOSS barrier -- still, there's hope: http://limadriver.org/)
Maybe there will be Asia clones ones it's out and a success, but so far there aren't. Someone has to be first...
And if it can get even cheaper in the long run with that hardware - that's also not exactly something speaking against it.
You got maybe a point with the games, but even there I'm not too worried. I don't need lots of good titles for a console - give me a handful of fun titles and I'm fine. Even playing supertuxracer on TV would already be enough fun for me to consider getting it :-)
Yes, yes, I'm a curmudgeony and perennial Kickstarter skeptic - but what other stance can you take when a team that has never shipped any consumer electronics before promise to ship a profoundly game-changing piece of hardware on an extraordinarily aggressive schedule, at a shockingly low price?
The only thing that's hard about the schedule is that they're a new manufacturer and need to build relationships with all of their suppliers. NVidia would have given them a reference design that they could almost use unchanged.
As I understand it, the only departure from standard Android UIs is that there's a sort of in-game menu, and games may need to be modified to support that.
On iOS and Android OpenGL ES.
On Linux and Mac OpenGL.
They are just not bragging about it on the sales page.
What is new in 4.0 is D3D11 support, which is kind of a big deal since it opens new GPU possiblities (compute shaders, tessellation etc.). But all the other rendering APIs are still there and fully supported.