Existing 3D Game Engine for Gameplay Programming

Started by
32 comments, last by Emmet Cooper 11 years ago

Hi,

I have roughly 6 years of experience in programming 2D games, in Adobe Flash ActionScript 3.0 (OOP).

I've now decided to move on and become a C++ Gameplay Programmer in 3D games.

I'm looking to develop my Gameplay Programming skills in an engine that will open doors in the future.

I'm trying to avoid engines that use their own special scripting language (e.g. Unreal Engine 3 - UnrealScript), and focus on ones that allow me to program in C++.

Would you recommend using CryEngine 3? or possibly even waiting for Unreal Engine 4?

Keeping in mind that I most likely won't be able to get a license for whatever I make on the first run.

If not, should I go for smaller engines that allow free commercial use? If so, which?

My goal is to eventually work in one of the big game companies (CDProjektRed, Blizzard, Ubisoft...).

Advertisement

Hey Royibernthal,

If you're really wanting to start out easy then I'd suggest looking at a game engine called Unity. Unity basic is free of charge and a pretty easy engine to start with, in my opinion anyway. You can find that at www.unity3d.com. Unity uses UnityScript and C Sharp (C#), the engine is widely used by small-time game developers and both languages are relatively okay to learn.

There are many advantages to using Unity such as:

  • There is a large Unity community on and off the unity forums. It's easy to find and discuss topics. This is also a great way of finding solutions to any coding errors you may run into.
  • There are many pre-built scripts available online, making your development easier. Even and including a ton of free scripts on the Unity Asset store.
  • There are also a lot of available plugins for Unity.
  • Unity can create games for Windows, PC, Mac, Linux, iOS and Android. It's well known for its multiplatform ability.
  • Anyone can get a Unity Basic commercial licence.

These are some of many. It's worth checking it out.

CryEngine 3 and Unreal Engine 4 you may find harder to start with. Where CE3 and UE4 are undoubtedly more powerful, the coding structures are more sophisticated and the licences are harder to get if you're planning to sell a game commercially. You can of course get a free non-commercial development kit for both unreal engine and cry engine if you'd like to try them out.

Unreal Engine Development Kit: http://www.unrealengine.com/udk/

Crytek Engine Development Kit: http://www.crytek.com/cryengine

I recommend that you start out with Unity Basic, keep things simple for the start. It may take you a while to adapt from 2D to 3D programming.

I hope I managed to help you and I hope you meet your goal!

First of all, thanks for taking your time and writing this very detailed answer.

I considered Unity in the past but I'm definitely looking to program in C++ and nothing else.

A little discussion about the lack of direct C++ in Unity:

http://stackoverflow.com/questions/10188636/something-like-unity-but-for-c-programmers

Furthermore, I'd rather not learn a completely new framework which I intend to leave later.

I'm definitely not looking for the easiest option or something in the middle, I'm looking for the best one.

Difficulty is not a factor. I've got the time and the will to learn something new, I just need to know I'm on the right path before I dive in.

I'll try to rephrase a little bit.

Career-wise, would it be a wise choice to learn Unreal Engine 4 / CryEngine 3?

Would they open doors for me in the future, not only in the companies behind those engines?

Would any knowledge I gain from working on these engines be useful in other engines I might encounter in my career?

Would the experience add to my resume?

Alternatively, are there any other engines I should consider? Not because they are easier to get into, but because they seem like a good choice.

Have you thought of designing your own engine using the OpenGL library?

its math do it

If you want to use a 3d engine that will allow you to program with C++ you might consider trying the recently open-sourced Torque 3d. It's a capable formerly commercial engine with good documentation, and will certainly give you a good starting point.

CryEngine is definitely a good option that's very capable, but you might find it has a fairly steep learning curve.

You might also consider C4 Engine, Irrlicht, or Panda3d.

- Jason Astle-Adams

Royibernthal,

It is a shame Unity doesn't support C++. Considering it's likely to survive in game engines for 10 or over years.

A conversation about that if you're interested: http://gamedev.stackexchange.com/questions/37361/will-c-remain-viable-for-game-engines-in-somewhat-distant-future

I'm going to answer each of those questions directly for you!

1. Career-wise, would it be a wise choice to learn Unreal Engine 4 / CryEngine 3?

Yes, it would be a good career option and out of the two of them I would definitely suggest going for Unreal Engine 4. It's more widely used by games dev companies then CryEngine 3.

2. Would they open doors for me in the future, not only in the companies behind those engines?

Yes. I think learning to code in any engine will open doors for you in multiple companies, especially with the massively expanding market. This especially stands out for Unreal Engine 4 - although the engine isn't publicly available yet it will be around and possibly the game engine market dominator for many years to come.

3. Would any knowledge I gain from working on these engines be useful in other engines I might encounter in my career?

I think a good understanding of any 3D game engine gives you potential to work on other engines since most engines share the same attributes. I used to work with a Unity developer who had never before used Unreal Engine but managed to conquer it in a matter of days because he had a basic understanding of how the engine worked.

4. Would the experience add to my resume?

Absolutely. If you're looking to get a job in the games design industry that is to do with modelling or coding - you generally need a understanding of game engine coding/general development. Teaching yourself to code in say, UE4 would be impressive on a resume.

5. Alternatively, are there any other engines I should consider? Not because they are easier to get into, but because they seem like a good choice.

Good question. With the ever-expanding market in the games industry, more and more engines are becoming publicly available. You mentioned CDProjektRed in your post earlier (brilliant company by the way, love those guys) they are in development of their third witcher game which is running a new game engine, rumoured to be as powerful as Frostbite 2.

You'll find most big companies that know exactly what they want in a game will build their own engine for it. You'll also find that they will train you in how to build in that engine which is why you'll need experience in a well known semi-complicated engine, such as Unreal Engine 4.

Have you ever heard of a game called Infinity Universe? Those guys are building their own engine which generates and hosts thousands of planets automatically, they've been in development for a long while with barely any funding (that I know of, don't take my word on that) and they're still churning out some amazing looking stuff. You can check them out here http://www.infinity-universe.com/Infinity/index.php?option=com_content&task=view&id=12&Itemid=33

