Whoever thinks that all these random 3D engines are worth anything to anyone but hobbyist programmers is delusional to say the least. "gui tooling" (or as I like to call it: "the engine") represents maybe 80 to 90% of value of an engine like Unity or Unreal. I'm sure that anyone who's actually done some project in one of these can confirm what I'm saying. The amount of money and time spent on the tools of UE is simply insane.
There is a lot of custom 3d game engines used even for commercial projects, I remember reading a survey where it was about 20-30%. Although companies do not opensource them since they see no value in it.
Tooling is a big chunk but it is not the main benefit of an engine in my opinion. There are so many optimizations and abstractions (think build, platform, gl, LOD handling, skeletal anim, memory handling for things such as landscape) done in your game to make sure it runs super smooth and beautiful at the same time that if you decided to do it yourself you would be working countless of hours to get to the first abstractions.
I think importance of tooling is highly subjective, depends on your habits and workflow. Some people need to have an editor like Unity, others just want to create their whole game in code, e.g. www.randygaul.net/2017/02/24/writing-a-game-engine-in-2017/
I suspect WebAssembly is going to create a niche for very lightweight engines optimized for download footprint, too.
And as you say, UE and Unity seem to be optimized for artist-driven projects rather than coder-driven projects. Which, realistically, are always going to be the majority of commercial efforts, but coders often prefer code. I've written a (basic) 3D object modeller app, and I still can't work out how to use Blender.
> I suspect WebAssembly is going to create a niche for very lightweight engines optimized for download footprint, too.
I wanted to create a simple 2D game once, aiming for lot of platforms, including mobile and web. Most engines (I looked into Unity and Godot) produced just too heavy results for web. I ended up using Haxe/Flixel.
That guy says his must-have feature of c++ is operator/function overloading. That seems an odd choice to me. I have been a c++ developer for over a decade. I would have leaned more towards it being a necessary evil.
It's a must-have for 3D programming, for working with vectors and matrices. OpenGL's shader language is basically C with (hard coded) operator overloading for this reason.
Could you explain a little more about how the operator overloading is used in this context? Is it just that arithmetic operators are made to work in their linear algebra sense on objects representing matrices, so M*N will return a new object representing the matrix product M×N?
That's exactly how it would be used. Game programming involves a pretty enormous amount of geometry and vector arithmetic, so it's a domain where being able to write s*(u+v) is an advantage over scaleVec(s, addVec(u, v)). Same logic applies to matrices, as you described.
Personally, I think there are more important advantages of C++ over C, and operator overloading can get ugly FAST if you're not careful.
But a game ships with a runtime, not an SDK. If you can build the game's content using proprietary tools, but ship that content backed by a FOSS engine compatible with the output of those tools, I think that gets you 90% of the way to being able to claim that your game itself is FOSS. Sure, people might not be able to alter and "recompile" the art assets from source without proprietary tooling, but they can alter the game mechanics, the scripting, the levels, etc. freely; and also introduce their own assets using whatever tooling they like.
I think they're referring to the GUI of the actual tools you're using within the engine, not the ability to create a GUI for your project in the engine.
I mean... just look at the screenshot of the OP. That needs some pretty serious work. :-/
Indeed, and even the new GUI is very limited. Also other tools are not really great, e.g. animation graphs. But I consider this Unity's way the cause of it's success. To make good tools you have to taylor it to specific use case, making it more complicated and limiting users with different use cases.
The proprietary, closed, vertically integrated tooling in Unity and Unreal are what make them such terrible tools for use in a professional development environment. All of the best programming tools are free, open source software. Yet somehow we're meant to believe game programming is "special" in some way that it shouldn't use the same ecosystem as every other area of software development. Yeah, right.
Because the values of the game industry are rooted in the demoscene, commercialization of game related IP assets and consulting work related specific hardware and design knowledge, without any religion about freedom of tooling, this is what most FOSS advocates fail to understand about the industry.
My opinion is quite similar to yours. I have never worked in videogames but my, uninformed, opinion has always been that open source videogames lag so much behind other types of open source programs because they require a lot of non-programmers to work. I don't think the complexity of the engines is the main problem, after all operating systems or compilers are also quite complex and critical software. So, what is so special about programming that makes people want to share their work for free? The only other field I think that has a similar collaboration culture would be academic research.
> So, what is so special about programming that makes people want to share their work for free?
I created my engine for myself, I guess a lot of open source projects start with one person solving his problem/having fun. I open source it because:
* money is not everything, it might bring value to some people, but I doubt people would be willing to pay for it
* even if it's open source it does not prevent me to earn money with it
* I benefit from people using it - submitting patches, reporting problems, testing on different hardware
* it can bring money in different ways
* if I share my property (e.g. car, flat, computer) with somebody else, it limits my use "rights", if I share software, it limits me in no way
Given that every other industry has moved to FOSS software for their tooling, it's the game industry that has a "religion" about proprietary software being necessary to make money.
The claim that "every other industry has moved to FOSS software for their tooling" is demonstrably false.
Has the graphic design industry moved off Photoshop and Illustrator? Has video editing moved off Avid, Premiere, et. al.? Have Windows devs abandoned Visual Studio?
I am not sure that game industry has a religion about proprietary software, they use a lot of open source libraries. But you need a lot of tools to make a game - GUI editor, animation graph editor, audio editor, cutscene editor, AI editor ... and it makes harder to create games if all of these editors are from different 3rd party providers with different controls, settings, installers, .... What is more some of these tools need to be taylored to the specific game or integrated too tightly with other editors. E.g. cutscene editor must be tightly integrated with scene editor, or AI editor must be taylored to specific game, since they use extremely different AIs.
What is more thare are not really FOSS tools for game industry. There is GIMP or Blender, but most artists prefer commercial alternatives because they are arguably better. Tiled editor is pretty popular for 2D. But other than there is almost nothing. I would love to avoid implementing an editor/debugger for my behaviour trees, or visual editor for shaders, but there is simply no good FOSS for that.