In terms of engine technology, what ground is left to break?

Started by
41 comments, last by TrianglesPCT 8 years ago

Unity and UE4 are very flexible, very generic, friendly, very powerful & very portable. But this has come at price of performance where they pale against a custom tailored engine (by several orders of magnitude, I'm talking between 4x & 10x difference)

That's really interestering. Could you give an example or two where another engine is that much faster than Unity or UE4?

Fox engine seems superior to both Unity and UE4 performance wise.

Advertisement

Ideally, the world of art should be available to as many people as possible with as few technical impediments as possible. Until all impediments have been removed there is a way to improve engines, if not presently, then in the future.

That is to say that "artists", animators, programmers, musicians, actors, voice actors, and writers should be made as obsolete as possible.

Until anyone can imagine a world and/or story within that world and have it come to life with a mere thought, then there is much more work to do on engines and the tools we use to express ourselves on the various canvases.

The goal of writing a book is not the words on the page but that the message is transmitted faithfully from author to reader and the same is true of every other medium. We are impeded by the fact we do not have tools to make these mediums available to everyone. To make these tools should always be the end goal of tool makers.

As to specific technologies and ideas that could be improved upon is perhaps a dynamic interpretive model creator and animator which would take input from the person and interpret it into what is desired... Adaptive AI constrained to certain knowledge and personality settings... Procedural music generation... Voice Synthesis technologies... Common Spoken Word conversion to computer languages... True procedural world generation and localized predictive procedural generation of language, animals, civilizations, etc

No offense to you guys, but skimming what you guys have said, kinda not evolutionary or revolutionary to engines. All you are talking about is faster CPUs in reality as that is all most of that is. It's not that we don't know how to do it, but that we don't have enough power in the average PC to do it at the level we'd like to do it. It's either a new trick or more power, but that's nothing but a bigger hammer, not a better hammer. True, sometimes a bigger hammer is a better hammer, but when I think of making a better tool it's not very impressive to say make it sharper, make it bigger, make it harder. Those aren't new grounds in technology. They may result from new grounds in other technologies, but they, in themselves, are not new technology. So when someone asks me questions like this, I think what is the goal of the tool and what would make getting to that goal possible for as many people as possible.

It's already been touched upon, but cater to a specific type of game, or a specific target market (IE mobile), or both; then design and optimize an engine solely based on that criteria. That's probably the only way for a small team to provide something that's notably more useful to anybody than the general purpose engines that developers are already familiar with, in a way that the developers of those engines definitely won't have caught up with/surpassed you by the time you've got something useful.

I'm not familiar enough with modern game engines to know what ground is left to break. I like to work on simple 2D games, so I don't have use for cutting-edge technology. Above is just general advice.

A note, "faster" and "better" are going to be a little subjective and specific to individual needs.

Being able to easily switch between a mobile device and a heavyweight PC may be considered highly important in one project, irrelevant in another.

Being able to peg all the CPUs with useful work may be considered highly important to one project. Perhaps the game is hugely compute-heavy.

Being able to peg all the GPUs with useful work may be considered highly important to one project. Perhaps the game is hugely graphics-heavy.

One of unity's biggest strengths is the cross platform nature. A few check boxes (plus some thoughtful development and QA) and your game is ready on many systems, 25 platforms and growing. However, that comes with a lot of limitations. A big one, the simulator by nature is serial, trying to introduce multiprocessing is an exercise requiring care and knowledge of how the system can break on various platforms.

Perhaps you want to build a beautiful graphical world and you have art-folk and technical folk who know how to exploit every detail of a modern graphics card. You won't be able to reach that with a cross-platform engine. The same abstractions that enable portability will destroy your ability to specialize to the one system.

Features that you want in your game engine may be a waste to what I want from my game engine. So it is a good thing there are many to choose from. Engines are incorporating new ways of doing things, new ways to simplify difficult tasks, and there is no end in sight. There will always be something new and exciting that could be added.


That is to say that "artists", animators, programmers, musicians, actors, voice actors, and writers should be made as obsolete as possible.

Until anyone can imagine a world and/or story within that world and have it come to life with a mere thought, then there is much more work to do on engines and the tools we use to express ourselves on the various canvases.

In one of his QuakeCon keynotes, John Carmack said something along the lines of: "Just because you have the best chisel in the world, that doesn't make you a sculptor".

A lot of people think "I've got all these awesome ideas for images, now if only I knew how to draw!", but there's a problem with that. If tomorrow, everyone on earth was magically able to effortlessly produce on paper the images they had in their minds, the people who had trained to do that would still make better images, since they've come to understand what makes an image good, rather than just having a good idea.

I'd summarize it like this: There's a craft to the art, but there's also an art to the craft. You simply cannot have one without the other.


Even my small-time engine completely hands-down destroys UE4 and Unity when it comes to rendering efficiency, but they win on tools and ease of use. We had a situation recently where an artist accidentally exported a model as 2000 sub-meshes, in a way where the tools weren't able to re-merge them into a single object. That would cause a serious performance issue in unity, but in our engine we didn't notice because it was chewing through 2000 sub-meshes per millisecond...

Why do you think UE does that so much slower? Looping through a bunch of meshes, binding buffers and shaders, shouldn't leave room for extreme overhead?

Even my small-time engine completely hands-down destroys UE4 and Unity when it comes to rendering efficiency, but they win on tools and ease of use. We had a situation recently where an artist accidentally exported a model as 2000 sub-meshes, in a way where the tools weren't able to re-merge them into a single object. That would cause a serious performance issue in unity, but in our engine we didn't notice because it was chewing through 2000 sub-meshes per millisecond...


Why do you think UE does that so much slower?

Unity is really slow too. Not just UE4.

Looping through a bunch of meshes, binding buffers and shaders, shouldn't leave room for extreme overhead?

And within your phrase lies the answer. A modern D3D11 / GL4 engine only needs to map buffers once (unsychronized access FTW) and bind buffers once. Updating the buffers can be done in parallel. Texture arrays also allow binding textures only a couple times per frame.

A GLES2 engine (necessary for mainstream Android support) requires changing shader parameters per draw and per material, and bind buffers per sub-mesh. Also bind textures per material. Oh! all of this must be done from the main thread.

Unless they put huge amount of resources maintaining two completely different back ends, the least-common-denominator dictates GLES2-like performance will limit all other platforms. And even if you put completely different backends, they're so different it will affect the design of your front end one way or another, still limiting the potential.

Like I said earlier, supporting so many platforms comes at a cost.

And that's without examining that it's not the same to have an engine that is cache friendly, SIMD-ready, using Data Oriented Design principles will beat the heck of an engine that didn't put extra care in data contiguity or SIMD-friendliness. Branches can kill your performance.

A few others have already said something to the same extent. It might be worth saying in this fashion though.

My personal opinion is that the ground left for engines to explore is the same as CPUs have. CPUs aren't really getting a whole lot faster, instead the focus has become on scale (ie. parallel processing). We can always add more complexity to games, but if the engine can't prioritize which data to process when then the illusion tends to shatter.

I'm basically just saying this: more lights, more rays traced, more entities, more AI's, etc. The technical side is quite limited really, there is far more left to explore in terms of creativity and design. I'd like to see more socially geared matchmaking systems, in fact I don't recall ever hearing/reading about one. Another one *might* be real time shadows, my game collection has more *new* 2d indie games than AAA 3d games; what I mean is I don't have an up to date knowledge of bleeding edge real-time graphics.


That is to say that "artists", animators, programmers, musicians, actors, voice actors, and writers should be made as obsolete as possible.

Until anyone can imagine a world and/or story within that world and have it come to life with a mere thought, then there is much more work to do on engines and the tools we use to express ourselves on the various canvases.

In one of his QuakeCon keynotes, John Carmack said something along the lines of: "Just because you have the best chisel in the world, that doesn't make you a sculptor".

A lot of people think "I've got all these awesome ideas for images, now if only I knew how to draw!", but there's a problem with that. If tomorrow, everyone on earth was magically able to effortlessly produce on paper the images they had in their minds, the people who had trained to do that would still make better images, since they've come to understand what makes an image good, rather than just having a good idea.

I'd summarize it like this: There's a craft to the art, but there's also an art to the craft. You simply cannot have one without the other.

True. Everyone can speak, but not everyone is good at giving speaches. Regardless, that doesn't mean that we shoudn't be trying to give everyone the ability to speak if for some reason not everyone could.

I am going to go ahead and say that one of the things that is still largely lacking in modern game engines, especially off the shelf solutions like Unreal and Unity is scaling parallelism, game engines nowadays just don't scale very well to the hardware without a lot of faffing about, take unreal for instance its CPU utilization is quite poor. We have started to see a few large strides in the right direction with Naughty Dog and 343 and their crazy 90%+ CPU utilization but these are still custom implementations for very specific purposes. At some point hopefully you will be able to run your UE4 game on an 8 Core CPU and actually get the full benefit of it without having to target that specific hardware.

The same could be said for GPUs which is even less utilized, SLI and the like.

This topic is closed to new replies.

Advertisement