As Mathimetric mentioned, OpenGL Library is an option. Find that here: http://www.opengl.org/resources/libraries/

I hope this answers more of your questions.

Furthermore, I'd rather not learn a completely new framework which I intend to leave later.

This is a common thought process amongst beginners, but it can be a bit of a trap. If you get a job as a professional programmer you will usually not have a choice in the matter: you will be told to use a particular language/engine/API and expected to learn it and become productive quickly. An important skill to develop is the ability to learn and effectively use different technologies, and for most people this will be far more beneficial in the long run than simply getting experience with a specific engine that may or may not be used at your future place of employment.

By all means pick engines that you feel will yield good results and be useful to you in the long term, but don't let the fact that an engine might not be useful later hold you back.

- Jason Astle-Adams

quote "I have roughly 6 years of experience in programming 2D games, in Adobe Flash ActionScript 3.0"

you can design your own engine in c++ using openGL, and windows programming for free, and not need a license for what ever you produce.

I.E.

http://www.gamedev.net/gallery/image/3468-havoc-wreaker/

its math do it

I'd like to offer 2 other engines:

Panda3d (by disney) and Irrlicht. Both are FREE 3d engines, and both do a fine job. They will not compete with Unity or CryEngine, but they do a fine enough job.

Of the two - Irrlicht is the better option. It has better documentation, and even an ebook and a lot of samples.

Both work in c++ and are very easy to install. Irrlicht also has the option to work with C#, though the books and examples are still in c++.

jbadams

Torque3D is actually one of the engines I considered in the past, very good to know it now became an open source.

I understand what you mean, but I see for example easing into 3D by starting with Unity for example a little bit of a waste of time if I have a clear plan to move on later to Unreal Engine 4.

Mathimetric

Yes I have thought about that. I've actually spent some time learning Ogre3D until the folks in the forum made me realize low-level programming is pretty much irrelevant to a Gameplay Programmer, or rather I better put my time into working on an existing 3D engine. If you have a different insight please do share.

cgx11

That answered many of my questions indeed thank you very much.

From what you're saying Unreal Engine 4 sounds like the obvious choice (in my eyes at least), think there's a chance it'll get released this year?

I've never heard of Infinity Universe before but it sounds like a very cool project.

I have no doubt I'll most likely get to work on different engines in the future, but developing my own from scratch (although crossed my mind) doesn't seem like the right choice if I'm planning to become a gameplay programmer.

Like I told Mathimetric - if you have a different insight please do share.

shay.yizhak

Irrlicht seems like a fine engine, which would you personally prefer - this one or Torque3D?

On a side note, are you by any chance from Israel?

This topic is closed to new replies.

Advertisement