Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411498 Posts in 69373 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 09:11:23 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)How good is Unity really?
Pages: [1] 2
Print
Author Topic: How good is Unity really?  (Read 4024 times)
elias4444
Level 0
*


View Profile
« on: December 21, 2012, 09:15:38 AM »

I've been out of the game development scene a couple of years now, but am looking to get back in. The last go-round I developed my own engine in Java with LWJGL. That was quite the learning experience, but by the end my brain understood and wrapped itself around the different aspects of what make a game.

One big lesson I learned from last time though was, "don't make an engine if you don't have to." Unity seems to be the popular choice now days. It'll take me a few months to re-wrap my brain around using a GUI based platform, but I'm willing to do that IF the engine is really what it's cracked up to be.

My main concern is optimization. Unity is a "one size fits all" sort of engine (as I understand it), so I'm worried it doesn't optimize well for individual creations. Take for example a game like Terraria. That was a "simple" game (graphically speaking), with thousands of blocks per world. A game like that can be easily optimized when making your own engine, but how well would Unity handle that many objects? Some engines would outright choke trying to update everything every frame.

Any advice or feedback is appreciated! Thank you!
Logged
Trystin
Level 4
****


Nyoom


View Profile WWW
« Reply #1 on: December 21, 2012, 03:53:32 PM »

The short version? Its pretty good, I think it relies on personal preference and your creative style. Personally I rather something more aimed at 2D game development than 3D, so I don't know much about the Unity engine itself, so cant help you on the optimization part. But from what I understand its pretty flexible.

And all of this could be bullshit, so don't pay much heed  Facepalm
Logged

saibot216
Level 10
*****



View Profile WWW
« Reply #2 on: December 21, 2012, 04:23:44 PM »

I think it's pretty decent. Had to use it for a class and it wasn't that bad. A very active community as well, which always comes in handy when you are having coding troubles.
Logged

Eendhoorn
Level 6
*

Quak


View Profile
« Reply #3 on: December 21, 2012, 04:42:19 PM »

You pretty much answered your own question. It's good for "standard" 3D games, but you might walk into issues when your game uses a special technique that moves away from this standard. There is a reason we don't see one million minecraft clones made by beginners in unity; because the rendering differs from the norm, and therefore is not possible in unity.

That being said, I actually like unity for it's high levelness.
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #4 on: December 21, 2012, 05:03:35 PM »

There is PLENTY minecraft clone made with unity and there is even some free source to look at ...
Logged

Sergi
Level 1
*



View Profile WWW
« Reply #5 on: December 22, 2012, 02:38:10 AM »

There is a reason we don't see one million minecraft clones made by beginners in unity; because the rendering differs from the norm, and therefore is not possible in unity.

I'd say it's the same reason we don't see a million MMORPGs made by beginners. They are or were fads, lots of beginners tried it, failed when they realized it's a lot of work, and bailed out of it midway. I don't think it has anything to do with Unity. It might be harder to do in some areas (the voxel rendering and dynamic destruction, for instance), but easier in all the others.

That being said, Unity forces you to use some pipeline the same way OpenGL forces its pipeline on you. You can try to do things in different ways, but you're going to fight against the waves. Every time you try to do something that it's not the usual 3D games that Unity is apparently made for, you're going to have to figure out things for yourself, and do things that might be slower because Unity will make some (wrong) assumptions and make "optimizations" that make things worse.

Basically anything can be done in Unity, since it features Turing-complete languages after all, but be prepared to find work arounds for a lot of things when you stray off the usual paths.

For everything else, it's just awesome <3
Logged

forwardresent
Guest
« Reply #6 on: December 22, 2012, 03:33:13 AM »

I've been using it for my degree also. I like it, but as mentioned if you don't do things the Unity way you'll spend a while programming a working alternative. There are some good books, Unity 3.x Game Development Essentials is usually recommended.

Unity is awesome, if you do exactly as it says, stray off the path and it beats you round the head a lot.

Learn how to use prefabs effectively, they will save you a lot of work.
Logged
bateleur
Level 10
*****



View Profile
« Reply #7 on: December 22, 2012, 03:43:38 AM »

