Meh, not impossible. Just have to replace and abuse a lot of the systems. As a tech demo, I got even more troops than Total War running and fighting without any problems. But it was running a custom animation system with hardware instancing, regiments of troops were just one SkinnedMeshRenderer with animation applied to bone groups.
Unity handled it surprisingly well. I believe the day has come where you can do anything that’s currently feasible inside any good proprietary engine. Better in a custom engine? Yes, if done right. But still feasible in Unity.
Built in support for this in the next rev will definitely open a lot of doors.
How’d your animation system work?
I donno man, I’d love it if I were just wrong/ignorant. But I think that getting equal levels of visual fidelity to total war in unity is going to border on impossible. If we’re talking about a significant step up from total war… I mean… unity performance still isn’t at the top of the scale. Historically games like total war require a very different set of optimizations than unity probably prefers. You’d have to rewrite almost everything, from lighting on down, no?
I would think that at this scale, you might also start to see more impact from a garbage collected language as opposed to straight c++ even.
Are you ready? Unity might not be the best fit for such a task, but I’d be a lot more concerned whether the people embarking on such an adventure are ready to make a cutting edge RTS. I think the engine won’t be the biggest issue here. That wasn’t directed at you specifically. I just think making a top of the line RTS is really hard.
RTS games are quite different from most ‘regular’ games. I wouldn’t be surprised if the big RTS games stay on proprietary engines for a few more decades yet.
I’m going to channel the old man a bit and say that high visual fidelity doesn’t really help the RTS game that much anyway. Sure supreme commander looked pretty. But with that many units on that sort of map size you spent most of the time zoomed out until they were just icons anyway.
I think in terms of value preposition most of these games would benefit from just keeping the assets lower fidelity, putting these development resources into something else, and not allowing the cam to zoom in so close that you’d notice it. The steam pages of such games are always full with impressive closeup shots and when I actually play I don’t spend even 1% of time in that perspective because it’s useless for playing the game. Also it often leads to the units being super hard to distinguish at a distance. That could be improved if the units weren’t designed primarily for flashy screenshots that will later be used for (what I consider bordering on false-)advertisement. Not saying that would help sales, it probably wouldn’t, but you know what I mean…
I think it’s worth noting that OPs link is talking about a generational step forward in the genre.
Something that mixes the global scope of a Hearts of Iron (full world simulation) with the detail and fidelity of the Total War franchise at full zoom. A full on global war simulator or other big steps forward.
Something that makes gamers go “Wow. I’ve never seen anything like that! I can’t believe games can do that!”
I love Unity, but that kind of thing is not what Unity is made to support.
You’ve got me on lightning. I didn’t touch upon that and could see that being a major headache redoing in Unity.
Animation system was basically just a simple threaded bone mover within the SkinnedMesh. Basically just a run-time to to transfer the animations into each individual group with instances.
This was in no way close to a finished product. I was literally testing just how many people I could get to fight within Unity.
Deserts of Kharak looks cool, but would that game really be considered a 4th generation RTS by the criteria outlined in the IGN article referenced by the OP?
In all fairness, we probably should not let the President and CEO of Stardock (the company that released Ashes of the Singularity) decide the definition of 4th generation RTS, because his definition of 4th generation would easily favor his company’s game. But let’s look past that for a moment and just play along with his definition for 4th generation RTS. Would Deserts of Kharak be considered a 4th generation RTS?
What 4th generation RTS games are currently being done using Unity 5?
Good point. I felt the same for RTW, artists surely spent a lot of time making all those close up modeled 2k textures and models, while i probably spent less than 5% of ingame time seeing them. Its just that it had to be done, just for the sake of certain types of scenes and moments where it was really required for. But then again i saw many other people do like to play often from close up. But then again if you are succesful development studio with some extra millions to throw around why not give some extra people work and bring the art higher than its minimum requirement.
Unity can do a lot, but it doesn’t seem to handle large-scale RTS’s very well. I think it’s mainly the performance on certain game-aspects (like animations) as well as having to work around the garbage collection issues that’s mainly holding it back right now. It’s making progress, but very slowly – although 5.4 should be a pretty big step forward (havn’t tested it yet though). And I don’t think Unity will ever be “geared” with an RTS in mind. Unity focuses on working on all platforms, which usually makes it a “jack of all trades but master of none”. RTS’s need a lot of specialized love, especially if you want to do something relatively innovative or new with them. Unity does not provide this love out-of-the-box.
Unfortunately I think the answer is no, it cannot make a next-gen RTS (at least not unless heavily, heavily, heavily, modified). It can make a small-scale RTS from about 3 to 4 years ago though.
The Unity engine has always been multi-threaded. Unity has been improving the use of multi-threading in the rendering queue to be able to take better advantage of DirectX12, but the engine has always been multi-threaded.
The scripting (the C# code that game developers use in Unity) does not take advantage of multi-threading. This is where the bottleneck could be when trying to build 4th generation RTS games in Unity. There are some clever ways to work around this limitation. For example, a game developer could manually schedule various AI tasks.
For example, in my current game, I have hundreds of AI units and thousands of projectiles, and I get hundreds of frames per second. I have achieved this through very careful time scheduling of all of the AI tasks, so not everything gets computed every frame. By manually scheduling AI tasks, I greatly reduced the amount of work done per frame. Anyway, this same concept could be applied to a large RTS to achieve similar scalability. I don’t know if it could give 4th generation RTS results, but it might get close.
Yes, once Unity “fixes” its old garbage collection problem, it will alleviate a lot of problems. Not sure if it will alleviate them all though. But when will it actually be remedied? They’re working on it, but it could be a year or more – who knows. I’m hoping it’s within a few months, but I wouldn’t bet on it. But I think overall, you’re right. And remember, I’m mainly thinking about the PC platform in my case (and PC only).
Here’s one thing I’m actually not sure about, and that’s animations. Being able to have thousands of animations on screen (or even several hundred) at a playable framerate has always been a huge problem (but as Landon said, it’s possible if you customize/modify it heavily, but he had to use his own animation system and it was basically faking 50 units as one). Will 5.4 in Unity alleviate this? I actually don’t know the answer to that. Before 5.4, Unity struggles with even 50 to 100 animations on screen at one time – again unless you heavily modify it somehow. Can you multi-thread animations? Does hardware instancing factor in here somehow? I actually don’t know.
Like I said though, I’m assuming 5.4 is a really big step forward for making RTS’s in Unity. So I’m hopeful. But it’s a kind of “I’ll believe it when I see it” type of thing.
Well, just to be fair, if you build a 4th generation RTS, you must use proper object pools instead of complaining about garbage collection. This is true regardless of the language, the compiler, or the engine.
And if you are planning to have thousands of characters in a screen, then you will need to fake it in some way to ensure scalability. That is true regardless of the engine.
For a 4th generation RTS with thousands of characters, I would suggest using LOD for the graphics. I would also suggest implementing LOD for the AI and animations. If the player is zoomed into a specific group of characters, run only those units with high level AI. Fake it with the rest of the units. Only do detailed animation of models that the player is closely looking at. Fake it with everything else. Don’t animate every joint on thousands of models that the player is not watching. Implement a dynamic system to automatically LOD the AI and animations based on the player’s camera and zoom.
With the AI, the low detail version might simply be a small, specific amount of damage per time period for each character in a huge battle with a small random amount of additional damage applied to each unit every random number of seconds. This would greatly reduce CPU load for simulating the battlefield, and it would yield a similar end result as manually calculating every individual weapon movement and strike. You would still run the high LOD AI for the units the player was closely watching, and the character will imagine the entire battlefield has the same high level of detail that the watched units have.
Remember, games are experiences for players. Games are not simulators.
I think you’d have to rewrite 2/3 of the engine to really come close, no?
I just don’t think Unity would be a serious consideration for any team who’d be looking to really build something on par with Total War, much less something a step beyond it. We’re really on a level way beyond like “use object pooling”.
That team would require full source access and would need to be working on low level optimization I think.