Advertisement

Getting started with Unreal Engine or something else?

Started by January 02, 2016 12:59 AM
12 comments, last by Gian-Reto 8 years, 10 months ago

Hello all,

I wanted to stop in and post here as I get started with Game Development. I have come to this site many times with the ambition of digging into game development. I am a Software Engineer in my day job, working in mobile development right now. I have experience with C++, Java, and a few other languages as needed.

I have gone back and forth for a while now where to start. I have a simple game idea I would like to build for my kids, but I keep getting stuck on what to start with.

The language and programming should not be an issue, I have a decent amount of experience and can pick up other languages as needed.

My Goals:

  1. Create some simple games to start for my kids and see where it goes from there
  2. Practice my programming and have fun doing it.
  3. Makes games just because I can.
  4. Who knows maybe someday publish a mobile game on Android or iOS.

Here are the options am battling with right now and the top reason I am considering them.

  1. Unreal Engine (C++)
    • Most articles on getting started I have read recommend starting with C++ if you know it because if it the language of choice in industry.
    • More than once I have seen it recommended to start with an Engine, I choose Unreal because I like that it is open source and that I can use C++
  2. Java and Android development (I need to find and Engine and a good tutorial for this still)
    • I enjoy Java as a language and could use more experience in Android development.
    • I have read that starting with mobile can be challenging. Is this true if I am already a mobile developer, just new to Game Development?
  3. SFML(C++)
    • Should I start without an Engine?
    • When would you chose to start with SFML?

Thank you all in advance for any help.

All of those are very viable choices, in my opinion. You're a Software Engineer so I have no doubt in my mind that you are fully capable of building a very nice game with whichever route you choose.

Now to answer your questions.

C++ is in fact the predominant language of the game industry. There are games written in many other languages though. Minecraft for example is written in Java, and is doing very well. What it comes down to though for you is, do you want to build a game or an engine? Now, some people may disagree with building an engine, but I think it's a wonderful idea. Not for the sense of it being practical (it's not), but for the sake of learning and creating something. Not every game needs a full-blown engine though. You could make your game and all the reusable parts eventually turn into your engine.

If you go with building your own engine, you have many, many options for graphics, sound, input, etc. I personally prefer DirectX (Window's only), but there is Allegro, SFML, SDL, OpenGL, probably other ones, but those are the main ones. Most commercial games are written using DirectX. The other four are all cross-platform. Keep in mind these are all graphics libraries. Allegro and SDL include input, however. I'm not sure if SFML does.

If you go with using a preexisting engine, there is Unreal Engine, Unity, CryEngine, etc. Some cost money, some cost lots of money. The first two are free, you need to pay for CryEngine, unless you have a student email address you can get it for free.

I hope this helped!

Advertisement

I recommend you take a look at Unity, and at GameMaker: Studio. Unity is generally easier to learn and use than the Unreal Engine, though the scripting is C#(and 2 other options) while Unreal Engine 4 uses C++. GMStudio uses a propietary C-Style scripting language called GML. It is quite easy to pick up if you have some programming background, which you do. Unity excels at 3d, while GMStudio excels at 2d, so that may also help make a decision.



All of those are very viable choices, in my opinion. You're a Software Engineer so I have no doubt in my mind that you are fully capable of building a very nice game with whichever route you choose.

Now to answer your questions.

C++ is in fact the predominant language of the game industry. There are games written in many other languages though. Minecraft for example is written in Java, and is doing very well. What it comes down to though for you is, do you want to build a game or an engine? Now, some people may disagree with building an engine, but I think it's a wonderful idea. Not for the sense of it being practical (it's not), but for the sake of learning and creating something. Not every game needs a full-blown engine though. You could make your game and all the reusable parts eventually turn into your engine.

If you go with building your own engine, you have many, many options for graphics, sound, input, etc. I personally prefer DirectX (Window's only), but there is Allegro, SFML, SDL, OpenGL, probably other ones, but those are the main ones. Most commercial games are written using DirectX. The other four are all cross-platform. Keep in mind these are all graphics libraries. Allegro and SDL include input, however. I'm not sure if SFML does.

If you go with using a preexisting engine, there is Unreal Engine, Unity, CryEngine, etc. Some cost money, some cost lots of money. The first two are free, you need to pay for CryEngine, unless you have a student email address you can get it for free.

I hope this helped!

Thank you all for responding and sorry for my delayed response. This is great. I have decided to do the following.

1. Continue trying to pick up some Graphics classes and work in my Grad school work. As a result I am getting experience with openGL and low level Graphics programming.

2. Pick up 1 engine. I am currently planning to pick up Unreal Engine to start. It allows me to work with C++ and to focus on creating the games and learning the engine rather than worrying about the language.

3. Once I have played with the Engine a bit start my first game, something small and finish it.

Thank you all again.

Good luck Raand. It looks like you have chosen a path so give it a whirl and see how it turns out. I just wanted to add in my thoughts to echo what someone else said above. It sounds to me that you are looking for something simple and easy to deliver small games potentially to a mobility audience. If that is the case I urge you to look at Unity. Amazing engine, simple scripting and great and powerful UI. It's cross platform with it's own compiler and allows you to do C++ right in the engine.

Just a thought. Take a look at it but either way good luck to you.

Mark MacPherson
Flybynight Studios: Owner
Current Skillsets: Project Manager - Team Lead - Scripter - 2D Artwork - Basic 3D Modeller - Web Development - Marketing - Administration

Good luck Raand. It looks like you have chosen a path so give it a whirl and see how it turns out. I just wanted to add in my thoughts to echo what someone else said above. It sounds to me that you are looking for something simple and easy to deliver small games potentially to a mobility audience. If that is the case I urge you to look at Unity. Amazing engine, simple scripting and great and powerful UI. It's cross platform with it's own compiler and allows you to do C++ right in the engine.

Just a thought. Take a look at it but either way good luck to you.

So I was looking at Unity when I started, but I was unable to find any tutorials with Unity using C++. I will have to do a bit more digging. This was also pre the free SDK update, I thought c++ dev was an extra fee.

Any suggestions?

Advertisement

So from what I am finding, it looks like you can use C++ only in Plugins and then wrap them in C#, is this true?

I am new to using these engines, does this add complexity into the development process with Unity?

I was hoping to avoid learning another language and focus on learning the engine right now. Also I know C++ is the predominant language in the industry right now.

So from what I am finding, it looks like you can use C++ only in Plugins and then wrap them in C#, is this true?

I am new to using these engines, does this add complexity into the development process with Unity?

I was hoping to avoid learning another language and focus on learning the engine right now. Also I know C++ is the predominant language in the industry right now.

That is correct.

I have used some Third party assets, engine "plugins" basically, that where written in C++. The only real advantage that I know of is that the code was closed source as I only had access to the compiled executable. Well, its an advantage for the plugin developer, not for me as a customer. If I get C# code with a Unity asset, I usually get the code to put into the engine and let it compile it. That gives me the advantage to look into how things are done, fix bugs (One of the C++ plugins had a bug, and it took me quite a while to get the developer to fix it. Would have been easier with c# code), and tweak the code to my projects needs.

Now, I haven't seen anyone yet using C++ for actually writing game in Unity. I am sure it is possible, because some of these thirdparty assets where runtime assets for use ingame.

If they have a performance advantage IDK. Could be. Depends on the performance hit of the translation layer between C++ and C#, don't know if anyone measured it yet.

The big disadvantage of course is complexity. Unity is driven by C#, or Unity Script. All the C++ code you write is a seperate executable that gets called by your game code. So you will need some C# code, at least as "glue code", to trigger your C++ parts.

Now, moving to C# from C++ shouldn't be much of a problem. If anything, C# should be EASIER to use. You can forget about many topics that you cannot in C++, at least unless the engine / framework you are using is not taking care of it (memory management comes to mind).

Add to that that the C# API of Unity is actually pretty clean and easy to use (its basically Mono + Unitys own classes), and I would question why you would want to avoid it.

If you just happen to dislike C# or managed languages in general, that is fine. But given that dislike is strong enough to stop you from making a quite easy transition from one language to another, I'd say Unity might not be the engine for you. If you need to bend a tool until it almost breaks because you don't want to bend yourself to that tools way of working, you might be better off looking for a different tool.

About C++ being the predominant language... yes, for console and PC AAA development that might be true. Its not in the mobile world, or for Indies. Indies and hobbysts generally use the easiest tool they can afford, and that is hardly ever C++ when it comes to programming. I say that as a not so expierienced C++ dev, that tried to get a C++ engine to work for me before (that did wrap C++ until it looked almost like C#, at the expense of flexibility), and currently tries to get into Unreal Engine 4 (which, after using Unitys C# API for 3+ years, just feels clunky).

If you are looking to become the right guy to be hired by AAA studios as a programmer in the future, C++ knowledge is highly advisable, even though Unity is getting quite some traction even with the bigger studios. AAA is becoming so expensive lately that even the big boys try to become scrappy and lean with their smaller projects.

If you just want to develop games in your free time or become an Indie, then don't abandon Unity just because of the language (unless you really cannot get on with it)... there are many things wrong with Unity, but from expierience I can tell you efficiency is one of Unitys strengths that you will struggle to find in other (C++ enabled) engines.

If you really cannot get Unity / C# to work, your next best bet is Unreal Engine 4. From my own expierience, this engine is quite a step up in the complexity / inefficiency ladder. Its still worlds apart from some of the other engines (CryEngines comes to mind) where you really have to work with dated looking tools and clunky APIs. And of course, UE4 has MANY advantages over Unity (for example a runtime engine that wasn't written in 2007 and just patched up for every major release like Unitys). This engine has a community that is just as large as Unitys, and quite some documentation (just not as well indexed and complete as the one for Unity).

Its just that when we are talking about efficiency, ease of use and the learning curve, Unity is still on top. If that matters to you more than being able to stay with the language you are most comfortable with, only you can tell.

People say Unity is easier to learn than UE4 but it is not a fact. UE4 was far easier for me, and I never warmed to Unity at all.

Maybe it's because I'm a C++ coder and not a C# one.. either way it's still subjective.

And of course, UE4 has MANY advantages over Unity (for example a runtime engine that wasn't written in 2007 and just patched up for every major release like Unitys).


No, instead you get an engine which has been 'patched up' over a much longer period... some bit of code in UE4 date back to around when the engine was first created back in the game of the same name times.

UE4 is not a 'rewrite', despite what people seem to think; bits of it have been rewritten but then bits of Unity have been as well so.. *shrugs*

Oh, and a minor correction from the OP; UE4 is not 'open source' - you can get the source, but it is not 'open' in the same way that zlib is open.
It's a minor point but terminology is important...

This topic is closed to new replies.

Advertisement