Jump to content

  • Log In with Google      Sign In   
  • Create Account

Assassin's Creed IV: Black Flag Ocean Technology Talk


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
21 replies to this topic

#1 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 02 February 2014 - 10:35 PM

I read FXGuide's Assassin's Creed III tech article. Loved it - but nothing really goes in depth to currently one of the best looking oceans for the PC platform in the shape of Black Flag.

 

Question for the experts -

 

How did they do the water? I read several SIGGRAPH papers and stuff on fluid dynamics. Did they use a "mesh" which had physics based wave frequency equations built in? If no one knows - mind telling me the most common way one makes a realistic ocean with beautiful colors like Black Flag?

 

Also what exactly are "shaders". I'm guessing it's a programmed script that draws pixels in a specific way...but can someone explain how "shallow water shaders" are more "advanced" in the next-gen version of this game?

 

Thank you,

 

Michael



Sponsor:

#2 KaiserJohan   Members   -  Reputation: 1243

Like
0Likes
Like

Posted 03 February 2014 - 03:18 AM

Can you link to the article? Would love to read it



#3 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 03 February 2014 - 10:35 AM

Sure...

 

Here it is

 

http://www.fxguide.com/featured/assassins-creed-iii-the-tech-behind-or-beneath-the-action/



#4 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 03 February 2014 - 02:55 PM

Bump. can anyone help me out ?



#5 Nathan2222_old   Members   -  Reputation: -400

Like
0Likes
Like

Posted 03 February 2014 - 03:54 PM

I read FXGuide's Assassin's Creed III tech article. Loved it - but nothing really goes in depth to currently one of the best looking oceans for the PC platform in the shape of Black Flag.

Question for the experts -

How did they do the water? I read several SIGGRAPH papers and stuff on fluid dynamics. Did they use a "mesh" which had physics based wave frequency equations built in? If no one knows - mind telling me the most common way one makes a realistic ocean with beautiful colors like Black Flag?

Also what exactly are "shaders". I'm guessing it's a programmed script that draws pixels in a specific way...but can someone explain how "shallow water shaders" are more "advanced" in the next-gen version of this game?

Thank you,

Michael

Haven't seen this assasin creed yet but the most realistic water/water physics i've ever seen was in the watchdogs physics demo . . .
Omg, ubisoft owns watchdogs so that means disrupt engine may have been involved and they said they made some sort of world physics/wind implementation that affects clothing (Aiden Pierce's coat), water (in watchdogs), vegetation, effects like explosions, cars etc.

At the end oft the demo they showed some kinda really long lines that showed the movement of the wind.

UNREAL ENGINE 4:
Total LOC: ~3M Lines
Total Languages: ~32
smile.png
--
GREAT QUOTES:
I can do ALL things through Christ - Jesus Christ
--
Logic will get you from A-Z, imagination gets you everywhere - Albert Einstein
--
The problems of the world cannot be solved by skeptics or cynics whose horizons are limited by the obvious realities. - John F. Kennedy


#6 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 03 February 2014 - 04:12 PM

 

I read FXGuide's Assassin's Creed III tech article. Loved it - but nothing really goes in depth to currently one of the best looking oceans for the PC platform in the shape of Black Flag.

Question for the experts -

How did they do the water? I read several SIGGRAPH papers and stuff on fluid dynamics. Did they use a "mesh" which had physics based wave frequency equations built in? If no one knows - mind telling me the most common way one makes a realistic ocean with beautiful colors like Black Flag?

Also what exactly are "shaders". I'm guessing it's a programmed script that draws pixels in a specific way...but can someone explain how "shallow water shaders" are more "advanced" in the next-gen version of this game?

Thank you,

Michael

Haven't seen this assasin creed yet but the most realistic water/water physics i've ever seen was in the watchdogs physics demo . . .
Omg, ubisoft owns watchdogs so that means disrupt engine may have been involved and they said they made some sort of world physics/wind implementation that affects clothing (Aiden Pierce's coat), water (in watchdogs), vegetation, effects like explosions, cars etc.

At the end oft the demo they showed some kinda really long lines that showed the movement of the wind.

 

 

Good to know...but not exactly answering my topic =D



#7 Servant of the Lord   Crossbones+   -  Reputation: 21183

Like
0Likes
Like

Posted 03 February 2014 - 04:45 PM

Also what exactly are "shaders". I'm guessing it's a programmed script that draws pixels in a specific way...but can someone explain how "shallow water shaders" are more "advanced" in the next-gen version of this game?

Shaders are like scripts, yes, but they have a very cut down language without alot of features, and they run lightning fast on the videocards instead of the CPU.

 

There are multiple places in graphics APIs where you can plug in a shader to do custom work, and depending on where you plug them in, the shaders have different names. Geometry shaders work with meshes of polygons (I think), Vertex shaders work on each corner of triangles, and Fragment shaders work on each 'fragment' of triangles (where 'fragment' can kinda be thought of as a pixel, but not exactly).

 

I'm not sure if there were any talks yet about AC4's oceans, but GDC is in two weeks, so you might get some details then.


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal

[Fly with me on Twitter] [Google+] [My broken website]

[Need web hosting? I personally like A Small Orange]


#8 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 04 February 2014 - 01:58 AM

G D C wont have the ocean stuff...

 

anyone mind helping on how oceans are created?



#9 TheChubu   Crossbones+   -  Reputation: 4802

Like
0Likes
Like

Posted 04 February 2014 - 07:04 AM

I doubt you'll find start-to-finish explanations on those techniques. They'll probably be either too simple (ie, tutorial like, step by step guides to do simple things) or too advanced (ie, research papers that assume plenty of knowledge in the subject).


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#10 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 04 February 2014 - 01:30 PM

Yeah, currently thats a big issue form me.



#11 dpadam450   Members   -  Reputation: 949

Like
1Likes
Like

Posted 04 February 2014 - 10:27 PM



Take a look at this. There is a demo and a paper somewhere. Most realistic water I've seen.



#12 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 05 February 2014 - 02:01 PM

That ocean does not have many rogue waves....not very realistic to me at all. Black Flag seems more realistic.



#13 Promit   Moderators   -  Reputation: 7684

Like
3Likes
Like

Posted 05 February 2014 - 03:03 PM

The ProLand video linked above is pretty much a verbatim implementation of the usual suspect, which is the Simulating Ocean Water paper by Tessendorf:

http://graphics.ucsd.edu/courses/rendering/2005/jdewall/tessendorf.pdf

NVIDIA covers a compute shader based version of it:

https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/sdk/11/OceanCS_Slides.pdf

And the shading approach is pretty much covered by NVIDIA as well. It's worth downloading the NV SDK and looking at the OceanCS sample in detail.

 

The AC3 work appears to be quite a bit more complex, but it appears to still be grounded in the FFT approach. No point tackling it if you don't understand the Tessendorf paper.


Edited by Promit, 05 February 2014 - 03:06 PM.


#14 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 05 February 2014 - 09:24 PM

Thank you for your help.

 

The #1 question I wish someone would answer is simply - when I see waves go up in the game - there is this turquoise color in the upwell of the wave / peak - basically like a gradient. Wondering how they accomplished that.

 

Similar to this picture

 

assassins-creed-iv-black-flag-general-sc


Edited by TheLastOfUs, 05 February 2014 - 09:48 PM.


#15 Promit   Moderators   -  Reputation: 7684

Like
0Likes
Like

Posted 05 February 2014 - 10:05 PM

That's covered in the FXGuide article under SSS. They're a bit hand-wavy but the essentials are there. Read it carefully.



#16 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 06 February 2014 - 12:25 AM

Thank you so much for your help Promit - found it. Seems like its subsurface scattering phenomena using a ramp gradient.

 

Last question - was the ocean one big mesh or was it individual planes i wonder?



#17 TiagoCosta   Crossbones+   -  Reputation: 2463

Like
0Likes
Like

Posted 07 February 2014 - 02:48 PM

Last question - was the ocean one big mesh or was it individual planes i wonder?

 

I cant say for sure but they probably used some LOD system similar to the ones used in terrain rendering where the ocean is divided in patches with different LODs based on distance from camera, etc.


Edited by TiagoCosta, 07 February 2014 - 02:52 PM.


#18 Servant of the Lord   Crossbones+   -  Reputation: 21183

Like
0Likes
Like

Posted 07 February 2014 - 03:02 PM

I cant say for sure but they probably used some LOD system similar to the ones used in terrain rendering where the ocean is divided in patches with different LODs based on distance from camera, etc.

Though if it's procedural, they can generate the ocean mesh chunk by chunk during runtime, and discard the mesh when out-of-view. Certain procedural algorithms can, given a state, generate a low-res mesh, and then procedurally generate more and more detailed versions (higher LOD) of that same mesh when needed.
It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal

[Fly with me on Twitter] [Google+] [My broken website]

[Need web hosting? I personally like A Small Orange]


#19 TheLastOfUs   Members   -  Reputation: 135

Like
0Likes
Like

Posted 08 February 2014 - 12:26 AM

 

I cant say for sure but they probably used some LOD system similar to the ones used in terrain rendering where the ocean is divided in patches with different LODs based on distance from camera, etc.

Though if it's procedural, they can generate the ocean mesh chunk by chunk during runtime, and discard the mesh when out-of-view. Certain procedural algorithms can, given a state, generate a low-res mesh, and then procedurally generate more and more detailed versions (higher LOD) of that same mesh when needed.

 

 

Thank you! I managed to get the following from a dev on twitter:

 

He says the ocean is 1 mesh on a plane - which is procedural and done by a pixel shader (runtime-generated). I think you hit the nail on the head. He also says they used LOD's between shallow/deep water oceans and further waves are lesser detailed but detail only as the boat gets closer to the water.

 

Procedural seems to be some kind of code that "Streams" or processes graphics differently, am I right Servant? Not understanding how that exactly works when an ocean is 1 plane and generated "procedurally"


Edited by TheLastOfUs, 08 February 2014 - 12:31 AM.


#20 TheChubu   Crossbones+   -  Reputation: 4802

Like
3Likes
Like

Posted 08 February 2014 - 07:23 AM

The usual way things are done is: put mesh in a file, load mesh into game, render mesh. In that way, the mesh is pre made by some artist and stored in there.

 

"procedural" generation means that whatever data you're using (it could be anything really, textures, geometry, random AI states, etc, for now we're with geometry) gets generated by some process in code. That process produces the data you're going to use.

 

Of course, nothing imposes that you can't store that data and load it later (it would still be "procedurally generated") but in this case, I doubt you'd get anything useable from storing an ocean.

 

So the distinction is between something artist authored and something procedurally generated. That line can be blurred easily since nothing is completely procedural (or random), you still have to input some parameters most of the time. For example, terrain generation, you'll probably want a value of how high will be the highest peak, how rough the terrain is going to be, you might want to raise or lower the ocean level, and so on.

 

Say, in Minecraft, the terrain isn't completely random, the biomes aren't generated out of thin air, they have to be specified somewhere, the trees they use, their animals, the ground blocks, etc.

 

All of these parameters are input in an algorithm (for complex stuff like terrain, it could be complete modules of algorithms with specific tasks) and the output is the data you're going to use.


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS