Assassin's Creed Unity Dev speaks: Consoles locked at 900/30, CPU's holding game back

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

Lil Frier

Platinum Member
Oct 3, 2013
2,720
21
81
IIRC, the IPC is pretty similar.

What's the GPU comparison, any idea? I mean, what's the market for Jaguar as a whole, if the Piledriver/Steamroller stuff is comparable on a CPU level? Is Jaguar stuff just capable of lower-watt idles (or generally lower power consumption)? Just haven't followed them that closely, and it makes me wonder why the console makers took Jaguar stuff over the big-core things.
 

zerocool84

Lifer
Nov 11, 2004
36,041
472
126
What's the GPU comparison, any idea? I mean, what's the market for Jaguar as a whole, if the Piledriver/Steamroller stuff is comparable on a CPU level? Is Jaguar stuff just capable of lower-watt idles (or generally lower power consumption)? Just haven't followed them that closely, and it makes me wonder why the console makers took Jaguar stuff over the big-core things.

Cost/Heat

They didn't want to lose money on each console sold and didn't want to have the heat issues that was prevent last generation.
 

Rakehellion

Lifer
Jan 15, 2013
12,181
35
91
This is pretty clear: ITT, people think throwing more threads at something makes it perform better.

The thing is, we do have threads. Multi-core CPUs have been around for 20 years and aren't going anywhere. GPU compute is nothing new either. To make a single-threaded game engine in 2014 is just lazy programming.

With the addition of mulithreading you get increasing complexity. This complexity increases the development time and the bugs.

AI is not a single-threaded task. AI should not be done on the CPU.

And, thankfully, they went the 900p@30fps route. It would just look awful at 1080p@60fps. This we know is true.

This is just plain stupid. The issue is that both the PS4 and Xbox One have the same graphical target to "avoid discussion" (i.e., Microsoft paid them to avoid discussion) about image quality.

The PS4 is unequivocally more powerful than the Xbox One. This should not be done.
 

mnewsham

Lifer
Oct 2, 2010
14,539
428
136
This is just plain stupid. The issue is that both the PS4 and Xbox One have the same graphical target to "avoid discussion" (i.e., Microsoft paid them to avoid discussion) about image quality.

The PS4 is unequivocally more powerful than the Xbox One. This should not be done.

yeah 50% more shader units available to the PS4

It's just a bullshit excuse and it's so obvious.
 

mmntech

Lifer
Sep 20, 2007
17,501
12
0
This is just plain stupid. The issue is that both the PS4 and Xbox One have the same graphical target to "avoid discussion" (i.e., Microsoft paid them to avoid discussion) about image quality.

The PS4 is unequivocally more powerful than the Xbox One. This should not be done.

Most likely. The PS4 is still outselling the XB1 2:1. So you're going to see Microsoft up to some desperate tactics to try and even the playing field. MS doesn't have very many first party devs to lean on. That means paying the big third party studios off to gimp PS4 games. I'm sure Sony knows this.

It's not like last generation where the hardware performance figures were more murky. Both systems were fairly even, but Xbox 360 was the lead development platform, easier to program for, and ATI GPUs at the time had better image quality than nVidia.

This time, MS chose to spent a big chunk of their hardware budget to bundle Kinect, which I don't think a lot of gamers really wanted anyway. Performance suffered as a result. Which sort of limits what devs can do with the system. The GPU is about 30-40% slower than the PS4's, based on comparable PC cards.

Now, I do like Kinect as a motion control platform. The voice commands are certainly cool. But if it's between gimmicky controller and better performance, I'm going to pick the latter. Which is why they eventually did unbundle, to make the system cheaper.

Right now, the Xbox One is cheaper in some countries. In Canada, it's $50 less than the PS4. Yet in the key American market, they're both the same price. Makes it a tougher sell. I can see it dropping to as low as $350 by next Christmas. Possibly sooner. Especially is sales keep trailing.
 

poofyhairguy

Lifer
Nov 20, 2005
14,612
318
126
This is pretty clear: ITT, people think throwing more threads at something makes it perform better.

With the addition of mulithreading you get increasing complexity. This complexity increases the development time and the bugs.

Ok but this isn't 1996 with the Sega Saturn. The 360 and Ps3 were both multicore, you think they would have figured it out by now.
 

mnewsham

Lifer
Oct 2, 2010
14,539
428
136
You know they did say they are CPU bound with this game. The Xbox One has a better CPU than the PS4.

