• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
JPTawok

What are the downsides to using Unity?

25 posts in this topic

I'm a brand new programmer, I've spent some time in classes learning Java, SQL, PHP, HTML, and VBnet. I've been interested in making video games since I was a wee lad, and after spending about a week or so trollin around the forums I've noticed a lot of recommendations to using Unity for beginner developers. I don't feel confident developing a game standalone at this point, and quite frankly don't know where to start.

My questions:

What are the downsides to using Unity?

What would you recommend as an alternative?

Where should I start?

Edit: I should mention I'm interested in a pretty basic 2d game similar to Pokemon. Not for profit, just for fun to get my feet wet. I'll brainstorm with my buddy when the time comes, but for now we just want to develop something for private use, and to expand our knowledge of programming.

Thanks in advance. Edited by JPTawok
2

Share this post


Link to post
Share on other sites
The main downsides are:
* It is a harder to make 2D games with compared to other options such as GameMaker.
* The free version is quite restricted when it comes to "advanced" graphics effects. and the Pro version has a relativly high up-front cost compared to some of the competitors.

Thats about it really,
1

Share this post


Link to post
Share on other sites
[quote]* It is a harder to make 2D games with compared to other options such as GameMaker.[/quote]

I agree. Not that it´s harder to learn, but 2D games made with Unity tend to have a worst performance. Unless you do a fake 2D game (with 3D flat geometry). This takes to the point I think is the main downside not only about Unity but with most engines out there: if you want to avoid problems you have to do everything the way the engine want´s you to do, which is a considerable downside in my opinion when you have to solve problems thinking out of the box. I guess you will have to do a pros/cons list and take your priorities in consideration. Of course there are huge advantages such as portability: with a relative low cost you can put your game on android/iOS with Unity.
2

Share this post


Link to post
Share on other sites
I don't think it's a fair criticism. It's not meant to be a 2D engine. You don't criticize a hammer for not working like a wrench. You use a wrench instead!

My biggest downsides are crappy 3D asset importing, and the whole way that project files are handled. Unity wants me to work out of a folder they manage, and it becomes a pain in the ass to manage files that are constantly changing, because I can't risk saving the only copy in the Unity folder in case it gets accidentally nuked.

If Unity doesn't like something about one of the FBX files I try to import, it will break the existing imported version of that model instead of just telling me what's wrong with the file so I can fix it. If the FBX just flat out fails, the console tells you nothing.

It's hard to get the models in the correct orientation, and then there doesn't seem to be a way to normalize that rotation so it becomes the identity rotation. This causes me tons of problems.

The direct .blend import just makes a big mess of your data. If you change your blend enough, you just get copies of copies of copies of copies of the mesh data under your object.

I tried talking about some of these issues a few times on the official forums. The result was message deletion, and me being flagged as someone whose posts have to be cleared by a moderator before they go through.
1

Share this post


Link to post
Share on other sites
I'm leaning more and more to GameMaker for my 2d development it sounds like. Any other suggestions for an infant developer?
0

Share this post


Link to post
Share on other sites
I use Cocos2D-x it's really nice, and simple to work with. I used Unity for a game before that but I didn't really like. IMO it's animation tools don't work too well (maybe I was using them wrong though, it could be my fault). And if you want the advanced graphics features you're gonna have to pay 1500 bucks for the pro version. And an extra 400 for iOS and Android if you want to release on them.
0

Share this post


Link to post
Share on other sites
Everybody should only need about 4 things to make games with...Windows, directX, Microsoft visual studio c++ express, and pair of BALLS.
Seriously, Just grow a pair get started. Any one who has told you it will takes you years to make game engine is an idiot.
-23

Share this post


Link to post
Share on other sites
I wouldn't say there's anything "wrong" with Unity. Personally I just didn't like it. And jefferytitan has a good point.
[quote name='jefferytitan' timestamp='1345085193' post='4970033']
The language/platform/API/tool wars have been raging for many years on many forums without any "winner".
[/quote]
I've been building an engine from scratch with DirectX 11, but I've been doing it as a learning experience. I've been using other engines for my actual game projects. XNA Game Studio is pretty easy to work with, you might want to try the platform game starter kit.
0

Share this post


Link to post
Share on other sites
Currently I use Flash, HTML5 and Unity. None of them is my favorite, those are just tools that I choose depending on which platforms I want to target. I have also programmed in Objective C and Java, and created a nice 2D engine for iOS and Android, but I prefer using Unity to gain development speed. And I'm using Flash less to today in favor HTML5 which is more compatible, if Flash "magically" become more compatible in the future I'd return. I try to keep informed about new engines, and each time I find I read all the specs.
0

Share this post


Link to post
Share on other sites
[quote]My biggest downsides are crappy 3D asset importing, and the whole way that project files are handled. Unity wants me to work out of a folder they manage, and it becomes a pain in the ass to manage files that are constantly changing, because I can't risk saving the only copy in the Unity folder in case it gets accidentally nuked.[/quote]

Oh, I know precisely what you mean... Not mentioning that sometimes when you upgrade your Unity version it breaks your project.

Most of the time I work on Unity is because the company I work for currently uses it. Other than that it´s because of the cross-platform features that once you know how they work, they can really save some serious time. Edited by CJ_COIMBRA
2

Share this post


Link to post
Share on other sites
[quote name='jefferytitan' timestamp='1345085193' post='4970033']
@Estabon: While you are correct that you can just plunge in with those tools and achieve something, I'd like to point out a few things:[list]
[*]If you want to compete with the graphics and physics of high end games, realistically it can take years.
[*]While usually more suited to the purpose, a custom-written engine can be less robust.
[*]If you are interested in creating gameplay rather than an engine, starting with an engine can be a fiendish waste of time.
[*]There's little purpose in attacking someone's tools without justifications. The language/platform/API/tool wars have been raging for many years on many forums without any "winner".
[/list]
[/quote]
Well, all I have to say is that this dude is interested in programming... and you guys convince him to just give it up!? Maybe he won't program a game... but programming is a very useful skill. It's a lot of fun. And he shouldn't even try because he comes here and finds no support in building an engine? I'm just really annoyed that people recomend to PROGRAMMERS to use a game engine. This website is Gamedev... not game design.. This dude is interested in game devolopement! But, after viewing these messageboards for a few days he lost his confidence in building an engine. Everybody is so quick to make building an engine seem like more trouble than it is fun.. Okay? So I'm saying what I have to say so that maybe I'll inspire somebody that they actually CAN devolope a game and won't settle for using a game engine. Listen dude, I have no problem with game engines. But they are for people who just want to design a game! Do you know what I mean? He took programming classes, and probably never thought about learning 3ds studio max.

---Edit---
Here are some of his quotes:
1) I'm a brand new programmer, I've spent some time in classes learning Java, SQL, PHP, HTML, and VBnet
2) using Unity for beginner developers. I don't feel confident developing a game standalone at this point.
3) and to expand our knowledge of programming.

So let me ask you if this guy REALLY wants to use a game engine or is just convinced by you guys he simply isn't good enough to make an engine...
He's asking where to start game programming, and using a game engine won't help him progress at all!
What's wrong with starting with the Win32 Api or a different basic graphics Api? And... for the most part... he won't get what he wants from a game engine!
So what if it takes him a long time to make a cutting age game? He's into it. And won't be making any progress with programming if he never starts!!!

Maybe it takes some people years to make a cutting age game engine... but that's because he is LEARNING!!! Not because it's complicated. Programming is actually very easy... if someone takes the time to learn.

I'm not attacking people who use a game engine. I'm just making up for all these people crushing programmer's desires to get into game programming.
Get used to it. Edited by Estabon
-3

Share this post