I've been using Unity for my main (commercial) project for just under two years now. For most of that time I've been using Free and recently upgraded to Pro since I'm approaching final production. Some notes on my experiences:

* Unity is really two things in one: 1) A fairly comprehensive library for graphics, audio, networking and so on. 2) An editor environment which makes it possible for people with very little programming ability to make some kinds of games.

* I am an experienced programmer, so I've been developing almost entirely in code (of which more later). Nonetheless, the editor remains extremely useful as an interactive debugging tool.

* 3D graphics are Unity's strong point. I have had basically no significant problems with any aspect of 3D graphics. It's pretty versatile and doesn't really force you into a particular style. (Disclaimer: I am not familiar at an expert level with any other 3D system, so this might not be a completely informed opinion!)

* I am not an audio person, so I'm not sure how state-of-the-art the audio is, but I found it did most of what I wanted with a minimum of fuss. Automatic 3D audio is very convenient.

* The physics system is a bit annoying. I understand it's PhysX under the hood and I don't know to what extent the drawbacks are PhysX rather than Unity. The good news is that if all you want is automatic interaction between rigid bodies then Unity handles it all with a minimum of fuss. Doing complex things, particularly anything involving precise control, can get a bit hairy.

* Provision of 2D UI elements is currently poor. This is being improved right now, though, so might be fine in six months.

* I have not tried making 2D games. It's clearly perfectly feasible, but I hear it requires a bit more effort than 3D.

* Very nearly everything is scriptable (I think it's supposed to be everything, but they missed the odd thing). You can choose from three (I think) languages. I use UnityScript, which is an ECMAScript dialect like ActionScript or JavaScript. Another option is C#, which is actually slightly better in that it's a closer match to the way Unity does things internally. The third language is a thing called Boo, which is apparently Python-like. I don't know anyone who uses it.

* The documentation is a bit dubious in places. This criticism applies to basically everything ever, but is nonetheless worth noting.

* There's a massive community, but in fact it's a bit too big in the sense that Unity Answers is unusable due to volume of stupid questions drowning the important stuff and asking on the forums mostly gets ignored. Beginner support isn't bad, but after that you're going to have to solve most things yourself.

* I've heard some grumbling about text editors... I use Unity with emacs and have never had problems.

Overall I would strongly recommend Unity to anyone who cares more about making games than fiddling about with game engines. If you're a huge control freak or you love writing low-level graphics optimisations then it might annoy you a bit, I suppose. Also, I don't think it yet replaces Flash/AIR as the best solution for fairly simple 2D games.
Logged

mrj1nx
Level 0
***



View Profile
« Reply #8 on: December 22, 2012, 03:47:06 AM »

I have been using Unity for the last 3 years. (2 years professionally and now almost a year indie) I think it appeals differently depending on what kind of developer you are. I am less of a programming nerd and more of an allround kind of developer, i like to focus on the product and not get snowed in to much on the technical. I love Java, C#, ActionScript 3 etc, never gotten down to C++ level because i dont see the point, i just want to focus on getting stuff done. I think some C++ people who like to roll their own lower level stuff might not like it as much. I think Unity is the best thing i ever used, before that i used XNA and FlashBuilder, before that BlitzMax. In Unity i just get quicker and easier results, less reinventing the wheel, more time spent on the actual game. Thats my 2 cents.

I might add that my game is 2D, more info here: steveolofsson.tumblr.com
Logged
Fallsburg
Level 10
*****


Fear the CircleCat


View Profile
« Reply #9 on: December 22, 2012, 05:01:07 AM »

Take for example a game like Terraria. That was a "simple" game (graphically speaking), with thousands of blocks per world. A game like that can be easily optimized when making your own engine, but how well would Unity handle that many objects?

Well, I think you are naive if you think Terraria is "simple".  Unless you are rolling your own graphical pipeline, you are going to be piggybacking on some graphical library, and any graphical library would choke on Terraria if done in the naive manner.  Unity is no different.  But if you set it so that each block is a uv offset that then looks up in a texture map, you could get away with a 2048x2048 world with a single texture (excluding the lookup texture). 

My point is that no matter the engine you use, you will have to act in an intelligent manner if you try do something "tricky".


Anyway, on to your question:

I'm a recent Unity convert, but that comes with caveats.

1) If you are working with a team, the pro version is necessary (IMO).  The difficulty of rearranging the workflow to get the free version of Unity to work with version control software is astounding. 