they are both custom 8-core Jaguar CPUs, PS4 is clocked at 1.6Ghz, Xbone is at 1.75Ghz. Except the xbox has to use more CPU power to run the more advanced OS and kinect features, so in reality, the PS4 has more CPU power to deliver to the games.


Also, if they are CPU bound then they are just not hiring good programmers, the amount of processing that can be offloaded to the GPU is pretty significant. I would need to see some sort of hard data verifying a CPU bottleneck before I make further judgement though.
 

smackababy

Lifer
Oct 30, 2008
27,024
79
86
Ok but this isn't 1996 with the Sega Saturn. The 360 and Ps3 were both multicore, you think they would have figured it out by now.

Just being multicore doesn't mean having everything in it's separate thread is a good idea, cost efficient, or even going to give better performance.

This idea that just adding threads all willy nilly is going to increase performance is akin to just adding developers to a project to make it go faster. If one woman can have a child in 9 months; 9 women can have a child in 1 month.
 

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
Actually, for highly parallel tasks spreading it across multiple cores can essentially give you free performance. Having a baby is a serial task. Running the AI for a thousand NPCs is many parallel tasks. Apples and oranges.

Thread management isn't free, so creating threads for every NPC isn't a good idea. But grouping the NPCs and sending them through a handful of parallel threads can greatly improve performance.
 

dguy6789

Diamond Member
Dec 9, 2002
8,558
3
76
they are both custom 8-core Jaguar CPUs, PS4 is clocked at 1.6Ghz, Xbone is at 1.75Ghz. Except the xbox has to use more CPU power to run the more advanced OS and kinect features, so in reality, the PS4 has more CPU power to deliver to the games.

Microsoft already patched the system so that the developers have full access to the system's resources. It no longer locks away a set amount of processor time for the kinect.
 

mnewsham

Lifer
Oct 2, 2010
14,539
428
136
Microsoft already patched the system so that the developers have full access to the system's resources. It no longer locks away a set amount of processor time for the kinect.

fairly sure they freed up SOME of the resources, not all. And either way, the CPUs are so close in clockspeed it is negligible to begin with. You're looking at 10% improvement in the best case scenarios.

The faster GDDR5 memory and shader count for the PS4 should make it decently faster than the xbox one in all but a handful of situations.
 

zerocool84

Lifer
Nov 11, 2004
36,041
472
126
Microsoft already patched the system so that the developers have full access to the system's resources. It no longer locks away a set amount of processor time for the kinect.
But it still had the large OS or shall we say, two OS's which it has to run.
 

Aikouka

Lifer
Nov 27, 2001
30,383
912
126
Actually, for highly parallel tasks spreading it across multiple cores can essentially give you free performance. Having a baby is a serial task. Running the AI for a thousand NPCs is many parallel tasks. Apples and oranges.

Thread management isn't free, so creating threads for every NPC isn't a good idea. But grouping the NPCs and sending them through a handful of parallel threads can greatly improve performance.

I think you're looking at this in too finite of a manner. You're considering them highly parallel because you're ignoring that AIs should interact with each other. ...or at least that is a far more common thing in open world games like Assassin's Creed. Although, most of the games take the cheap route and just have the AIs largely ignore each other and just pay attention to the hero.

Anyway! The point is that once AIs start interacting with each other, their processing becomes joined as the result of one task becomes reliant upon another. If you get enough interactions, you're really just splitting one homogenous societal task into multiple threads with little to no gain. This is where some of those hard questions come into play. How much interaction will the game have? How should interaction be limited for performance? For example, you could instead limit AI to processing an entire area's denizens, but that means entities don't really interact outside their bounds.

These are pretty tough questions that can make things far more complex than we see in most games.
 

smackababy

Lifer
Oct 30, 2008
27,024
79
86
I think you're looking at this in too finite of a manner. You're considering them highly parallel because you're ignoring that AIs should interact with each other. ...or at least that is a far more common thing in open world games like Assassin's Creed. Although, most of the games take the cheap route and just have the AIs largely ignore each other and just pay attention to the hero.

Anyway! The point is that once AIs start interacting with each other, their processing becomes joined as the result of one task becomes reliant upon another. If you get enough interactions, you're really just splitting one homogenous societal task into multiple threads with little to no gain. This is where some of those hard questions come into play. How much interaction will the game have? How should interaction be limited for performance? For example, you could instead limit AI to processing an entire area's denizens, but that means entities don't really interact outside their bounds.

These are pretty tough questions that can make things far more complex than we see in most games.

Most AI is of the most basic scripted events anyway. Do this until that happens, then do something. if they could split up AI into even groups of small towns like that, and have it more than a set of scripted events waiting for some input from the player to perform some other scripted event, I'd be very impressed.
 

