Street Fighter IV PC explained in detail
The PC version of Street Fighter IV is scheduled for release in July. In an interview with PC Games Hardware Yoshinori Ono, the producer of Street Fighter IV PC, revealed several interesting aspects of the game.
Console gamers have been playing Street Fighter IV for some time already. In July the popular fighting game will be released for the PC, too. PC Games Hardware had the chance to interview the producer Yoshinori Ono via email. He gave us an insight into the technology of the new version and told us about the rendering techniques of Street Fighter IV for example.
The system requirements of Street Fighter IV PC have been published some weeks ago.
PCGH: Did you develop your own engine for Street Fighter 4 or did you license a technology? What were the reasons for developing your own technology or using middleware? What are the advantages when utilizing your own technology or a commercial product?
Yoshinori Ono: We have developed everything including the graphics engine from scratch for SFIV. The reason being the fact it is important to be able to carry out trial & error and calibrate elements such as the graphics or the game system rapidly and internally by ourselves. We have spent a great deal of time on shaders and animation development.
We did not want to be inhibited by the restrictions that might arise by using existing middleware or engines and although there usually is a solution to such problems, we wanted to spend our time in creative activity, rather than trying to get the best out of something we weren't involved in creating.
PCGH: Your game has already been developed for the consoles (Xbox 360/PS3) and is at the moment developed for the PC. Can we nevertheless speak of a pure cross platform development or do you heavily adjust your base technology for the PC as a platform?
Yoshinori Ono: SFIV development started with the arcade version which was Windows PC based. We developed it on DX9 and designed the development environment such as the game editor and authoring tools to run on dev Windows PC.
We also developed console version system simultaneously so the game code would run on other hardware such as the Xbox360. We started developing PS3 system when we shifted the focus onto consoles and we managed to produce the same quality as it was on Xbox360 in about 3 months. Technologically speaking it is very difficult to achieve pure cross-platform due to the hardware differences but I do believe it is possible to make it appear so because they are so similar. As for SFIV I am very proud that it has managed to reach this level of homogeny between different hardware.
PCGH: If you develop a special PC build of Street Fighter 4 and not a simple console port, what are your reasons to do so? What technical features can only be realized with the PC as platform? What are the main differences between the console and the PC version as far as general technical aspects as well as the visuals is concerned?
Yoshinori Ono: The PC version is based on the console version so all the features are intact. The difficult part of developing a PC game is the fact the hardware within the platform varies - thus we need to take in consideration of all possibilities on specs and some specific functions some PCs may have. As a result, we have implemented a system to reduce the load on GPU so more PCs are able to run the game smoothly and added functions that control graphics features such as MSAA and post filters.
PCGH: How do you realize the very special comic like visuals of the game? Do you apply some kind of cell shading? What other rendering techniques are applied?
We fundamentally pursued for the ‘painted' look shader as we were aiming for a non-anime style yet non-realistic art style. We also had to make sure the game runs at 60fps on the arcade system too. This was achieved by a process of trial & error and thus the rendering path had become very complicated, almost unconventional. Allow me to explain how it differs to normal rendering paths commonly known for other titles.
We didn't use cell-shade, that commonly uses 1D gradation texture, but we achieved the gradation levels that you would see with cell shade through real time calculations. This was because we feared, by increasing the number of textures cache errors would build up eventually affecting the performance. We also wanted to reduce the process time of designers having to create textures and adjusting them. In our system character shades can be changed dynamically, even while playing the game.
I'm not sure if you have noticed but we have also enabled cell-shade like gradation on characters' rim light. The inky look of focus attacks are realized through rim light transition. These shades are affected by the normal map. The characters' normal map is created by ZBrush but we have added ink brush style noise. We call this shader that achieves cell-shading look without using gradation texture, ‘brush shader'.
We have extracted the outlines through post effect by adding RGB and frame buffer output alpha element of the character textures. We used alpha to soften the outline for translucent objects such as hair. This extraction of outlines smoothen the edges thus it works like anti-aliasing preventing the graphics to look stiff and unrendered. Also, because it is only the character outline that is emphasized it is easy to distinguish amongst the background graphics. The new filters implemented in the PC version in forms of alterations in parameters of ‘Brush Shader' and ‘Edge Detection'.
Multiplex Hemisphere Lighting
For environmental lighting we expanded the hemisphere lighting and enabled lower, middle and upper parameters. We have 3 parameters instead of 2 because we thought it would not be enough to accommodate for the paint style shading. We also considered other means of environmental lighting but current style was decided due to a good balance of performance and visually striking features.
Simple Skin Shader
We didn't use anything like sub-surface scattering that would multi layer the character skin texture. However we wanted that reddish shade for character skins like you would in paintings so we have used a simple skin shader.
The eye highlight always faces the camera - otherwise the eyes will appear dead. We can tailor the size and position of the highlights for each character.
Static Ambient Occulsion
We use static ambient occlusion to the characters. The hidden data is not in the texture pixels but at the zenith of the geometry.
PCGH: In general, how far do you try to utilize very modern rendering techniques like Parallax Occlusion Mapping, Soft Shadows, HDR, a lighting model with Deferred Shading, Screen Space Ambient Occlusion, Shader Model 4.0 or post effects like Tone Mapping, Depth of Field or Motion Blur? Can you please furthermore give examples how this modern rendering techniques are utilized in the PC version of Street Fighter 4?
Most of the technologies we utilize are of DX9. Sure they are not the cutting edge latest but have good value for money and are still incredibly good.
We use percentage closer filtering for the character soft shadows. The default sampling is 4. In the PC version the sampling number can be increased. The stage soft shadows are done all together at once according to model quality and type by separating the colours in to RGBA.
We don't use floating point buffer but implemented the A8R8G8B8 format multi render target to save the bright colours to the 2nd buffer. We use this to display glares in bright stages as well as Rose's glowing scarf. This way we can also glow places that usually doesn't due to low brightness such as Akuma's eyes.
Depth of field
This is used in the character appearance scenes as well as the result screen. We use the depth of the blurred graphics as a reference point and linearly extrapolate to synthesise the new image.
We have 2 types of motion blurs, one for normal fight scenes and another for the zoomed in camera view. Both types record the 2D vector on screen to the buffer and then carry out the sampling process, but with different methods and for different purposes. In normal fight scene we adjust the animation speed so the rear geometry is stretched, so that the character movements are not too fast and clear to the eyes. You can see this, for example, in training mode with Cammy's back step. When the camera is zoomed in for theatrical purpose we do not stretch the geometry and fast moving parts are blurred proportionally to the speed of the movement. This is to reduce the amount of data of the fast moving part and thus making it look smoother. Both cases have been carefully adjusted not to go over the top.
Contrast of each colour of RGB can be adjusted.
Mass particles such as the smoke are drawn on 25% size reduced frame buffer, blurred and then merged back to the original scene. At this point the particles are thickened or thinned depending on the depth of the field. The process load is quite light so we could even imply the shadows on it.
Alpha to Coverage
It may be a little difficult to spot but if your video card is compatible, alpha to coverage is applied. Objects that use Alpha test will look different when MSAA is in use. This is mainly applied to objects such as fences and leaves.
PCGH: When developing your title for the PC do you try to leverage very modern PC-Technologies like Dual-GPU-Rendering/SLI- or Crossfire-Systems? In other words: As far as overall performance is concerned, can players increase it remarkably by buying a second graphics card or a card with two GPUs? Do you have to add the support for multi GPU setting when developing the PC version?
Yoshinori Ono: The PC version of SFIV is SLI/CrossFire compatible thus enabling these functions will improve performance. But obviously, dual graphics cards are not essential to run the game smoothly and it is more for the benchmarking purpose.
PCGH: Will the PC version of your game be optimized for multithreading? Will the engine scale well with four or more cores? If yes, up to how many cores could be supported?
Yoshinori Ono: We do make use of multi-threading but haven't specifically calibrated for particular number of multi cores. This is because SFIV has been designed to run smoothly even on single core but if dual core or Hyper-Threading is enabled this certainly won't be an inhibiting factor on the performance.
PCGH: Can you give some detail about the thread structure? What different tasks can be or are split up into different threads and what is the expected performance gain resulting from two respectively four or even more (8) cores?
Yoshinori Ono: I don't think we've done anything spectacularly different to other leading titles here but fundamental tasks such as rendering, audio and file I/O can be processed on separate threads. Also, the objects placed on the stages utilises ‘job system' and can be updated over several threads in a scalable manner.
We have also tuned SFIV so that CPU resources do not change depending on the combinations of characters/stages as well as the game experience being constant, unaffected by CPU and GPU specs. Because of this, increasing the number of cores to run SFIV will certainly increase the performance but won't bring a great deal of other benefits.
PCGH: Although quite unusual for a title like Street fighter 4 will the PC version offer a physics simulation? If so what are the "physical highlights” players can expect in Street Fighter 4? Will the physics even have an impact on gameplay?
Yoshinori Ono: As this will essentially be a port of the console version to the PC format, there is no plan to have a new physics simulation in it. Since the SFIV game system is completely controlled by the game designer, the results of physics simulation will have no effect to the game whatsoever. It is also unfavourable for the visuals to change depending on the different results of the physics simulation thus we have avoided optimising for a specific calculation.
PCGH: Do you program your own physics engine or do you utilize a middleware like Havok or Novodex (Physx)? Does the game even support hardware accelerated physics calculated on the GPU (Nvidia PhysX)? What do you think about the topic? Is GPU-Physics the future way to go?
Yoshinori Ono: The character outfit are physics simulated and they were developed in-house. We did consider Havok or PhysX but since SFIV does not have many objects and the stages don't go through drastic changes, we concluded that we didn't really need them. All physics calculations are processed on the CPU because this is never going to upset the CPU in SFIV's case.
As for whether GPU PhysX is the future or not, I'm not entirely sure to be honest. But I do think once triggered it will be explosively popular and will be utilised everywhere.
PCGH: Can you at the current state of development tell our readers what hardware will be required to play the game with all detail in 1,680 x 1,050 (no FSAA/AF) and 1,680 x 1,050 (4x FSAA/16:1 AF)?
Yoshinori Ono: For example when tested on a PC with GTX280 with 1680x1050 (MSAA 4x), it was over 100fps. The arcade and the console versions were 1280 x 720 so at this resolution it is possible for a mid range PC of the older generation to maintain 60fps.
The PC version has many other video options available other than the resolution so it is easy to adjust accordingly to each system to balance fps and quality. Depending on how it's adjusted even laptops and ‘mobile' GPUs could run the game smoothly.
PCGH: Will the PC version of Street Fighter 4 like done with previously Capcom titles like Lost Planet and Bionic Commando be upgraded with support for DX10/DX10.1?
Yoshinori Ono: Unfortunately SFIV PC is not DX10 compatible. Our primary aim was to realise the same, high graphic quality for both Xbox360 and PS3 so we did not want to do anything these consoles found difficulty dealing with. For this reason, even if we did implement DX10 it wouldn't have had major impact visually. Instead, we implemented more visually striking features such as the ‘Extra touch' and various graphics settings possible.