Before I choose to build using a new feature, I'd love to see a clean breakdown of which features "cost" more (performance) on devices. For instance, does "real time global illumination" kill the framerate on iPhone4?
If there's already a checklist like this somewhere, please share with the community, as I'm sure there are many other Unity3D devs here.
Every once in a while I'll get it in my head to make a 3D game, rather than a 2D one. But I don't want to spend the time building any assets - not only am I bad at that, but I also don't know if my idea is good until people try it and give me feedback... which requires a working prototype.
What I'm looking for is a game engine (asset library?) that lets me build my town by placing buildings, and dropping in my main character - and then I can just run around the town, opening doors and talking to people. Tons of tons of game have dialogue, medieval fighting, assassinations, kill moves - I don't want to have to spend time making any of that. I want to test my game ideas and see if they are fun. I want to write the parts that are unique to my game, the story and the decisions you make. Then, later, I can go back and iterate on assets.
Both game engines now have Asset stores, but I'm not sure the level designer is to the point where I can quickly iterate over my ideas.
There are (at least) three levels of development in a game: engine, gameplay, and content. Depending where you draw those lines, Unity gives you the engine and you provide the gameplay and content. It sounds like you're interested in just working on content, in which case there are tons of games that let you do more or less what you describe through modding (eg Skyrim).
It's not for FPS's (although it's been used for that), but Starcraft 2 has really impressive modding features. I've been third person action games, arcade shooters, 2D platformers, and tower defense titles. There's even a popular soccer game where each player is a unit from Starcraft.
The Unity asset store has libraries as well as graphical assets. I haven't looked in a while, but I imagine someone may have written a simple game engine to do what you want that you could buy if it isn't too costly.
Unity is good leap forward in getting game dev to a higher level of abstraction, but what you mention is not there yet. This sort of asset store for reusable components is a long standing goal in sw dev in general.
Glad to hear they're continuing to work on the 2D editor and 2D physics. Unless I'm missing something, getting 2D platformer floor and wall collisions working properly is still a pain right now. (Sudden, discrete changes in velocity + physics colliders + tiles = wonky behavior.)
As someone who has implemented an semi-extensive set of interactive demos in the new 2D editor and toolkit, I have to say that it arrived half-baked. I'm really looking forward to the upcoming updates, but doing anything like a real game in the toolkit is next to impossible currently. Pathfinding is a specific weak point I ran into on another 2D project. The main A* implementation for Unity handled the native 2D toolkit very poorly when I last used it, and the built-in Unity toolkit didn't work with it at all.
Same. The conversion funnel on getting someone to download an app is ridiculous compared to web, nothing better than just click.. you're in.
That and Firebox (HTML based VR metaverse, so you can change server and download new content just by walking through a doorway) have me pretty excited about 3D at the moment.
I agree, C# is a much better programming language than JavaScript. Well worth the time to learn, even if you already know JavaScript.
The version of JavaScript that Unity has is actually just a thin veneer around the Mono runtime, so it's not quite the same language or environment you use in the browser or node.js.
However, there are some good reasons for using JavaScript in Unity: using existing libraries and developing new libraries that run in browsers, mobile devices, node.js, Unity3D and other JavaScript VMs, so you can have one code base that runs across all those platforms.
There some problems and impedance mis-matches to solve, to make running existing JavaScript code in Unity3D more seamlessly possible and even convenient. And that's exactly what Browserify does for web browsers!
There is a great tool called Browserify that solves the problem of running npm modules written for node.js in the browser, resolving dependencies, inserting shims to implement standard asynchonous node.js APIs in terms of the existing Unity3D apis, and packaging everything together in one file that can be downloaded and run in a web browser.
Browserify for Unity3D could be called Unityify.
For example of how it would be useful, I'm rewriting Micropolis (based on the original SimCity Classic code from Maxis) in JavaScript, and I'd like to be able to easily drop the JavaScript simulator engine code into Unity3D, and implement a nice 3D or 2D user interface in C# or whatever useful modules I can find on the Unity Asset Store.
I think "Unityify" would be a useful tool that lots of people could use, since the argument for running the same JavaScript code in both web browsers and node.js servers and desktop apps also extends to running it in Unity3D.
Ideally it would be able to just pass the JavaScript libraries through with minimal wrappers, when building Unity3D projects for deployment in browsers with WebGL.
Is anyone else interested in such a tool, or even working on it already, or interested in collaborating?
Any news on Mono version update? May be these AOT bugs that make Linq unusable will be fixed at least, or compiler won't crash at guessing generic parameters that often?
Nope, it certainly won't be in Unity 5. And the most they're willing to say is that they're working on solutions. It's been what, four or five years now?
That's why I'm now using Unreal Engine 4. If you're comfortable with C++, I'd recommend it, though it's still more or less in beta at the moment.
I'm looking into UE4 for my next game, too, and Mono is one of the reasons why - there seems to be a focus on big picture features at the expense of the day to day quality improvements.
For instance, my game builds are ridiculously large, because you can't store your textures in a losslessly compressed format (you can load from URL a png manually, but then you have to manually apply them to your models).
Unity has been so successful because it's been an "OK" tool in a land of rubbish. It seems as though it's finally getting some strong competition at a comparable price point, which is great for everyone.
Either Unity will step its game up (which I'd love, I don't want to switch tools), or it'll enter a long, slow period of decline.
Unity 4.3+ lets you choose "png" format as part of the native 2d support. No more 16/24/32 bit uncompressed as the only lossless formats.
I'm not sure if the new "png" format would work for 3d textures though- there might be some other weirdness there (like maybe you can't turn on mipmaps or something) since it's supposed to be used for 2d sprites.
Can someone help me understand the mono issue here, is it Unity at fault? The Mono runtime? I ask because the mono stuff for Xamarin is very close to 100% compatible with the latest .NET framework and I am using Linq and async/await in my iOS and Android apps with no problem. MonoDevelop (Xamarin Studio) has gotten much better in the past couple years as well.
So, what gives? What is the nature of the mono problem and who is responsible?
cryengine and UDK have far lower monthly subscription plan, and superior graphics and performance. I love unity but it just seems very expensive just to be able to port to iOS and Android on top of the unity pro plan. Maybe if they included iOS and Android in the $75/month (which is still much higher than UDK and Cryengine have announced) and lowered it further, it could stay competitive.
UDK is $19/month plus a royalty equal to 5% of gross sales (as in, before Apple or Google's 30% or other expenses). This means the UDK becomes more expensive if your game has more than a few hundred $$$ in sales.
Cryengine will be $10/month with no royalties, but does not currently support mobile platforms.
If you are looking at Unity Pro ($1500), and want to publish on iOS ($1500), and Android ($1500) it will cost $4500. You'd need to gross more than $90,000 on your app for the 5% royalty to be more than $4500, and I'd bet a vast majority Unity make much less than that.
Majority of games never break even, and that's ok: it's a high-risk, high-reward business. $90k isn't even close to an adequate 3d mobile game budget of average+ quality, so if you gross so little , you're fucked anyway, or you never had a serious product at your hands to begin with.
I am sorry, but anyone serious about building games would not balk at their monthly prices.
I dont mean to offend but this kind of reaction to pricing almost always comes from people with little to no money, traction, revenue etc.
The reality is, when you have a game in the market, costs like $75/mo or even 225/mo for iOS/Android targets - that cost does not even cross your mind. It is less than the cost of a single developer for a single day.
For big dev shops, sure, $225/month is just the cost of doing business, no big deal.
It's way too much for the Indie crowd, though, and that's Unity's big problem these days; it's being attacked from below by UDK, where the far lower upfront cost appeals to indie devs and tinkers, AND from above by UDK, which is a much better pro-level AAA framework than Unity, and for which the $$$$$ no cut of gross revenue licensing cost isn't an obstacle.
One of the ways that Unity appeals to indies though is the free tier. You can get started with Unity without paying anything at all. And if your project gets serious, then paying the monthly fee isn't such a large barrier. That's how it worked with my project anyway.
you make a really good point. UDK and Cryengine's low monthly pricing makes it an innovative disruptor because for indie folks it's a blessing to have such a powerful engine at the fraction of what it costs with something less powerful like Unity. I'd imagine, if you were a studio, you'd opt for UDK because you'd be able to do more. UDK also includes Android and iOS compilation.
I have used Unity free version, it was great but always felt nervous about dropping $4500. UDK addresses my pain point and likewise for other indie developers by giving access to a triple A framework without having to worry about return on investment. I definitely don't mind sharing the risk with UDK for a meager 5%.
which is funny, because cryengine and udk were not even in reach for indies just a few years ago. Those have now reacted with dramatic pricing and philosophy changes while unity basically cost the same as they always have. I expect unity to make a move soon, especially the extra costs for multiple platforms does not seem to be competitive anymore.
Since I haven't written much "UnityScript" code myself, I'd appreciate your comments about whether you think it's possible (or worth the effort) for a tool like Browserify/Unityify to translate JavaScript code so it runs in Unity3D, or for programmers to write portable modules in a dialect of JavaScript that will run in both.
Maybe Unity3D themselves could help, by fixing problems with UnityScript that make it hard to run standard JavaScript, and providing hooks in their compiler pipeline that enable passing JavaScript libraries through with minimal modification when you're targeting the web browser and WebGL.
I would argue that Lua is way easier/smaller/neater than C#, but both CryEngine and Unreal have visual flow-based scripting systems, which are significantly easier for a novice than scripting.
In CryEngine their FlowGraph is basically a way of connecting predefined C++ and Lua code boxes. Blueprint in Unreal takes things to extremes and basically exposes almost the entire C++ API to the scripter.
Unreal4 seems way more flexible in this regard than previous versions of the engine, but I haven't played about with it enough to be sure.
In any case, the limitation was never down to the scripting method, more the way that the engine was designed and what it specialises in. Remember that full licence holders had the C++ source.
A full license for UDK is quite pricey, so isn't really germane to this discussion.
If you need to develop in C++ then your cost structure (in cash or opportunity cost) means that worrying about paying $1500 for a development tool won't even move the needle.
Maya / Max seat $5000+ (and devs tend to need them too)
Unity's biggest payoff is in workflow. If what you care about is the most polygons on the screen then UDK or Cryengine will win. If you care about the price of getting something out the door and it isn't an FPS then Unity clearly wins.
I meant that even if you can afford the full licence and get the C++ source, that doesn't mean that the engine can make any kind of game you want. It's not really a question of constraint by language so much as the way the engine's built.
I'm not sure based on the screenshots and demos but it seems very intuitive, and it's actually one of the main reason I want to get started with UDK. I know C++ is gonna be a challenge but Lua pretty much looks like python, which is a huge win over UnityScript which is like Javascript.
It's funny because I was looking to see if I could use Unity with a python like language and Lua seems bang on the spot.
More reason to learn Lua as an excuse to use some thing like Lapis, a Lua framework for Nginx OpenResty which lets you write apps directly on Nginx.
Under the syntactical surface, Lua is really more like Javascript than Python.
Unity has support for Boo, which is just a Python-like front end for the CLR. I'm pretty fond of it, myself. I prefer to use it whenever I can, inside Unity and elsewhere. The docs could use a lot of love, but it's still very easy to learn and extremely productive and a joy to write. I rarely touch MonoDevelop / Xamarin Studio; I write Boo in Sublime Text, and find it very satisfying.
Another path I've been tempted to explore is to use Moonscript with Gameplay3D, but Unity is hard to leave.
I could be wrong, but I have the impression that Unreal is too unwieldy for a solo developer, which is how I plan to stay for the foreseeable future.
If there's already a checklist like this somewhere, please share with the community, as I'm sure there are many other Unity3D devs here.