Advertisement

C++ and Lumberyard engine

Started by February 09, 2016 03:18 PM
6 comments, last by Tutorial Doctor 8 years, 10 months ago
I'm very new to programming and using C++. I'm trying to figure out why I need knowledge of programming to use a game engine like Lumberyard. It seems like you can develop a game with just the tools the engine gives you. What would knowledge of C++ help me if I use this engine.

Thanks!

O_o

Okay, sit down and listen.... ;)

Yes, modern game engines ship with very extensive tools. These tools, in some cases, allow you to create elaborate scenes and add SOME functionality to it without coding.

Now, when you want the scene to really come alive is when code becomes necessary. Something must tell the entities you placed in the scene (characters, vehicles, windmill for your donqui chote character to attack) how to act, and react interactively... something must bind your players controls to ingame actions. Something must inhale some AI -"intelligence" into your mobs.

This code could be third party code you bought in an engines asset store, or got for free from the internet... which works fine for Unity because it has a huge community, but of course not for a new engine like lumberyard. This could be done with a visual scripting tool, which lets you drag and drop your code together... but you still need to know programming basics even though the syntax of C++ / C# has been replaced with some "visual syntax" (Integrated into Unreal Engine 4 natively, can be bought as a third party asset for Unity... for Lumberyard most probably not available as of yet).

Even in the two biggest "free" (-ish) engines, Unity and Unreal Engine 4, which have big communities and had a lot of time to iterate on this kind of thing, you will still need some programming skills to get anywhere. Yes, you can circumvent C++ now in Unreal Engine 4 if you want to, and nobody forces you to learn C# to get things rolling in Unity. But that doesn't change the fact that somewhere, someone needs to write some code in some tool or language to make your game interactive.

Now, Lumberyard. At the moment, it seems to be more or less CryEngine. I don't know what the current state of the Engine or its toolset is, but some years ago the tools at least looked very dated and not very usable to me. When I tried to use them, they actually where quite dated not only look but also in functionality IMO. Which is why I deleted the engine from my drive pretty quickly and went back to other engines. I was just spoiled by Unitys awesome editor at that time.

That might have changed in the meantime, but I don't think CryTek was really able to catch up to Unity and epics Unreal Engine in the tools sector... else CryEngine would be more used among Indies and Hobbysts, and not just by big studios that can employ some guys to customize the engine into a usable state toolwise.

If I would hazard a guess, CryEngine / Lumberyard most probably hasn't gone to the length of developing its own visual scripting tool yet. They might have done this for their shaders, where this has been done before in 3D packages and whatnot. But I haven't heard of CryEngine shipping with a visual scripting tool... given that CryEngine can also be downloaded for free, I am certain this would have made some waves in the Indie and hobbyst scene.

So, given that CryEngine hasn't added a second option for scripting (and given their smallish user base outside of a few big AAA titles, why should they?), and C++ is THE biggest language for developing AAA PC Titles, C++ is most probably required for getting any kind of interactivity running in CryEngine / Lumberyard, full stop.

If you want to start game development with as little coding hassle as possible, Lumberyard most probably is a bad idea. At least for now. Could be that there is some super secret additional tweak Amazon did to the basic CryEngine, but given they didn't, the engine tools will be less usable in its non-customized state than Unreal or Unity.

May I ask why you would go with Lumberyard instead of Unity or Unreal? Is it the "totally free" part (which is mostly a non-issue for 99% of non-commercial people as they will hardly ever sell enough for royalities to kick in or to need a commercial license)? Is it the networking part (where I heard people complain about the performance of AWS, and options seem to be pretty limited as long as you don't DIY)?

Advertisement

O_o

Okay, sit down and listen.... ;)


Yes, modern game engines ship with very extensive tools. These tools, in some cases, allow you to create elaborate scenes and add SOME functionality to it without coding.
Now, when you want the scene to really come alive is when code becomes necessary. Something must tell the entities you placed in the scene (characters, vehicles, windmill for your donqui chote character to attack) how to act, and react interactively... something must bind your players controls to ingame actions. Something must inhale some AI -"intelligence" into your mobs.

This code could be third party code you bought in an engines asset store, or got for free from the internet... which works fine for Unity because it has a huge community, but of course not for a new engine like lumberyard. This could be done with a visual scripting tool, which lets you drag and drop your code together... but you still need to know programming basics even though the syntax of C++ / C# has been replaced with some "visual syntax" (Integrated into Unreal Engine 4 natively, can be bought as a third party asset for Unity... for Lumberyard most probably not available as of yet).