cmdrdredd

Lifer
Dec 12, 2001
27,052
357
126
Microsoft already patched the system so that the developers have full access to the system's resources. It no longer locks away a set amount of processor time for the kinect.

Not full access, just the roughly 10% that the kinect reserved. There is still a sizeable chunk unavailable due to the game dvr, app snap features etc.
 

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
I think you're looking at this in too finite of a manner. You're considering them highly parallel because you're ignoring that AIs should interact with each other. ...or at least that is a far more common thing in open world games like Assassin's Creed. Although, most of the games take the cheap route and just have the AIs largely ignore each other and just pay attention to the hero.

Anyway! The point is that once AIs start interacting with each other, their processing becomes joined as the result of one task becomes reliant upon another. If you get enough interactions, you're really just splitting one homogenous societal task into multiple threads with little to no gain. This is where some of those hard questions come into play. How much interaction will the game have? How should interaction be limited for performance? For example, you could instead limit AI to processing an entire area's denizens, but that means entities don't really interact outside their bounds.

These are pretty tough questions that can make things far more complex than we see in most games.

Intelligent grouping of NPCs per thread could resolve that, such as one group within X meters of the player, then split everything beyond that range into quadrants, there's 5 separate threads. What are the odds that an NPC 30 meters from the player at position X, Y is interacting with an NPC 30 meters from the player at -X, -Y?
 

Larnz

Senior member
Dec 15, 2010
247
1
76
It isn't. And CPU speed has little to do with video resolution.

"We could be running at 100fps if it was just graphics, but because of AI, we're still limited to 30 frames per second"

They were suggesting the CPU bottleneck was for the 30fps lock not the resolution. CPU can most definitely have impacts on fps. While I don't for a second believe the 100fps boast or that it would be anywhere that dramatic if the AI is hugely demanding on the CPU then fps will be affected.
 
Last edited:

Aikouka

Lifer
Nov 27, 2001
30,383
912
126
Intelligent grouping of NPCs per thread could resolve that, such as one group within X meters of the player, then split everything beyond that range into quadrants, there's 5 separate threads. What are the odds that an NPC 30 meters from the player at position X, Y is interacting with an NPC 30 meters from the player at -X, -Y?

That's kind of what my thought on designating NPC AI by areas is. The main focus would most likely be on the NPCs that are in the same area as the main character.

Although, reading your thoughts gave me an interesting idea. What if we treat AI computations as a pool? In a sense, it is literally just like a Thread Pool in programming where you allocate a limited number of resources and make requests to access them, which is governed by a manager. What it could do is allocate a priority to specific AI computations depending on factors such as proximity to the main character or the AI's "connectedness" (how many AIs are interacting with it).

I've always found AI somewhat fascinating. It's quite literally thinking about how you think. :eek:

Most AI is of the most basic scripted events anyway. Do this until that happens, then do something. if they could split up AI into even groups of small towns like that, and have it more than a set of scripted events waiting for some input from the player to perform some other scripted event, I'd be very impressed.

I agree, and that's why I put that bit at the end about it being more complex. It makes me wonder if gamers will end up disappointed by Assassin's Creed? I think some gamers may have rather lofty expectations of next-gen capabilities (always expect better than the last generation), but they'll probably see a lot of the same concepts and implementations -- including AI.
 

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
It really depends on how complex the interaction between NPCs is. In heavily scripted, simple interactions it's all very parallel. However in a Rube Goldberg NPC situation, the player bumps into an NPC, who steps on a cat, which runs screeching down the street startling a guy on a ladder who drops his bucket which knocks out the guy exiting a shop carrying a box of tennis balls which scatter all over the street causing a dozen other NPCs to fall, forcing all traffic to come to a screeching halt, and every NPC on the block stops to stare.

You're right though, it is a pretty interesting problem. Assuming I understand what you're saying, the grouping of AI for interaction purposes would be dynamic based on that interaction. I have to imagine the AI routines are run roughly on par with framerate, so there would plenty of opportunities to regroup the AI based on the events. That could have the effect of causing normally smooth AI to grind to a screeching halt as everything ends up in the same group/thread, similar to complex physics simulations.
 

BrightCandle

Diamond Member
Mar 15, 2007
4,762
0
76
I was reading elsewhere that they are only getting about 12,000 draw calls on the Xbox. Considering those are low level calls that is very uncompetitive with even a PC and it's high level APIs. The relatively poor performance of the CPU is the cause. Its not even AI necessarily, its the passing of the graphics objects and calls to the gpu that could be the issue as well.