What exactly is Unity for?

Started by
8 comments, last by Nanoha 7 years, 10 months ago

I am super new to Unity and just game development in general. I would like to know if a AAA game can be made using just Untiy. Some people told me you can only make basic games like rolling a sphere in Unity and AAA games use other languages to actually make anything complex. Cuz I don't see how C# can make good graphics etc. I'm not talking 'bout using different languages for performance improvements; I mean is it possible to make a AAA game at all using just Unity? If not, what is Unity for?

Advertisement

If you look at the structure of say 50 games, you'll see the same kind of things, main loop, input, render graphics, play sounds, some sort of map or level, perhaps some AI, and so on. Basically you strip out the game-specific parts, and what remains is a sort of skeleton of code that exists in every game.

Now if you want to make a game, you most likely need all that, to a large degree in any case. If you start from scratch, you need to write all that code. While you must have it, it is not specific for your game, it's just the supporting code around the real game-unique content.

Here is where Unity (or any other game engine) comes in. A game engine contains most of that stuff, so you can immediately start adding your game-specific parts, thereby re-using the skeleton code.

Can you write a AAA game with just Unity? Probably you can. I am not sure how that matters. For an AAA game, you need a 7-8 figure amount of money, and hire a 100 or more developers for a year or longer (don't know the numbers, but I think I am estimating too low). With that much development power, you can do pretty much anything, including having your own engine, or heavily tailoring a bought engine.

Now I am guessing you are not with a hundred people, and you don't have a few suitcases with money laying around, in fact it's likely just you with no money and no experience in programming. Basically that means any sort of AAA game is out of reach for you.

Welcome to the forum.

So while AAA games do use engines, they do not necessarily use Unity. On the other hand, for all non-AAA games (and that is a much larger number of games!) game engines like Unity or Unreal are very useful, as it means you can skip writing all the standard skeleton stuff, which means you can spend more time on the actual content of your game!

Thanks! Yah, I don't have the money or people to make a AAA game, but I just wanted to know what I could use Unity for, before I start learning C# and stuff and then find out it was all just a waste. Because this guy on Stack Overflow said that in his company they just used Unity to bring together all the logic, sound, graphics etc. from many other tools and Unity was just to stick it together, so then I thought "I knew it was too good to be true! You can't just use C# for graphics and everything (I know, sound might not be in Unity, but just the game)". But some people said you can make a full-fledged game with just Unity, others were like not at all, so I was just really confused.

Thanks! Yah, I don't have the money or people to make a AAA game, but I just wanted to know what I could use Unity for, before I start learning C# and stuff and then find out it was all just a waste.

Learning anything programming related is almost never a waste. There are large amounts of overlap (since in the end it all gets run at the same computer) between languages, and other pieces of code like engines and libraries. You likely will not learn just one language, but instead learn a few, again expanding your set of tools, so you can pick the best tool for the job, instead of treating everything like a nail, since you only know about hammers.

I knew it was too good to be true! You can't just use C# for graphics and everything

Not sure I follow this. How is "draw this letter to the screen" exactly different from "draw this image to the screen"? In particular, since a letter is also a collection of black and white dots.

You generally make the pretty picture in some graphic editor program, but otherwise, "plot graphics" in C# (or any other language for that matter) is as simple as a 'plot image at (x,y) to the screen' statement. The actual rendering is then often done by a library, but that's still software you can theoretically write in C# too (but not done so for performance reasons).

However, the latter is not relevant. Don't aim to make C# your only hammer. Taste the world of programming. Have some C#, do some Unity, have a bite of Python and a flirt with Java. Try everything, have fun doing it, and keep the good parts and ditch the bad parts.

But some people said you can make a full-fledged game with just Unity, others were like not at all, so I was just really confused.

Welcome to the Internet where 10 people have 11 meanings opinions about 8 different things, although they all think they talk about the same thing as you are :P

The best way to find out how things really are is to try them yourself, so you can form your own (informed) opinion about it.

Thanks! Yah, I don't have the money or people to make a AAA game, but I just wanted to know what I could use Unity for, before I start learning C# and stuff and then find out it was all just a waste. Because this guy on Stack Overflow said that in his company they just used Unity to bring together all the logic, sound, graphics etc. from many other tools and Unity was just to stick it together, so then I thought "I knew it was too good to be true! You can't just use C# for graphics and everything (I know, sound might not be in Unity, but just the game)". But some people said you can make a full-fledged game with just Unity, others were like not at all, so I was just really confused.

I haven't really used Unity beyond making a very, very simple game to check it out (Asteroids type game). For that I did have to use external an external program - Blender to model my ship. That said Unity has an asset store where you can buy things such as models for use in the game so you could theoretically make an entire game using it. Those assets might not always be suitable to your game though and for an AAA game they most certainly won't be. If you aren't too fussed about the models in your game and you have no voice acting then you could probably do it.

In my opinion though Unity is a good choice, for any other engine out there (or most at least) you will still need external tools to create your bespoke art assets. Programming wise though Unity will probably be enough for you (you can use an external IDE to code in such as Visual Studio Community 2015 which is free). I think it's a good place to start if you actually want to make a game and I quite like c# as a language.

Interested in Fractals? Check out my App, Fractal Scout, free on the Google Play store.

I think some of the other posts made it clear. Unity can do it. Can you?

Every game engine has some limitations, and they may have things in some that are better than in other engines. Unity is famous for being behind UE4 in graphics, while it is also famous for being easier to use than UE4. But, as you are just starting out, you are very unlikely to run into any limitations of any game engine, even Gamemaker: Studio.



Thanks! Yah, I don't have the money or people to make a AAA game, but I just wanted to know what I could use Unity for, before I start learning C# and stuff and then find out it was all just a waste.

Learning anything programming related is almost never a waste. There are large amounts of overlap (since in the end it all gets run at the same computer) between languages, and other pieces of code like engines and libraries. You likely will not learn just one language, but instead learn a few, again expanding your set of tools, so you can pick the best tool for the job, instead of treating everything like a nail, since you only know about hammers.

I knew it was too good to be true! You can't just use C# for graphics and everything

Not sure I follow this. How is "draw this letter to the screen" exactly different from "draw this image to the screen"? In particular, since a letter is also a collection of black and white dots.

You generally make the pretty picture in some graphic editor program, but otherwise, "plot graphics" in C# (or any other language for that matter) is as simple as a 'plot image at (x,y) to the screen' statement. The actual rendering is then often done by a library, but that's still software you can theoretically write in C# too (but not done so for performance reasons).

However, the latter is not relevant. Don't aim to make C# your only hammer. Taste the world of programming. Have some C#, do some Unity, have a bite of Python and a flirt with Java. Try everything, have fun doing it, and keep the good parts and ditch the bad parts.

But some people said you can make a full-fledged game with just Unity, others were like not at all, so I was just really confused.

Welcome to the Internet where 10 people have 11 meanings opinions about 8 different things, although they all think they talk about the same thing as you are :P

The best way to find out how things really are is to try them yourself, so you can form your own (informed) opinion about it.

True C# is a language and you can think of it like this, If you speak some language and was greeted by someone of a different language could you convey an express to yet the other know that you are lost and need help? The answer in most cases is yes. With this stated most languages support rendering code in some fashion. At least for c#, it's totally backed by windows which means big Microsoft is investing millions in tools and other support platforms for the language. The .NET platform is the answer for the windowing system and DirectX is also supported so there is no reason for c# not being able to render. Now the performance issue with c# is becoming less of a problem.

AAA developers use c++ because right now that is the platform that gives the best tools and support but sooner or later that would change.

Bring more Pain

Simple answer. Pillars of Eternity, City Skylines, Crowfall, Oddworld (Remake), Assassins Creed Identity to name a few that have all been made with Unity. Whomever told you that, doesn't know what they are talking about. Could you maybe get more from UE4 or some other engine... perhaps! At the end of the day if you are trying to squeeze every little performance out of the game you are probably a studio making your own engine specifically for the game you are making, or completely hacking an open source engine.

No matter what language you use or engine you use, a bad programmer can make the slowest performing game in any of the fastest languages and/or engines.

What jschmuff said. Also, Kerbel Space Program was made with Unity. If City Skylines and Kerbel Space Program can be made from Unity, it's more capable than anything you are likely to be able to crank out in the next several years with a small team.

Personally, I've decided to do DX11 and then now OpenGL 4.5 (and probably then Vulkan) rather than Unity myself, but after spending 6 months with Unity I was pretty impressed. Unity is probably the right choice for many who are just starting out.

I chose OGL over Unity for several reasons. First, Unity gets me into the bad habit of buying pieces of a game and assembling them rather than learning game programming. That's more my fault than Unity's, but Unity does lend itself to that if you're not careful. Second, one of the reasons I do game programming as a hobby is to keep my programming skills up incase I ever need to find a job with that skill (I haven't programmed professionally in years now that I'm a database administrator, but it's a good skill to keep sharp). So, I like working in C++. Third, I like the minutia. For a lot of people who just want to make games, building their own model file exporter in Python to extract model data from Blender into a custom model file and then writing C++ code to read the custom data and turn it into an animated 3D model is not something they want to spend their time doing, when they can just export an FBX model from Blender straight into Unity and 10 seconds later they are done! Viola! Ready to make games! But personally, I like digging into the details and the deep knowledge of how all that stuff works and I want to teach it to others. So, while this may be the right path for me, it's probably not the right path for everyone. And most people are probably going to be more happy going with Unity rather than OGL or DX.

