Unreal Engine & Unity (C++ & C#) - Beginner Question

Started by
11 comments, last by lede 8 years, 7 months ago

C# at the surface may seem like it's better than C++. But, the two are actually on par to each other. Both C# and C++ can be an utter pain to learn reguardless of what you are trying to do.

C++ was a breeze for me to learn, even with pointers, polymorphism, inheritance, and it's fuggly errors.

C# was the most confusing thing I ever glanced over, and... in the end it infuriated me with it's hand holding, and confusing cases for when we need to instantiate or not. Also I hate how it passes around data.

But from my perspective? Go ahead and learn Unity. I personally hate Unity for a plathora of reasons, and a number of them are unbiased. But I can not deny it's simplicity and amazing api for people just learning.

Yep, the two are very different in how they reach their goals. It is interesting you found C# confusing. I guess it depends on how deep you have climbed down the C++ rabbit hole. I find that when you get real deep into one language, and with c++ it requires low level thinking, it can hamper using another language as you try to use it exactly as you would the other.

I have not seriously used C++ in anger for many years now. My real dive into it was back in Visual Studio V1.52 (shows my age), so real early on. I have used since but have to say that with all the new additions the language has got a bit noisy in the syntax now. I started C# back in .NET 1, so pre generics when it was still a poor Java clone. I love how the language has transformed and the power it has gained. I has also started to get a wonderful terseness of syntax. C# 6 is great but it still needs some improvements with type inference.

I take it by hand holding you meant the type system is more strict that C++?

OP - Sorry for this sideline hijack.

Advertisement

Choose option C. You have started to learn C++ and it sounds like you are doing OK with it. You state in your post that you don't care if you are making simple 2D platforms or FPSs. In this case there is no need for you to start using a big engine like Unity or Unreal.
Choose a simpler framework such as SDL or SFML and start making simpler games using the C++ that you already know. After a little practice and your first few games you will probably understand enough to have another shot at Unreal (and possibly Unity too).

There has been some really good advice posted so really take what these skilled people have said and think about your goals as a game developer.

Buster2000 talked about option C which is close to writing your own game engine. This is a big task but is a lot of fun and you will learn tons about any language you chose to make a game engine in. Doing this in C++ and SDL or SFML is a good route and you don't have to worry about the overhead of the commercial engine.

Please don't start a language war and say one language is better than another because of xxx features. Each language was developed for a specific need that help developers quickly get their projects completed. Yes even C++ was created to speed up programming development. How many here can say they programmed on a punch card? I did when I was very young and let me tell you it sucked when it came to debugging. As each language has developed they have tried to take lessons from other languages and try to make their syntax easier and faster to use. Truth be told once you understand some basic principals in programming they typically will translate between languages. So learning C/C++ is a good idea and will help you build more optimized code.

Now back to the original question. Should you keep using C++ or dump it to learn C#? This is because you have found Unreal to be a little more difficult to use and Unity just seems so much easier. On the surface this is what can be perceived but is further from the truth. The artist side of me likes Unity because it seems very intuitive to build a scene like I was working in a 3D program. The programmer inside me likes it too because Unity Scripts are easy to build and is well documented. My perception is that Unity allows me to build a game with little to no effort. Add some simple scripts to the project and you have a very functional system started.

Unreal on the other hand is a little more difficult to get up and going. When I worked with it they released a new build every few weeks and I would spend more time downloading support files and building the base system then I did making games. This was due to a lot of bugs in each release build that needed to be ironed out. For the most part once you built the game engine and got the editor up and running you could use it to do most of the same things Unity does. From the start, selecting the right project template was one of the most difficult decisions. Using blueprints is very powerful and easy to use. It is drag and drop but what I found personally the GUI was slow and cumbersome to use so jumping to code for me was a lot more alluring. You will be working with a form of C/C++ that has an additional precompiler injected custom Unreal features. This experience is dated because I stopped using Unreal when they opened their source code.

Either way both systems are not easy to learn. You will need to decide are you more interested in programming or game design? If you like programming then I would take option C because it is a LOT of fun! If you want to design a game and want something that is playable in a few weeks then pick one of the two engines. One way to find which engine you like is setup a task and try and make it happen in both engines. This will show you which one you find that makes sense or has good documentation.

Good luck with your decision.

This topic is closed to new replies.

Advertisement