2) Unity is not the best with procedurally generated things.  Instantiating new objects at run time can be very, very slow.  But if preallocate and use pooling, it gets a lot better.

3) If you are looking to do pure 2D, you would be much better served by something else.  Personally, I would recommend Flash for anyone looking to do anything 2D.  You can get away with thousands of visible sprites if you use any of the new Stage3D engines, and it has a large community and lots of other libraries.  You could even ask Chevy Ray if you could try a beta (alpha?) version of FlashPunk 2.

Logged
J-Snake
Level 10
*****


A fool with a tool is still a fool.


View Profile WWW
« Reply #10 on: December 22, 2012, 09:54:52 AM »

That being said, Unity forces you to use some pipeline the same way OpenGL forces its pipeline on you.
Don't know about Unity but regarding opengl 3.+, no. Moving away from the fixed pipeline one can argue that the cool thing about opengl is that it is completely up to you how you achieve a certain effect and visual technologies.
Logged

Independent game developer with an elaborate focus on interesting gameplay, rewarding depth of play and technical quality.<br /><br />Trap Them: http://store.steampowered.com/app/375930
Cyman
Level 0
**


View Profile
« Reply #11 on: December 22, 2012, 10:09:53 AM »

Take for example a game like Terraria. That was a "simple" game (graphically speaking), with thousands of blocks per world. A game like that can be easily optimized when making your own engine, but how well would Unity handle that many objects?

Well, I think you are naive if you think Terraria is "simple". 


I think he knows its not simple, hence the "quotes"
Logged
gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #12 on: December 22, 2012, 10:11:08 AM »

BTW the biggest problem of unity is PhysX, the problem is that it is more a physics engine than a collision engine. For example to listen collision around a sphere (especially on contact with a mesh collider) AND using that to use your own displacement is SLOW as hell, slower than the same operation in blit3D. WHY? because physics get in your way, it recalculate the whole scene if you manually displace rigidbodies, and rigidbodies is necessary to listen collision (kinetic bodies do not). Sonic Blitz3D run at decent FPS on my netbook with a full scene but the heavily adapted port do only 4-3 fps, making editing hard, on a simple scene with only 2 colliders (the small scene and the character). Other collider are nearly useless for the level of control I need, but I'm a very specific edge case. I plan to run my own simple collision system in the future, I don't have complex need after all.

Not using unity would mean rolling your own tech btw, so even fighting unity a bit might be beneficial. Aside from some audiovisual stuffs you can literally bypass and recode all your stuff in unity. Just don't use the library and derive monobehaviour. But a lot of simple tools are great in unity, curve for example save time if you took advantage of them, and the editable editor is a huge win.
Logged

Fallsburg
Level 10
*****


Fear the CircleCat


View Profile
« Reply #13 on: December 22, 2012, 10:50:55 AM »

I think he knows its not simple, hence the "quotes"

Well, yeah.

My point is: When doing things where the naive solution won't be sufficient, the naive solution won't be sufficient.  That is probably pedantic and is certainly redundant, but it is true.  No matter what system you use, Unity, SDL, SFML, OpenGL, whatever, that system will be tuned for a specific problem.  If you problem lies outside that set, you will need to come up with a solution.  Unity is no better/worse at this than anything else.
Logged
Klaim
Level 10
*****



View Profile WWW
« Reply #14 on: December 22, 2012, 11:12:11 AM »

I think it would be far more useful to have a thread listing what Unity is bad at. When I choose a tool, I tend to look at what I cannot or will have a hard time to do with, allowing me to avoid a potential trap in the development. Unity seem to fit most cases of game development so I think it is ok to start any project with it. However, it have some very specific weak points that can be interesting when you want to do something technically unusual (which is unfortunately my case currently).

So, experienced Unity gamedevs, what walls or annoying/difficult paths did you discover while using Unity?

Logged