Even in the two biggest "free" (-ish) engines, Unity and Unreal Engine 4, which have big communities and had a lot of time to iterate on this kind of thing, you will still need some programming skills to get anywhere. Yes, you can circumvent C++ now in Unreal Engine 4 if you want to, and nobody forces you to learn C# to get things rolling in Unity. But that doesn't change the fact that somewhere, someone needs to write some code in some tool or language to make your game interactive.


Now, Lumberyard. At the moment, it seems to be more or less CryEngine. I don't know what the current state of the Engine or its toolset is, but some years ago the tools at least looked very dated and not very usable to me. Which is why I deleted the engine from my drive pretty quickly and went back to other engines.
That might have changed in the meantime, but I don't think CryTek was really able to catch up to Unity and epics Unreal Engine in the tools sector... else CryEngine would be more used among Indies and Hobbysts, and not just by big studios that can employ some guys to customize the engine into a usable state toolwise.

If I would hazard a guess, CryEngine / Lumberyard most probably hasn't gone to the length of developing its own visual scripting tool yet. They might have done this for their shaders, where this has been done before in 3D packages and whatnot. But I haven't heard of CryEngine shipping with a visual scripting tool... given that CryEngine can also be downloaded for free, I am certain this would have made some waves in the Indie and hobbyst scene.
So, given that CryEngine hasn't added a second option for scripting (and given their smallish user base outside of a few big AAA titles, why should they?), and C++ is THE biggest language for developing AAA PC Titles, C++ is most probably required for getting any kind of interactivity running in CryEngine / Lumberyard, full stop.


If you want to start game development with as little coding hassle as possible, Lumberyard most probably is a bad idea. At least for now. Could be that there is some super secret additional tweak Amazon did to the basic CryEngine, but given they didn't, the engine tools will be less usable in its non-customized state than Unreal or Unity.