Link to post
Share on other sites
Have a look at SDL. SDL 2 seems to have some neat new features and it's also cross platform.
1

Share this post


Link to post
Share on other sites
I will not delve into the downsides of Unity, because I do not know much about it.

Then again if you want to do 2D game similar to Pokemon you can use Java as you seem to know the language already. Java has some nifty frameworks for building games. For example few years ago I was part of one of those Pokemon Clone MMORPG projects. We used Java for programming with Slick 2D game library for graphics and tiled to build the maps. We also used Apache Mina for networking. We actually got so popular that Nintendo shut us down.

There exists ton of tools to use with many programming languages to create games. Build something with existing tools and if you really want later replace them with your own code.

PS. Estabon you really are not helping at all. I agree with you that mastering requires lower level knowledge, but building game from scratch is huge task and reinvents the wheel. By using an existing game framework you will find out what lower level libraries games require. This saves time, because instead of first reading ton of books to gather the knowledge to build your engine you can just focus on building your game.
0

Share this post


Link to post
Share on other sites
@Estabon: I voted your last post up because I think you're trying to help and justifying yourself better. I don't entirely agree with you. I do agree that familiarity with the basics can be very beneficial. I have done papers in hardware, networking, parallel programming, graphics, computer vision and algorithmics and programmed in a multitude of languages including assembly, C++, Basic, Java, Pascal, Haskell, .NET and SQL. All of these have had an effect on my understanding of programming. However would I send a new programmer along the same path as myself? I don't know. I think people need to experience the fun and usefulness of programming before sentencing them to 10 years of grueling training 80's martial arts movie style. Scripting is still coding. Time spent coding outside the basics still counts.
0

Share this post


Link to post
Share on other sites
When I used Unity (which was years ago) my main issue was when the following scenario happened:

1) Work on project which exceeded 500mb of content
2) Build project - distribute to friends
3) Uh oh - Tiny bug! Fix bug and rebuild
4) They must now redownload all 500mb

Of course this was when I had first started doing anything programming wise so I easily could have been doing something wrong. I also found some of the colliders were hard to work with in certain scenarios. Other than that Unity serves its purpose quite well for what it was designed to do.

@Estabon
While I understand what you are saying I disagree with how you are trying to present yourself. A much better response would have been asking why he felt the need to use engine, or stating you are unable to comprehend the allusion a game even needs an engine. By coming across in such a way that you have if I were the OP I would take that as very demoralizing. Rather than put someone down for doing something you would not do possibly write an alternative solution in order to maximize help [img]http://public.gamedev.net//public/style_emoticons/default/happy.png[/img] not state a strong opinion of yours.

With the above said I strongly recommend you(JPTawok) to explore as many different paths as you possibly can to find what works best [b]for you [/b][img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img].

Since you stated you had spent some time learning Java you can easily make a transition from that to C#. XNA is a very good alternative for 2D vs Unity IMHO as a simple 2D game can be created in about 5 minutes once you get the hang of it. I personally would go this route because I feel you would learn more - but it may be more of a challenge for you. Of course, being challenged is good! [img]http://public.gamedev.net//public/style_emoticons/default/rolleyes.gif[/img] Edited by iheartyyouxo
0

Share this post


Link to post
Share on other sites
So say I start with Java, and I want to make a pong rip-off(again, for my own enjoyment) to get my feet wet. Should I focus on using game. commands? All they taught us in school was nonsense problems(never got enough of Loan Calcs >.<). I'd love to earn the knowledge of building my own engine, and creating my own game.
1

Share this post


Link to post
Share on other sites
For Java there's Andengine. I've worked with it before and it's pretty nice. It's actually very similar to Cocos2d-x which I liked. Although I'm not sure if it was just me or what, but the tiled maps were hard for me to get working at first.

EDIT:
Andengine is android only. Forgot to mention that. Edited by 3DModelerMan
0

Share this post


Link to post
Share on other sites
As a long-time user of Unity:

[b]downsides:[/b][list]
[*]Although it's amongst the best in asset management, the module does have its quirks and can ruin your day if you're not careful.
[*]Hard to "patch" asset/ scene files since they are binary (see 500mb comment above ). [They are switching to a text-based scene format so this will change very soon ]
[*]Some web-game developers complain about users leaving the game page once they see the Unity logo [ which in the free version has to be there ]. This is a side-effect of so many people having access to the free version and so much shovelware being developed. I have my doubts about it.
[*]Jack of all trades dilemma. It does everything but doesn't really shine in any particular category. It's not exactly a downside but surely not an upside either.
[*]Really bad GUI implementation. The inbuilt GUI system is a performance drain at best. [ This is bound to change with ver. 4.x ]
[*]Binary SDK. As a c++ enthusiast, source code access would make my day.
[/list]
[b]upsides:[/b][list]
[*]Extremely easy-to-use. I love UDK, Corona, Cocos2D and even ShiVa but they just aren't in the same ballpark when it comes to ease-of-use.
[*]Awesome cross-platform support. [ with 4.0 ] Linux, Web ( plugin and flash), Windows, Mac, iOS and android. And all of them free [ basic versions anyway ].
[*]Well documented scripting. Some of the best documentation this side of a complex engine.
[*]Decent to great performance on mobile devices. Couple of tricks to make it run great but it eventually gives.
[*]Great community. They've got their trolls and whiners but overall the community is great.
[*]Asset management. Both a blessing and a curse.
[/list]
[b]corrections:[/b]
[ Daaark ] Getting the correct orientation is not a bug nor an inconvenience. It's just the coord. system they use ( common y-up system ). The problem lies rather with the authoring tools [ z-up for 3ds max for example :| ]. Nothing some decent planning won't take care of. Edited by Tudor Nita
0

Share this post


Link to post
Share on other sites
[quote name='Tudor Nita' timestamp='1345461408' post='4971419'][b]corrections:[/b]
[ Daaark ] Getting the correct orientation is not a bug nor an inconvenience. It's just the coord. system they use ( common y-up system ). The problem lies rather with the authoring tools [ z-up for 3ds max for example :| ]. Nothing some decent planning won't take care of.
[/quote]Actually, it's both a bug,and an inconvenience. Every program uses their own coordinate system, this is nothing new. But when the conversations are made, the new imported asset should have a rotation of 0,0,0. Unity's fbx import will convert it, but have non zero values in the rotation fields, with no way to set the default rotation to identity (0,0,0). This causes nothing but problems. Especially when writing scripts to instantiate objects and have them facing the right direction. It has to be relative to the mystery rotations that came in on import.

If Unity wanted to do it right, they'd actually rotate the data on import instead of just adding them to the model's rotation data. If I can edit normals, tangents, lightmap UVs, and everything else in the object inspector, I should be able to fix the default rotation too.
0

Share this post


Link to post
Share on other sites
[quote]
Unity's fbx import will convert it, but have non zero values in the rotation fields, with no way to set the default rotation to identity (0,0,0).

Especially when writing scripts to instantiate objects
[/quote]

I'll have to agree on that. Was thinking from a manual import POV. However I remember you can get a 0,0,0 rotation if you pre-rotate the object/ pivot in 3DS Max before exporting. Will have to check this out again as my memory is not to be trusted.
1

Share this post


Link to post
Share on other sites
We're not all using 3ds max. It doesn't matter what any of the DCC programs do. It matters how Unity handles it.

My exporter in Blender handles the conversion to Unity's coordinate system properly. It does a (+/-)90 X rotation, and it's all good. Unity undoes it, and and then adds the -90 to the rotation field. *banging head on desk*. Now I have to remember this when spawning objects. I also often have to do a -180 on the Z. So if I change my object a bit I have to go back and possibly re-edit the bullshit layers of rotations, and it's a nightmare to maintain.

It comes up in the forums and answers wiki all the time, and they get flooded with answers by people who don't understand the problem. They want to charge 1500 for the pro version, and can't take 2 minutes to add a button to bake in a new default rotation. It's a button in the inspector and a for-loop.
1

Share this post


Link to post
Share on other sites
Unity has some serious memory management issues. A lot of people get hit by performance spikes (5-50msecs) caused by poor Mono garbage collector. There are no good mechanisms to profile memory usage and detect where your memory is leaking/consumed. The GUI system behaves badly with this respect. These issues are worsened by crash bugs in Mono 2.6, googling for "too many root sets" and "too many heap sections" will find some links [url="http://answers.unity3d.com/questions/52944/fatal-error-in-gc-too-many-root-sets.html"][1][/url], [url="http://feedback.unity3d.com/unity/all-categories/1/hot/active/gc-spikes-caused-by-ongui"][2][/url], [url="http://feedback.unity3d.com/unity/all-categories/1/top/active/scripting-garbage-collection-sg"][3][/url], [url="http://forum.unity3d.com/threads/111365-Memory-leak-galore"][4][/url], [url="http://answers.unity3d.com/questions/266924/Is-there-any-solutions-for-Too-many-heap-sections-fatal-error-in-gc.html"][5][/url]. The common practices are to avoid allocating new objects while your game is running, to avoid the risk of fragmenting the Mono heap to the point where it crashes.

Not happy to say that so far (about three years of Unity development), we haven't been able to write an application for Unity that could sustain a stable uptime of a week without crashing in Mono/GC. Some apps we've built do run ok for about 24h, but they've mostly been an exception. Whenever using a closed source middleware/engine, one naturally is afraid of finding these kind of showstoppers, but I think the above issue is the only one we've met with Unity. If writing server software/long uptime is not a particularly important goal, then I think Unity's gonna be ok.
2

Share this post


Link to post
Share on other sites
@Estabon;

I see your point about making a game engine from scratch, but I also see a new persons development stand point. I highly doubt that the first thing you did when you first learned programming was take a skill you already were familiar with and start to write SDL shaders or GUI handling from I/O devices on day one. I hardly doubt that any tutorial you learned from also sayed that you need to tackle the most complex thing there is to bug's and said, "Don't worry you need to learn to fly in order to walk." My point being is the OP learning from other engines and improving on it will help him 100x more than just throwing him with a bunch of libraries with little to no programming experiance and say make something of it. Programming is easy to some and worse than algrebra to others. Some understand basic logic and finite math, where as others don't understand that computers are as smart as you tell them to be. Telling someone to grow balls right up is not the right attitude, if anything you linking a game engine source with some examples to an easy to use game engine like Pong, Tetris for math matrix handles or even a clone of Angry Birds to show collision and vectors would be more helpful than all of your posts combined. There is alot more to just 'learning programming'.

With that being said,

My experiance with Unity3D is a short lived one sadly. We had an issue when it came to 2D assets and applying set textures to a 3D object on the scene. The engine is built for 3D and only wants to render in 3D. When force to use a 2D asset, when applying a 3D asset to the scene the game engine needs some custom scripts to run. All in all we found it a little to troubling and ditched Unity3D and started to tear down UDK. Thats where we are right now. In my scope of using it this is where I had issues:

-Files get messy because Unity wants to control them all
-Everytime we update a build we have to create a fresh install and re-distro to everyone vs a simple patch change. Very annoying when we do 30-40 builds a week.
-Had a couple lock ups happen when pre-defined scripts would attempt to run during play testing.
-As stated by CLB we also has memory management issues, ours came during development more than anything because of the scripts issue.
-Importing models gave us issues when we used Cell Shaded. It would mess up the draw points for outlines and everyone would have mustaches as it would start tracing the models in a wierd pattern it apparently thought was the priorities or the way the model was built. Not really sure what it was doing but our engineer said it to me so I said Ok. Point being, it hated it.

-M
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0