J-Snake
Level 10
*****


A fool with a tool is still a fool.


View Profile WWW
« Reply #15 on: December 22, 2012, 12:58:50 PM »

May be you can take a look at monoGame. It is inspired by xna but tries to take it multiplat.
I haven't tried it yet but I keep hearing positive feedback so far.
Logged

Independent game developer with an elaborate focus on interesting gameplay, rewarding depth of play and technical quality.<br /><br />Trap Them: http://store.steampowered.com/app/375930
SolarLune
Level 10
*****


It's been eons


View Profile WWW
« Reply #16 on: December 22, 2012, 03:12:23 PM »


My main concern is optimization. Unity is a "one size fits all" sort of engine (as I understand it), so I'm worried it doesn't optimize well for individual creations. Take for example a game like Terraria. That was a "simple" game (graphically speaking), with thousands of blocks per world. A game like that can be easily optimized when making your own engine, but how well would Unity handle that many objects? Some engines would outright choke trying to update everything every frame.

Any advice or feedback is appreciated! Thank you!


I don't use Unity, but I think that a lot of the principles used to make a game like Terraria would transfer from engine to engine.

Merge objects into single draw batches as much as possible and update objects only when you need to. If you have dynamics physics, it might be best to have them update when something gets close to them, or for objects that are physics enabled (sand or water, for example). Try to do something like change a landmass (i.e. add a block or remove a block) only when the player clicks or performs the action, rather than checking every game frame, and so on.

It should be possible to make a voxel / block building game in most engines and frameworks (Flash, Unity, UDK, BGE, Pygame, Game Maker, etc).

I have been using Unity for the last 3 years. (2 years professionally and now almost a year indie) I think it appeals differently depending on what kind of developer you are. I am less of a programming nerd and more of an allround kind of developer, i like to focus on the product and not get snowed in to much on the technical. I love Java, C#, ActionScript 3 etc, never gotten down to C++ level because i dont see the point, i just want to focus on getting stuff done. I think some C++ people who like to roll their own lower level stuff might not like it as much. I think Unity is the best thing i ever used, before that i used XNA and FlashBuilder, before that BlitzMax. In Unity i just get quicker and easier results, less reinventing the wheel, more time spent on the actual game. Thats my 2 cents.

I might add that my game is 2D, more info here: steveolofsson.tumblr.com

That's also how I feel about the BGE - it's quick and easy to use, and extendable enough to do what I want. Most of the time, a developer's not going to find an engine that does everything necessary and is efficient. Either it's going to do everything you need and you'll need to optimize it, or it will be exceptionally efficient and you'll need to implement what you want (and also optimize that implementation). Unity, as far as I can see, has a ton of great features, but the main downside would most likely be the need to purchase them for a rather large sum of money.
Logged

nikki
Level 10
*****


View Profile
« Reply #17 on: December 22, 2012, 03:54:49 PM »

@op
Hard to get  a meaningful answer over such subjective material.
maybe for starters define 'good'.
and then say what you want to achieve and maybe someone can point out why unity would be a good tool or not.

now it's just unprecise language war waiting to happen
or the answer will likely be 'it depends'
Logged
elias4444
Level 0
*


View Profile
« Reply #18 on: December 23, 2012, 09:53:08 AM »

Thank you everyone for the feedback!

I'm still a bit stuck between going with Unity or sticking with my own homebrew Java/LWJGL engine. My wife reminded me this morning that I'm in this for fun, not to be making money (she's a very wise woman), so that means sticking with something free and that won't stress me out trying to relearn with new stuff.

This does seem to be the constant question I run into: what programming language? what game engine? what platform(s)? It's terribly stressful trying to decide the path to put the remainder of my mental faculties into (I'm guessing I don't have enough left to learn much more... getting kinda old for this).
Logged
Klaim
Level 10
*****



View Profile WWW
« Reply #19 on: December 23, 2012, 03:29:32 PM »

Your wife seems wise indeed. If it's just for fun and you don't have particular need for the game, use what you know. If you have particular needs, use these needs to drive your tools choice. If you do it for fun but you want to "learn", then choose something you don't know but still will be fun.
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic