Jump to content

Regarding Ubisoft, draw calls, polygon counts and WAN show, from a game developers point of view

Have sent this to @LinusTech, as to correct him on his statement from the wan show regarding Notre dame being a problem for AC:U due to its high polycount or something like that, and he said to post it here as well, to maybe enlighten some of you about it :)
 

Hey, 
 
so i am currently watching the WAN archive, and came to the "Keep on digging" segment, where you talk about how crowd size is not the issue with ACU, but is more likely to be the polygon count of the buildings (you mention Notre Dame, which IIRC is in the million poly range).
 
Now i would like to provide some insight, as a game developer who has spent time with Unreal Engine 4, figuring out what kind of a polycount per scene it can take, what different lighting effects do to it, how drawcalls can be optimised and such.
My findings were, that even on a relatively mediocre rig i have (i5-750, GTX770) i had no trouble reaching into 10-15 million polygons spread over a scene (this means about 10k objects on screen at any given time, including a forest with trees being instances of eachother). ive observed draw call counts of about 7-10k per frame.
 
At this point i should probably explain quickly what a draw call is, though, im sure you have an idea. Basically, your GPU renders data that the cpu sends it. and if we for example take a frame that has 2 objects and a light, with those two objects each having a different texture, composed of a diffuse, normal, specular and gloss. this means the number of draw calls is (2objects * 2textures * 4texturetype) + (1light * 1lightmap) and that comes out at 17 drawcalls per frame, for a relatively simple scene, that doesnt even have animations. Now this draw count has nothing to do with what kind of objects i had. i could have 2 triangles as objects, or 2 Notre Dames from AC:U, the count would be the same.
 
This is where i started experimenting with optimising the particular scene i was working on, regarding drawcalls. I uninstanced all the trees, effectively taking those trees, making every tree its own object, with its own draw calls, which increased the drawcount to 20k immediately, and i could observe the framerate go from over 60FPS (in editor) to <20FPS (in editor). And i believe that is the exact same thing that Ubisoft has going in AC:U. 
They havent properly instanced objects (eg. crowds and "instanced" buildings) but rather left them each to have its own drawcall number, which overloads the DX11 API, causing the performance that we are seeing. (or lack thereof). 
 
Now i have to say that optimising instanced objects doesnt mean that drawcount does not increase with object count increasing. what you do in that case is not call the things that are the same many times over objects. In my example of the trees that were instanced, the only thing that was called only once was the texture for it, since all trees were the same. but since the meshes themselves were in different coordinates, as well as being animated by the wind differently, meant i could not use just one draw call to render all the trees. but it does mean that for the same number of calls, i could have more objects on screen. And the same process applies for AC:U. Ubisoft could instance the texture calls for all the NPC civilians (i presume they use one or maybe two different texture sheets for every nonimportant character) and the buildings (again, i presume they arent using a different sheet for each building, but rather a so called texture pallete, which contains textures of a certain type (be it wood, metals, stone, etc) and then apply the model to the texture.) 
In that case, their claim of 50k drawcalls seems ridiculous, especially since i havent really observed any particular reason for it, apart from the fact that they are not instancing calls.
 
Now a slight polycount comment. (ill be short since im already waaay longer than i wanted to be, and i dont wanna waste too much time)
 
It does not matter. modern GPUs are not polycount limited when it comes to just shoving a mesh into it, and getting a picture on the other side. Ive observed no slowdowns, even when working with models upwards of 100 million triangles on my 770. What does kill it though, is if i wanted to do raytracing or voxel light on that, since then it needs to use waaay more rays, or a much higher resolution voxel space to be able to detect all the details. that is why we dont see models upwards of 500k in games really. because we can get the same detail with maps (normals, speculars and such) while being able to use much more primitive lighting solutions, to keep performance up.
 
Anyhow, thanks for listening, I hope it was of any help, and keep on being awesome!  :D
 
LukaP


Hope this clears some confusion over what is going on with unity and what people assume are the problems

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

TL;DR

 

It's a coding issue, not a "this game is too detailed" issue, correct?

NEW PC build: Blank Heaven   minimalist white and black PC     Old S340 build log "White Heaven"        The "LIGHTCANON" flashlight build log        Project AntiRoll (prototype)        Custom speaker project

Spoiler

Ryzen 3950X | AMD Vega Frontier Edition | ASUS X570 Pro WS | Corsair Vengeance LPX 64GB | NZXT H500 | Seasonic Prime Fanless TX-700 | Custom loop | Coolermaster SK630 White | Logitech MX Master 2S | Samsung 980 Pro 1TB + 970 Pro 512GB | Samsung 58" 4k TV | Scarlett 2i4 | 2x AT2020

 

Link to comment
Share on other sites

Link to post
Share on other sites

Uhh whats ray tracing and voxel light

Intel i7 4702MQ| Nvidia GTX 850M| Kingston 16GB DDR3 1600Mhz| Acer VA70_HW (mobo)| 1TB WD Blue| MATSHITA DVD-RAM UJ8E0|1600x900 display|Win 8.1

Intel i5 4690K @Stock| Sapphire 390 Nitro| Hyper X Fury 2x4GB| MSI SLI Krait z97| Noctua Nh-U12S | 850 EVO 256GB| 2TB WD Black | CM V 850w| Enthoo Luxe

If you want to tag me or any person with periods do: @[Member='Name]

Link to comment
Share on other sites

Link to post
Share on other sites

@Enderman exactly. the code is completly unoptimised and it seems like something a begginer would do. its a complete bruteforce of what needs to be done, with no regards for algorythms that improve speed...

 

(quote doesnt work?)

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

@A.D.A.M ray tracing is a very taxing lighting solution, that basically works exactly like light, you follow a bunch of rays from a light source to wherever you want (usually 10ish bounces)

 

Voxel lighting is best imagined by having the scene divided into "pixels" but since we are in 3D, they are now volumetric pixels, or voxels. with each voxel being its own lighting value that is applied to whatever it encompases

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

@A.D.A.M AFAIK raytracing is where the light is allowed to bounce off every object in the scene, in order to create more realistic lighting, but I think I could possibly be wrong with the "every object bit" :S

Specs: CPU: AMD FX 6300 Motherboard: Gigabyte 970A DS3P RAM: HyperX Fury 16GB 1866MHz GPU: MSI R9 270 OC edition Case: Sharkoon VS3-S SSD: Samsung 840 EVO 120GB HDD: 1TB Caviar Blue PSU: Corsair CX500W

*If I say something that seems offensive, please don't take it seriously, it was most likely meant as a joke/sarcastically*

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

@Extingquish that is physically based lighting. raytracing can be either that. or you can set the rays to stop after a certain amount of bounces (since they usually lose enough enery by then to not really matter)

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

@LukaP ah ok :)

Specs: CPU: AMD FX 6300 Motherboard: Gigabyte 970A DS3P RAM: HyperX Fury 16GB 1866MHz GPU: MSI R9 270 OC edition Case: Sharkoon VS3-S SSD: Samsung 840 EVO 120GB HDD: 1TB Caviar Blue PSU: Corsair CX500W

*If I say something that seems offensive, please don't take it seriously, it was most likely meant as a joke/sarcastically*

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Ah i see thanks for explaining it to me @LukaP.

Intel i7 4702MQ| Nvidia GTX 850M| Kingston 16GB DDR3 1600Mhz| Acer VA70_HW (mobo)| 1TB WD Blue| MATSHITA DVD-RAM UJ8E0|1600x900 display|Win 8.1

Intel i5 4690K @Stock| Sapphire 390 Nitro| Hyper X Fury 2x4GB| MSI SLI Krait z97| Noctua Nh-U12S | 850 EVO 256GB| 2TB WD Black | CM V 850w| Enthoo Luxe

If you want to tag me or any person with periods do: @[Member='Name]

Link to comment
Share on other sites

Link to post
Share on other sites

And here is the problem. If you, @LukaP, know this, Ubisoft knows it. Reading the quote makes me believe it takes quite some work to properly optimize the game. Now for someone who mainly does it for fun (I think), optimizing a game is painstaking but a good part in the learning scheme, and also necessary. But in AC:U's case, there's money involved. The game has to be released as soon as possible in because a: it needs to compete with other games, b: Ubisoft is publicly traded so investors want to see money, and c: Ubisoft wants their people on other big projects to make those projects be "done" more quickly so the whole abc thing can repeat itself again. The game's basics just needs to function, but not function properly. 

 

PC gamers give Ubisoft shit for their poor coding for the PC version of AC:U, but from what I've heard console gamers have regular frame rate drops as well, so not only is the PC version poorly done, the whole game is poorly coded regardless of platform. The worst part is is that they're denying it in every way, shape and form possible, saying that "the game was made with PC at the top of our priority list". Which is what they say about every game (and the best example is Watch_Dogs).

 

There is another problem however, one that infects almost the entire game industry: it's not just Ubisoft. Remember Battlefield 4? That was a big mess upon launch, and it was launched waaaaay too early so it could compete with CoD: Black Ops 2. There. EA can do it too. Rome 2: Total War? It almost looks like as if the devs intentionally released a game in the early alpha stages with the batch "Done" on it. And as long as we people keep pre-ordering these games, or even buy them in general, this problem will continue to exist. Our best voting option is with our wallets. As soon as we stop buying shitty products from devs who only care about the $$$ they will flip in an instant to devs who care about their games and the community.

 

There are very few companies who do take their time to make a game great. Naughty Dog is one of them. The Last of Us works beautifully on PS3 and PS4 (PC VERSION PLEASE THANK YOU) with one of the best storylines in gaming history because they took their time (about 3-4 years) to make a great game. I've seen the behind the scenes video they took, and the amount of dedication those guys have for their product makes me have a little more faith in humanity. Speaking of taking their time to make the best games in the history of games, Valve. Half Life 2 took 5 years to make, and one thing that the lord almighty himself GabeN said at the beginning was "You don't have to worry about money or time. Just make sure you make the best game in history." That's something more devs should say to their employees. However I think it backfires a little in Valve's case. That or they're scared of the number 3. 

 

 

Jeez, I sound like TotalBiscuit. But it's worth it.

 

 

TL:DR: nice read. Good to see a dev who knows what is going on and who can explain it.

Ye ole' train

Link to comment
Share on other sites

Link to post
Share on other sites

And here is the problem. If you, @LukaP, know this, Ubisoft knows it. Reading the quote makes me believe it takes quite some work to properly optimize the game. Now for someone who mainly does it for fun (I think), optimizing a game is painstaking but a good part in the learning scheme, and also necessary. But in AC:U's case, there's money involved. The game has to be released as soon as possible in because a: it needs to compete with other games, b: Ubisoft is publicly traded so investors want to see money, and c: Ubisoft wants their people on other big projects to make those projects be "done" more quickly so the whole abc thing can repeat itself again. The game's basics just needs to function, but not function properly. 

 

PC gamers give Ubisoft shit for their poor coding for the PC version of AC:U, but from what I've heard console gamers have regular frame rate drops as well, so not only is the PC version poorly done, the whole game is poorly coded regardless of platform. The worst part is is that they're denying it in every way, shape and form possible, saying that "the game was made with PC at the top of our priority list". Which is what they say about every game (and the best example is Watch_Dogs).

TL:DR: nice read. Good to see a dev who knows what is going on and who can explain it.

My problem with it is that they know how to make good well coded games. Its not like Ubisoft only started making games yesterday... they have years of experience in that, and a pretty stable engine, that is only slightly updated for each game. they dont need to write the entire game every year. they *very basically* just switch up the assets and redo the highlevel code... 

 

what i really think is going on is similar to what Ghosts did. artificially limit the minimum ram to 6GB as to give the appearance taht the game is much more taxing than COD used to be. and they are doing the same here. not upgrading the looks but unoptimising, to make people think its a detailed game...

 

and thanks for the economic input, i didnt think of including that :)

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

My problem with it is that they know how to make good well coded games. Its not like Ubisoft only started making games yesterday... they have years of experience in that, and a pretty stable engine, that is only slightly updated for each game. they dont need to write the entire game every year. they *very basically* just switch up the assets and redo the highlevel code... 

 

what i really think is going on is similar to what Ghosts did. artificially limit the minimum ram to 6GB as to give the appearance taht the game is much more taxing than COD used to be. and they are doing the same here. not upgrading the looks but unoptimising, to make people think its a detailed game...

 

and thanks for the economic input, i didnt think of including that :)

This game runs an somewhat updated version of the same engine that debuted in 2012 with AC:III. I have no clue on how the engine aged or what is being done to it to keep it up to date but from all the issues that have been plaguing AC:U I guess not enough. I'm surprised Ubisoft didn't include Mantle support for AMD users so at least some people got a somewhat pleasant experience. I guess it would sorta fix the drawcalls limits DX11 has. Oh wait, it means Ubisoft would need to do more work which they're not going to. So I'm not surprised.

 

And yeah, Ubisoft has been in the business for quite a while. The way they make games, however, suggests otherwise. If I were a person not familiar with games at all and you told me Ubisoft was 2 years old and they bought some IP from another dev and AC:U is the result of that I would 100% believe you.

 

Unoptimized or not, even if a game requires a buttload of drawcalls per frame it shouldn't tank the performance to an extend the way AC:U does it now. However, Microsoft is also partially to blame here when it comes to drawcalls and APIs. They should've released DX 12 back in 2010-2011 (when GPU performance started to really move up and well over CPU performance) in order to reduce driver overhead to allow for a more direct code-to-hardware level of communication. But Microsoft was too busy with their FailBox One, so it was AMD who got out from their beds and did the bulk of the work. Mantle was (and still is) a catalyst for other APIs such as DirectX and OpenGL to start working on tech that allows more drawcalls per frame by reducing driver overhead, and Mantle itself will be dead in 2 years. AMD have said it themselves, they only wanted the industry to move forward with the principle of reduced driver overhead and a way to code more directly to the GPU which does the bulk of the work, in which they succeeded (Microsoft comes with DX12 in Windows 10 while OpenGL 4.5 is already released and it promises reduced driver overhead/CPU bottlenecks).

 

/rant

Ye ole' train

Link to comment
Share on other sites

Link to post
Share on other sites

This game runs an somewhat updated version of the same engine that debuted in 2012 with AC:III. I have no clue on how the engine aged or what is being done to it to keep it up to date but from all the issues that have been plaguing AC:U I guess not enough. I'm surprised Ubisoft didn't include Mantle support for AMD users so at least some people got a somewhat pleasant experience. I guess it would sorta fix the drawcalls limits DX11 has. Oh wait, it means Ubisoft would need to do more work which they're not going to. So I'm not surprised.

Well if they were not idiots about it, then the engine is ok, even if they havent updated, ACU genuinly doesnt look much better than 2012 titles anyway, so its not hte engine.

 

and teah mantle would help, but im not sure if that would be the entire story, since less overhead can only help with so much unoptimised shit

 

 

And yeah, Ubisoft has been in the business for quite a while. The way they make games, however, suggests otherwise. If I were a person not familiar with games at all and you told me Ubisoft was 2 years old and they bought some IP from another dev and AC:U is the result of that I would 100% believe you.

yep

 

 

