While development keeps moving along as usual, a lot of you have patiently been waiting for info on the new renderer, and for this week’s Status Report Lead Producer Brian Hicks touches upon that very subject. Also, Senior Designer Jan Tomasik gives us some input on the ingame FOV; the theory and thought process behind the design solutions as well as decisions for the current iteration of FOV.
Dev Update: B. Hicks
This week we’ll touch on two topics. We’ll start off discussing the work ongoing with the new renderer for Enfusion, and then wrap up discussing the current behaviour and mechanics behind sprinting, holding breath, and so on.
Players who have been actively following the development of DayZ are aware of the large task the engine team undertook to separate the legacy RV renderer from the simulation, and replace it with a more modular and updated version. The task itself of creating a new renderer is not huge, the length and weight of the task is related primarily to:
- Separating the legacy renderer from the simulation
- Ensuring the separation is complete, as the RV engine and its functions tied to it are extensive
Once the above was complete, the new renderer itself was broken into three primary modules. (Bear with us, this can be moderately technical)
1. Pipeline module
- The pipeline of objects rendering is new (defines the “way” how the objects are moving from entity in world to set of rendering commands)
- Is responsible to prepare meshes to be rendered
- Is multi-threaded
- Filling of pipeline will be also multi-threaded, in phase of testing and debugging
2. Material system module
- Objects are rendered using new material system, old one is still present to have the comparison
- Each mesh has assigned a material (not rvmat) with material class which is responsible for it’s rendering
- Setting of material is editable in workbench editor and you see real-time the changes in render
- Each material class was written from scratch, visualisation currently as much similar as possible to old render but now we can add simply new features (like PBR)
- Huge simplification for filling GPU command buffers, can be easily sorted to minimize changes in command buffers
- All renderable game objects have now representation in material class
- GPU API is DX11 for now (With DX 12 supporting coming later)
- Implementation of GPU API now hidden behind rendering API, no one is allowed to use direct GPU API commands
- It allows us to add new GPU API like DX12, XBOX one, PS4…much easier
- Initial implementation done, currently in testing and bug fixing phase (optimization still in progress but looks promising)
- GUI pipeline and rendering system is completely new and different from the one in original RV engine
- GUI layouts will be defined in workbench using graphic editor not by config system (huge improvement for designers)
- Rendering works, currently debugging and working on the editor
- In a future experimental build it’ll be possible to try it using command line switch (startup switch)
- Postprocesses were completely rewritten into new system of effects
- More worlds can be renderered in one frame, it allows to create independent scenes
- Needed for workbench
- Usable also in game to create e.g. mirrors, cameras…
As work on the new renderer continues and we look at our plans for the eventual push to experimental we have several goals:
- Testing partnerships with Intel, AMD, and nVidia to ensure compatability with market leader and average hardware configurations
- Marked performance for gameplay in large cities (Elektro, Cherno, Novod, Severograd, Berezino, etc)
Next up – There has been a good deal of discussion, and questions on exactly how hold breath, lung capacity, and dispersion when characters are tired. Below we have a few example videos with debug data on screen so you can see the specific values.
In the first video you see the user start out stationary – not tired, and begin to hold his breath. With the inaccuracy value falling sharply upon holding his breath, as the character continues to hold his breath and his lung capacity drains – the inaccuracy slowly starts climbing.
With the second video, we have a character who starts off tired (has been sprinting for an extended duration – 90 to 120 seconds of solid sprinting) who takes a knee (supported firing position) as his tired value decreases, his lung capacity increases – and he begins to hold his breath.
Mind you, this is only how it performs now (on 0.57 stable) and this is prior to the implementation of weight and character stamina. That said, we would love to hear your thoughts on the current behavior of the mechanic. Please make sure to head over to the Official DayZ forums and discuss this in the latest Status Report discussion thread!
Dev Update: J. Tomasik
Since there’s been some discussion regarding changes in the character zoom mechanic I decided to jump in and explain what are we trying to achieve.
We should probably start by asking the question “Why have a characters-eye zoom in the first place?”. It’s the old problem with emulating a 3D world on insufficient hardware. The human field of vision (fov) is around 190° and the area where the vision cones of both eyes overlap is around 100°. Unfortunately, most of todays monitors viewed from a regular distance usually tend to cover only 45°of human fov in real life. This means that if you want for target on screen to appear in real-life size you are only able to display around ~1/2 of what you would see in reality, stereoscopically.
And so as a designer you have to choose – Should I display objects in the distance properly but sacrifice the overall vision or set the fov to 100° but deform the whole picture? The trick of Arma is actually not to choose and instead introduce an “eye zoom” instead. This way you can keep the surrounding awareness by setting the default fov to 100°, but when necessary to perceive a depth of field properly occurs (ie. you are shooting), you can “zoom in” to 45°.
But is it ok to force fix a fov on players? We thought not. Not only because 100° fov does not feel right to everyone, but some players can’t even physically play with it. (Motion sickness, performance of PC, different monitor setup…). So the FOV slider was introduced and with it multiple problems we are ironing out now.
The most important step was to even out players by moving fixed fov to ironsights. This way you can most of the time play with whatever fov you like, but when the fov becomes a matter of life or death (shoot outs) it is set same for everyone to keep the game fair.
We know that zoomed fov or ironsights must be 45° because it emulates the eye and we stated earlier that 45° is realistic. But what should the unzoomed fov be? It can’t be higher than a number the player can set through FOV slider. (This way would going into iron sights actually shows the unzoomed picture which is definitely not something you would desire). So the fov of ironsights should be also the the smallest fov we allow players to set by the fov slider.
We decided to set range of fov slider from 60° to 90°.
It’s important to keep in mind, that double pressing + or – extends it to 45° or 105°, so the range is not so small as it might appears. It also doesn’t matter what is your current fov – double pressing + key will always set it to 45°. This means you can quickly switch between observing surroundings and focusing on objects “modes”, while being able to play with your prefered fov for most of the time. I belive this descision helps equalize players and reduce fov slider abuse.
Of course all those settings are opened to iteration and changes if they prove to be wrong, or they just feel bad.
Report Exploit/Bug Here: http://feedback.dayzgame.com
COMMUNITY DAYZ SERVER : 126.96.36.199:2602
FALCON MERCH: http://septicfalcon.spreadshirt.co.uk
DONATE TO SUPPORT: http://imraising.com/septicfalcon
CHEAP GAME CODES: https://www.g2a.com/r/septicfalcon