Is their going to be a 2D mode in 4.xx , while 2D tool kit looks cool, their SHOULD be a built in 2D mode that makes 2D dev a bit easier , like ideally i’d like Unity to have 3 modes , 1st, normal, 2nd 2D , and 3rd non-game/GUI only , for the rare time I need to make a non-game app in unity .
I think the editor should have a toggle switch of some kind where you choose 3D, 2.5D, or 2D, and when doing so the whole scene view changes to suite the kind of game you’re making and offers up dedicated tools that are only relevant to the dimensionality you’re working in.
I think Unity IS working on some kind of 2D thing for Unity, maybe a 4.x feature, or 5… but from the clues I’ve seen over time it suggests something is in the works… but Unity has been quite slow to act on this and the platform in general still remains heavily 3D-focussed, which is why many people are coming up with other solutions.
2D is not that hard to accomplish in Unity even without a designated “2D mode.” Just don’t more or turn on one of the axes. For non-games just don’t use physics in general. Though it would be nice to have the features imaginaryhuman said, they really aren’t necessary.
I’ve personally never understood what people mean when they ask for a special 2D mode in Unity. I’ve never made a whole 2D game, but I’ve made a few 2D prototypes in Unity and it’s never really occurred to me what special 2D support might be. I know that in general you’d want a 2D game to behave by different rules to a 3D one, but the rules won’t be the same from game to game so I don’t want Unity to impose anything on me. I still want the scene graph to be 3 dimensional, and so I still want a fill set of 3D tools. I guess some primitives better suited to 2D work would be cool (like planes that aren’t subdivided as a basic primitive) but that’s honestly about all I can think of. Can someone who’s done more dedicated 2D work fill me in?
I’ve also made plenty of non-game applications in Unity, commercially, and have never needed any kind of special support for doing so.
I guess it depends on your background and what tools you’ve worked with. I’ve come from an almost completely strict 2D-only background and have something of a thing against 3D. 2D all the way baby! … well kind of. 3D is cool but it’s not my passion. My area of expertise is in 2D. If you take a look at the likes of GameMaker, GameSalad, Construct, MultimediaFusion etc… you see a very different kind of workflow with features and technologies that are really 2D-only and don’t pay any attention to the extra overhead or extra flexibilities needed to do things in 3D.
For me, Unity is NOT in hardly any way at all an ideal workflow solution for making anything 2D. There is quite a lot of PAIN there. Unity is all about removing pain but so far they have not solved the pain produced from using their 3D tool to make 2D. The fact is it has been designed from the start to be almost completely focussed on 3D environments and there are a whole bunch of design decisions that have been made along the way to support the needs of 3D development. For example there is the 3D camera controls/scene view. There are primitives you can add to your project which are irrelevant to 2D (there is no simple quad, no flat textured polygon, etc). Most of the shaders are designed for and optimized around working in a 3D environment with complex camera angles and all that - not optimized for a flat 2D display so they don’t take full advantage of that special case scenario (and are thus typically slower than they may need to be). Transforms have an unnecessary Z coordinate. There is absolutely no easy support for sprites or tilemaps or common scrolling methods. The particle system is not optimized for 2D. There is no 2D physics library (which would be WAAAAAY faster, as proved in a Ninja Camp experiment to implement bullet physics for 2D). There is no pixel-based collision detection. Sprite sheets aren’t supported without extra tools (ie the texturing system is not well-suited for lots of sprites). There is no code to simply put a sprite on-screen from a sprite sheet - it takes 20-30 lines of script to generate the procedural geometry and texture it, something which should be one line of code. Materials/shaders are handled in an object-oriented way (like most of Unity, which I find to be a pain), so you can’t very easily do the kinds of things you want to do in a 2D game without lots of extra typing and looking up documentation - ie there’s too much irrelevant complexity. I would like to chop out from Unity all of the features and design elements and interface widgets and tools that are irrelevant to 2D games and highly optimize everything that’s left to take advantage of being 2D only. … well, that’s kind of what I’m doing with my current project.
Also a small peeve I have about the 2D assets available right now, which are supposed to fix all the ways that Unity is not suited to 2D development (and they partly succeed), is all this glorified evangelism about preserving the Unity workflow. The Unity workflow is NOT properly conductive to 2D development and needs to be thrown in the trash!. For example, when I see that I have to drag a script onto a game object in order to make an editor appear, in order to get to a button that I click to make a custom editor pop up, which in turn reveals totally non-wysiwyg controls to do things which should be accomplished in a few interactive clicks in the scene view, it makes me cringe! That is so much hassle, so much unnecessary effort and pain to accomplish something which should be so intuitive and simple. When you look at software outside of Unity, if you were for example writing a tilemap editor standalone application, or a sprite placement system, you’d most likely do things in a far more interactive intuitive way, but in Unity everyone is hell bent on preserving the Unity way of doing things and as a result, fitting into all the wrong molds and all the wrong structures that make Unity a pain to do 2D in in the first place! It’s nuts. I’m so fed up with it that it has fuelled me to work on my own 2D solution which is going off on a radically different tangent compared to everything out there. Because to me, that it how 2D needs to be done… instead of trying to force it into the pre-made mold of a 3D design tool. To really do 2D well, all of the 3D stuff has to be out the window - it’s totally irrelevant noise. And any user interface for working with 2D has to be easy, quick, intuitive and obvious, not a bunch of cumbersome custom inspectors with bizarre workflow requirements. Everyone touts amazing workflow as if these things are a God-send to 2D, but in fact they only remove some of the pain because their workflow is so horribly unintuitive. I have not seen a single 2D tool for Unity that even comes close to providing a proper user interface for a 2D workflow.
It also bothers me, I gotta say, when primarily 3D-enthusiasts talk about how easy it is to do 2D in Unity, like “all you need to do is constrain rotations around X and Y axes” or whatever… fact is you should not HAVE to. All these little workarounds and techniques that have become necessary in order to make 2D happen should not be necessary at all. It can be done, but why should I? Why should I be adapting to the tool instead of using a tool that understands an efficient 2D workflow? If someone doesn’t get why Unity is not well suited for 2D at all (despite the fact that some people have worked with/around the pain to produce great 2D titles), it’s because they really don’t realize how much easier and more intuitive and optimized it could really be.
</2DRant>
Bravo… well said, and in specific, descriptive detail.
To me it really sounds like you want Unity to behave like GameMaker or Flash or whatnot for the purpose of making 2D games. When I make 2D games I don’t want the interface to be fundamentally different to what it is for 3D games. I want the game making process and pipelines to be the same. Having said that, I’m not someone who’s skills were developed in 2D-specific toolsets, so my skills aren’t framed in that context at all. To me, a 2D game is literally the same as a 3D game where I happen to not use one of the axes for game mechanics - and if I were to try to do that in GameMaker or a similar system I’d probably find its workflows as frustrating as you do Unity’s.
To me, the only difference between a 2D game and a 3D game is the “rules” I write to define it. When I’ve made 2D games (in Unity or otherwise) I’ve always started out in 3D space (I find the z axis useful even in 2D), and if I don’t want the mechanics to use the extra axis I don’t use “workarounds” or special techniques, I just don’t use Z. Using Unity’s built-in physics in 2D is a bit of a pain, I have to agree, but when I write 2D stuff I generally want my own physics for everything except basic collision detection anyway. So, as a general game programmer with no specific 2D or 3D focus (in my current game I think all of the 3D assets could be replaced with 2D ones and the game would still work and be mechanically equivalent!), to me Unity is just a way to make games faster and get them onto more platforms more easily, since it comes out of the box with all of the base tools I need to make a game (rendering, scene graph, input, audio, asset pipeline, cross-platform deploy, etc. etc.).
But… Unity doesn’t need to throw anything out of the window “to do 2D well”. It only needs to throw things out of the window if it wants to provide specific workflows suited to specific types of development at the cost of others, which may well be to its detriment since its flexibility is, in my personal opinion, its biggest strength.
And if it does add optional modes to “throw things out of the window” for doing certain types of development, that’s all well and good for some people, but for me… I just want all of the tools to be available and I’ll use or not use them as per my requirements.
You can’t tell, but I am applauding right now.
You have some points. It isn’t necessary though for Unity to cut stuff out for everyone, just that it would be good if it could specialize better as an option. Granted anyone CAN make 2D games in Unity but do people who primarily focus on 2D really want to use a 3D tool and try to get it to behave like it’s 2D, when there should be a simple click of a button to provide a more relevant user interface? GameMaker is now touting itself as the Unity of 2D which is a bit of a stretch but it shows how much of a gap there is here between where Unity is at (and thought of as primarily 3D, and designed primarily as 3D) versus where it could be in its 2D focus. You say Unity is good in being so flexible and open - it can be, but that openess also brings with it overheads and interface issues and usability issues that don’t need to be there for these type of games.
I can see if you make 3D games also then you’re going to want a more general tool and use all the same techniques/interface etc to make whatever you want, but if you’re not into 3D (which I’d wager most 2D-developers aren’t), then this can be a headache.
We’re also talking about making an entire 2D game here, and you talk about lumping together your 3D and 2D games in the same toolset, but surely these games are so far apart and on such different paths I don’t see how you can say I want to use the same tool in the same breath. If I’m making a 3D game it has nothing to do with any other projects and I doubt I have time to work on more than one significant game at a time. When I’m making a game I want the best tool for the job, appropriate to the type of game, and right now I just feel Unity is not the best tool for 2D. There are other tools out there specializing in 2D - GameMaker, BlitzMax, etc which already out of the box do 2D much easier and straightforward than Unity. When I’m making a 2D game I’m not interested in anything 3D whatsoever.
Considering a small engineering team could make a dedicated 2d mode in a week or so , and considering how much unity cost, and CONSIDERING how many 2D games are made in Unity( Bad Piggies for one), I feel that Unity REALLY needs to add this . I’m holding off on Unity 4 since that GUI system that was supposed to be out in 3.xx never came out .
Just go get a job mop the floor for a week and you can buy 2D Toolkit for $65 dollars. PROBLEM SOLVED! ![]()
I think you want Unity to be this, but Unity just can’t be ‘it’ for everyone. Even among 2D enthusiasts they all have different opinion of what 2D engine should look like and cater to their own need.
Ok, but there can be a distinction between “a 3D tool” and “a tool which supports 3 dimensions” when it comes to how they’re used.
Pre-Unity, when I wanted to make a 2D game, I still started by writing OpenGL code which, in all cases, was hooked up to some kind of 3 dimensional scene graph. As I said before, even if I’m not using it for mechanics, having the Z axis is useful. For instance, in a 2D game I generally wish to have some way to keep different parts of my scene in layers. Why write something special for that when I can just give everything a Z value and be done with it? Same deal with Unity.
When I set up a scene for a 2D game, I just set up a camera and some 2D assets in the scene so that they look like how I want them to, then start attaching behaviours so they behave like I want. And, for me, it “just works”. None of the available tools are “noise”, they’re all extensions of my capability of a developer that, should I wish to move in certain directions, will help me to do so much more rapidly. And that’s the difference between the two of us - I’m looking at it from a much lower-level, nuts-and-bolts point of view where Unity is a bunch of off-the-shelf stuff which helps me do things more quickly, where to you (if this is fair) Unity is a bunch of stuff that’s perhaps a bit too low level because there’s certain stuff you never want to change and just wish it wasn’t in your way, because it was never a part of how you learned in the first place.
Edit: @keithsoulasa: Doesn’t the fact that Bad Piggies and many other successful 2D games were made in Unity suggest that it’s actually quite ok for making 2D games as it is? The question isn’t one of capability, it’s one of desired workflow.
Mmm no. I have 2DToolkit. It does some things fairly well but in my opinion it falls far short of a proper 2D workflow - all the extra manual steps I have to do to put things together and make things happen, it’s ridiculous. Overall I think it does help to do 2D but it is still far short of a complete 2D solution. The user interface just isn’t ideal and there is so much missing that is needed. And all the other 2D tools out there have the same problem. And then look at the tilemap editors out there, they’re so primitive - drawing a tile one at a time from a palette is the bare minimum of what it should do. Where is the automation? Where are the easy WYSIWIG tools? Where is the in-game editing?
As far as the Unity 4 GUI goes, I see that Unity has increased the speed greatly, which is probably mostly due to the use of sprite sheets to drastically cut draw calls. This problem is touted as one of the main features of most 2D tools, ie oh we have sprite sheets. Big deal - that’s just because Unity used to do a poor job of providing fast 2D. Now that the GUI is faster, it becomes perhaps more viable to use to make a 2D game… or is it? No… who wants to use a GUI tool to make a 2D game? That’s nuts. We need proper 2D tools, proper 2D workflow, a proper user interface and proper support for the kinds of things that 2D games need.
@angrypenguin … well like I said, Unity can be used to make 2D games, it can also be used to make really awesome 2D games. However, HOW those games are made and what hoops you need to go through to make it happen is what’s in question here. Some people prefer its methods, some people prefer a more optimized workflow. The folks making Bad Piggies probably had a whole team of professional programmers working on it and I bet they are quite used to working with the complexities of Unity or dealing with technical details that need extra effort. Unity probably saved them a tonne of time still compared to their previous workflow, for all I know. But that’s not where I’m at. I am one person with a dream, much like many others, and I want a tool that gets out of the way and provides an excellent workflow for making the kind of games I want to make. As a 3D tool I just find it to be a bit too broad and not really focussed on the area I want to work in. Maybe it’s an artistic choice on my part, or just preference, or experience. But I think there are a lot of people like me who perhaps have tried 2D development in other systems and are finding that Unity doesn’t make it as easy as it should be. I think Unity probably are working on a dedicated set of 2D tools, at least I hope so, but I still fear it’s going to fall far short of where it could be. And that’s why I continue to work on implementing a proper editor myself. It seems nobody else is going to
Or maybe I’m getting big-headed now ![]()
What I think should happen is Unity includes a full on 2D mode, if I drop 400$ or 1500$ for an engine it needs to be streamlined for whatever game I want to make
I don’t know about the price factor but if we stop for a moment and ask ourselves, what would Unity be like if it was designed from the ground up to be 100% dedicated to 2D games only, and then we compare that to how Unity is right now, we should see a major difference. That difference hilites the need for a much better 2D workflow.
In some ways I wonder at times if Unity thinks less highly of 2D games because they are so absent of all the advanced 3D technologies (and yet there is much potential to push 2D games to more advanced levels of technology). For example there is no tilemap built into Unity, yet 2D games have been using tilemaps for decades. Are they too small of a feature to bother implementing? Does Unity only implement features which can apply to all games? That might be where they draw the line because pretty much every feature that’s been added to Unity has been with an eye toward maximizing how many people would use it, ie basically 3D developers. So I don’t really hold my breath that Unity would integrate specific 2D features, and maybe they see this as something that the Asset Store would best serve (ie third party solutions).
Not really having a problem with making 2D work here with ex2D. There’s no “difficult” workflow as it just uses gameobjects and sorts out stuff so it dynamically batches better (using unity’s dynamic batching). So of all the middleware out there, ex2D is closest to home.
I prefer being able to “mix” 2D and 3D rendering - which I do fairly frequently actually, and I consider this one of the reasons I probably wouldn’t use unity’s solution. I need control of depth. I need complex meshes for complex 2D effects (that are drawn in 2D) - I guess you could say I am a bit of a power user. Having appreciated ex2D’s simple approach I think I’d be a fool to change from it.
The only reason I think a unity built in version would be any good is because:
a) integration with unity’s own animation system would help a lot for custom stuff
b) it would be faster eliminating 3D entirely
But to say its the most horrible thing in the world implies you haven’t tried ex2D yet. I appreciate what people are saying (and what they’re expecting). I know unity + chosen middleware isn’t as easy as it could be, but I’ve written custom 2D engines in opengl and so forth, and I know this is is still easier in unity.
Would you suggest ex2D over 2D Tool kit, I’d want a tile mapper too …
Considering how bada*** TOB is I consider your opinion to be spot on !
Didn’t see this bit before. No, I want to use the same tool, definitely, and I work on many short projects (sometimes multiple at once) regularly. In my case, “the best tool for the job” is the one I am most familiar and therefore able to work most quickly with. I don’t want to have to keep current with multiple tools at once, and I don’t want to have to learn new tools when I switch projects. I also want to maximise my leverage of prior experience between projects, rather than re-learn basics. No engine is anywhere near perfect, and there’s no way I want to constantly be jumping from one set of imperfections to another. If I worked on longer or larger projects one at a time I might think differently, but that’s not the case.
I’ve looked at the ex2D workflow and I think it’s perhaps better than 2DToolkit only in that it uses custom editor windows which are a bit closer to being WYSIWYG. It’s a different approach.