Unoptimized or not, even if a game requires a buttload of drawcalls per frame it shouldn't tank the performance to an extend the way AC:U does it now. However, Microsoft is also partially to blame here when it comes to drawcalls and APIs. They should've released DX 12 back in 2010-2011 (when GPU performance started to really move up and well over CPU performance) in order to reduce driver overhead to allow for a more direct code-to-hardware level of communication. But Microsoft was too busy with their FailBox One, so it was AMD who got out from their beds and did the bulk of the work. Mantle was (and still is) a catalyst for other APIs such as DirectX and OpenGL to start working on tech that allows more drawcalls per frame by reducing driver overhead, and Mantle itself will be dead in 2 years. AMD have said it themselves, they only wanted the industry to move forward with the principle of reduced driver overhead and a way to code more directly to the GPU which does the bulk of the work, in which they succeeded (Microsoft comes with DX12 in Windows 10 while OpenGL 4.5 is already released and it promises reduced driver overhead/CPU bottlenecks).

 

/rant

ACU doesnt require those calls, it just has them... realistically, no game needs more than 10-20k drawcalls, when properly done...

 

amd agreed on the mantle thing. :)

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

None of this really makes any difference, because:

attachicon.gifphoto-123428.gif

i personally like this one more

Q3OjVSu.gif

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

every time there's a thread about Ubisoft on this forum it should have that gif by default.

i try :) but time is scarce, and certain people drive me away from the news section :(

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

Nice, thanks for the information, I've learned quite a lot from what you've written.

SuperNova: CPU: Intel Core i5 4670k @4.6 GPU: Sapphire R290 Tri-x @1200, @1350, MOBO: MSI Z87 G45 Gaming, RAM: 16Gb HyperX Fury White @1866, PSU: CORSAIR TX750M, CASE: Arc Midi R2, SSD: Kingston 120gb SSD, 
COOLING:
H100i w/ 2x Nb eLoop 800rpm

Check out my build log Black Dawn Check out my build log Supernova
Link to comment
Share on other sites

Link to post
Share on other sites

@LukaP, thanks for the awesome info and explanation.  That was surprisingly dense, but informative.  Is there any chance you might work with Linus on a Techquickie/Fast As Possible about graphics cards and/or graphical engine?  I think it would be fantastic and interesting.

Link to comment
Share on other sites

Link to post
Share on other sites

@LukaP, thanks for the awesome info and explanation. That was surprisingly dense, but informative. Is there any chance you might work with Linus on a Techquickie/Fast As Possible about graphics cards and/or graphical engine? I think it would be fantastic and interesting.

That's a good idea actually. I will ask him if he is interested. And thanks :)

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...

*Cough* *Cough*  Also Ubisoft was working on more than one game at a time.

 

post-61942-0-39144000-1417685228.png

  ﷲ   Muslim Member  ﷲ

KennyS and ScreaM are my role models in CSGO.

CPU: i3-4130 Motherboard: Gigabyte H81M-S2PH RAM: 8GB Kingston hyperx fury HDD: WD caviar black 1TB GPU: MSI 750TI twin frozr II Case: Aerocool Xpredator X3 PSU: Corsair RM650

Link to comment
Share on other sites

Link to post
Share on other sites

*Cough* *Cough* Also Ubisoft was working on more than one game at a time.

Doesn't matter, they have several studios, each independent of the others.

"Unofficially Official" Leading Scientific Research and Development Officer of the Official Star Citizen LTT Conglomerate | Reaper Squad, Idris Captain | 1x Aurora LN


Game developer, AI researcher, Developing the UOLTT mobile apps


G SIX [My Mac Pro G5 CaseMod Thread]

Link to comment
Share on other sites

Link to post
Share on other sites

Doesn't matter, they have several studios, each independent of the others.

How would you know if they weren't made by the same studio ? they have other titles to.

  ﷲ   Muslim Member  ﷲ

KennyS and ScreaM are my role models in CSGO.

CPU: i3-4130 Motherboard: Gigabyte H81M-S2PH RAM: 8GB Kingston hyperx fury HDD: WD caviar black 1TB GPU: MSI 750TI twin frozr II Case: Aerocool Xpredator X3 PSU: Corsair RM650

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×