May I ask why you would go with Lumberyard instead of Unity or Unreal? Is it the "totally free" part (which is mostly a non-issue for 99% of non-commercial people as they will hardly ever sell enough for royalities to kick in or to need a commercial license)? Is it the networking part (where I heard people complain about the performance of AWS, and options seem to be pretty limited as long as you don't DIY)?

Reason why I picked Lumberyard over Unity is mostly due to it being "new". I have no issue with learning C++ I just wasn't sure where the knowledge would come into play with these game engines. Thank you so much for your analogy of "bringing life" to what's being shown on the screen.

Ah I thought Unity was also a completely paid engine which deterred me from wanting to read more about it.

Would you recommend Unreal or Unity if I have knowledge of C++? I would primarily want to make either a single player offline game or maybe an interactive game online game almost like TwitchPlaysPokemon.

Also I'm using SoloLearn to learn more about C++, to your knowledge is that a good source to find more info about programming in general not just for gaming?

Edit:
After reading more stuff online I'm leaning towards UE4 because of how large the community is for it and well established. If anyone has a beginner section to show me I'd appreciate it.


Reason why I picked Lumberyard over Unity is mostly due to it being "new".

New isn't always better - it mostly benefits large teams building cutting-edge graphics and scale. In particular, since Lumberyard is in beta, there is a pretty good chance that you will be dealing with bugs, etc. that get in the way of learning.

You'd be better off learning a tried-and-tested game engine, with plenty of tutorials and other learning materials, and then transferring that knowledge to a new engine if you reach a point where you are exceeding the limitations of whatever tool you chose.

*disclaimer: I work for Amazon AWS, although not on Lumberyard. My views are my own and not those of the company, etc.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

Reason why I picked Lumberyard over Unity is mostly due to it being "new". I have no issue with learning C++ I just wasn't sure where the knowledge would come into play with these game engines. Thank you so much for your analogy of "bringing life" to what's being shown on the screen.

Ah I thought Unity was also a completely paid engine which deterred me from wanting to read more about it.

Would you recommend Unreal or Unity if I have knowledge of C++? I would primarily want to make either a single player offline game or maybe an interactive game online game almost like TwitchPlaysPokemon.

Also I'm using SoloLearn to learn more about C++, to your knowledge is that a good source to find more info about programming in general not just for gaming?

Edit:
After reading more stuff online I'm leaning towards UE4 because of how large the community is for it and well established. If anyone has a beginner section to show me I'd appreciate it.

Well, you usually don't want the "new" engine until it is well out of beta, and probably into its first minor release... smile.png

Then, the engine is not that new. Until I hear the full list of improvements done over CryEngine, I will guess its just CryEngine with minor tweaks. Given that my knowledge of CryEngine is 3 years old, that MIGHT not be a bad thing though.

Now, as to Unity being "free"... a lot has change thanks to Unreal Engine 4 and their "free" engine (which is free besides 5% royalities above some threshold, a really nice deal). Now Unity 5 is free fully featured (AFAIK), with the caveat that you need to buy a commercial license for every seat you need as soon as your sales go over some threshold.

If you wouldn't already know C++ I would have recommended Unity 5... it lacks the last polish graphics wise out of the box, and I would dare to say performance is not quite equal yet with Unreal Engine 4 (Unity reuses their engine between major releases and just rewrites the parts that are new, whereas Epic claims to rewrite their engine with every major release).

But the tools and editor of unity is just hard to match. No matter how cool the visual scripting tool of Unreal is, the editor workflow of Unity is much better when it comes to efficiency. If you want to throw together a working prototype in the minimum amount of time, Unity is the best choice.

When it comes to community, Unity still has some edge on UE4. At least if you also look at third party assets and the asset store. And the API / tutorials. Epics documentation is quite big, but the indexing is a mess sometimes. A lot of important stuff is left to "download an example project and read the code" shenigans... Unity also does that at places, but most of the things come with a tutorial or documentation page.

Point in case: I am trying to write PhysX glue code in C++ for UE4 at the moment. Looking at the official documentation, I see some pages on blueprint. And then some information about the same functionality also being available in C++. Instead of explaining me in the documentation how to write the C++ glue code frowm scratch, I am left to create a vehiclePhysics example project, fire up Visual studio and oogle at the code. Granted, it seems to be clean code and is fairly easy to read. Still, some more documentation would be nice.

Especially as in Unity, not only is every PhysX glue "entitity" well documented, but much easier to use and setup in the editor. If only they hadn't broken the running system with their PhysX upgrade for Unity 5 for some minor performance gains

Of course, language of choice in Unity is C#. If you don't want that, UE4 is your best bet. And from what I can tell until now, its a mighty fine bet. Just not quite as easy to use as Unity at times. But everything comes with a price, I guess. And in Unity, that is the godawful renderer that shows every little imperfection of the model that doesn't show up in any other 3D tool. And of course, having 6 different flavours of FXAA to play with for the deferred renderer, but no real AA method usable for deferred as of now. TXAA is not the ultimate AA epic made it sound like, but if used in a static scene its close to perfect.

Long story short: both engines are mighty fine. Unity is a little bit easier to get into, Unreal a little bit more powerful. Lumberyard might turn out to be another good choice, though it is way to early to tell. Better to choose a different engine for now, unless you have time to download it (its free after all) and give it a spin... if you do, tell us what you think, I guess I am not the only one really interested to know how this new engine stacks up against the existing options.

Yup, I echo swiftcoder, for learning, an engine that has existed a while and is popular is the better way to go. Unity is C#, but one thing I really like is that I can type, "Unity <Whatever it is I want to know how to do>" in a search engine, and I almost always get a helpful link. Though maybe Lumberyard is amazing in its documentation. I suggest searching its documentation to try to do some things you know you're going to need to do. (pathfinding, physics, gui, whatever)

Advertisement

Unity reuses their engine between major releases and just rewrites the parts that are new, whereas Epic claims to rewrite their engine with every major release


Both engines are continual evolutions; bits of UE4 were indeed rewritten from UE3 but a lot was still the same on release (majority of the core systems for example). I think there was some miss communication and people made some leaps/assumptions which lead to this "UE4 was rewritten" legend.

Don't get me wrong; bits of both engines have been rewritten and reworked over time, what was good yesterday isn't going to be good today after all, but no one does a dump and rewrite, and certainly not in the time scale suggested.

(Having worked for both companies I feel I've got a degree of authority on this subject ;) )

I want to throw a recommendation into the mix.

The Godot Engine:

http://www.godotengine.org/projects/godot-engine

- Free

- Open Source

- Python-like syntax for scripting

- Easy to use for beginners

- Engine written in C++ (extensible with plugins/tools)

- 3D and 2D

- A possible Unity Killer ;)

- Not so new

They call me the Tutorial Doctor.

This topic is closed to new replies.

Advertisement