As for C#, I'm a huge fan of C# even though I'm coding in C++ these days. I learned my chops in XNA on C# which not only taught me what I needed to know to tackle DX11, but also C#. I got a lot of experience in C# and I became a lot more comfortable with object oriented programming. Don't knock C#. It's pretty awesome. XNA can do pretty much anything DX9 can do (XNA was built on top of DX9), but just with a lot less work. MonoGame is the new XNA built on DX11 and it's pretty much capable of doing anything DX11 can do. Just because it's managed code doesn't automatically make it bad. As for C# in Unity, that's a little different, but still nothing to turn your nose up at. C# is a good skill to learn. My C++ code is now days heavily influenced by my experience in C#. Before I learned C#, I wrote C code (non-object oriented) in C++. After years in C#, all my C++ code is heavily object oriented. C# just gets you into that OOP mindset and that alone is an invaluable reason to learn C#.

But judging by some of the games that have been produced with Unity, it's much more capable than you will be in the next several years. You're not going to hit a brick wall with it any time soon in terms of out growing it. And Unity keeps getting more powerful with every version. A few years from now it will probably be doing Virtual Reality on DX12 and Vulkan and that's some pretty advanced stuff.

But whether you go with Unity or OGL or DX or whatever, you should be thinking of making basic games for your first several projects. Everyone thinks they have to make WoW, or Elder Scrolls, or something because they are in 3D. Some of the best beginner projects are taking 2D classics and making them 3D like Pong, Space Invaders, Angry Birds, etc. Those are projects that one person can actually complete.

Since posting previously I downloaded the latest version of Unity to have a go at seeing how difficult it will be to make something in VR. After loading up Unity it took between 5-10 minutes to have a few simple objects down in a scene and being able to put on my Vive and walk/look around. I dread to think how long that would have taken me to do if I had to write it all myself. That's what engines are for!

Valve have a Unity plugin that made things incredibly simple.

Interested in Fractals? Check out my App, Fractal Scout, free on the Google Play store.

This topic is closed to new replies.

Advertisement