DEVBLOG 4
Audio Improvements, Vehicles! and Dev Spotlight
We hope you all have been doing well! The team has made some nice progress, which means we are one step closer to release!

While VoIP is still being worked on we still wanted to share some exciting insights into what's new with Reality Mod. First off we have Audio Improvements with Joe, followed by A closer look at Vehicles with Janssent and last, but not least, our Dev Spotlight with Joe again!

Let's get right to it!
Audio Improvements
by Joe
Hey all, Joe here again! You may remember me from the artillery article in the second Dev Blog. I've been working hard (as always) on various tasks since then; mainly, I've been working on improving the audio to make the player experience more immersive.

What is wrong with the vanilla audio?

In vanilla BF3 the audio does not travel very far. During playtesting we discovered that the vanilla system works well for distances of 50-100m, but outside of that it is impossible to tell where you are getting shot from since the sounds quickly fade outside of that. For us that was problematic, since we substantially increased the range of engagements in Reality Mod to more realistic standards and removed vanilla UI indicators showing the direction you are taking shots from. So in order to really hear what is going on in the battlefield around you, we needed to somewhat revamp the audio system.

How does it work?

Frostbite's audio system is rather complex, using a series of output nodes to control effects and determine how a sound should be heard in the world. These output nodes respond to events and other logic nodes (such as random number generators).

Frostbite supports plenty of different output nodes. There is the FlatOutputNode which has a radius that the sound can be heard within and, as the player gets further away from the source, the sound will get quieter until eventually, they are outside of the radius and can no longer hear the sound.

Another node is the ConeOutputNode that has a radius, similar to the FlatOutputNode, but it will also project a sound in a given direction. The player then must be within the radius and within a given angle of the output direction to be able to hear the sound. That is the reason why it is called Cone, since it will project audio into a certain direction in a cone shape.

Here is a video demonstrating the ConeOutputNode functionality (best heard using headphones). Notice how the sound changes as the angle changes. Be aware that this is a Proof of Concept with exaggerated values, where small changes in the angle heavily impact the resulting audio. This does not represent the final values.
So far, I've been working on improving the gun sounds so that players can hear them from much further away, for the sake of both immersion and situational awareness. This had been attempted before, but Frostbite's HDR (High Dynamic Range) audio system proved to be problematic - the problem being that when you make a sound louder, the HDR audio system prioritises that sound above others and will therefore duck other sounds (such as ambient background sounds).
This prioritizing and ducking of sounds is handled by the "Radius" and "Loudness" values that can be seen in the screenshot above and is the whole point of HDR audio. If used correctly it can lead to an incredibly rich and immersive audio landscape. Unfortunately it would appear that this was not a correct use of the system and ended up sounding very strange, as someone would shoot a few hundred meters away and all other sounds would be made quieter until the gunshot audio clip had finished playing.

I spent hours upon hours digging through the audio files trying to figure out how to mitigate against this, until eventually I found a little thing known as an "attenuation curve". From my experience in Unity I knew that attenuation curves are used to control the volume and audibility distance of an audio source. This means that we can now control how loud a sound is and how far it travels - which is exactly what we needed. I found this in each of the output nodes - some nodes had different values to others.

Below is a screenshot of the default attenuation curve for the M16A3 gunshot sounds where the X value is the distance from the local player, the Y value is the volume of the clip in decibels and the K value is a modifier used to control the slope of the curve.
For RM, I have increased both the distance at which you can hear the sounds and increased the volume of each of the sounds too.

Below you can see a Proof of Concept for the changed gun sounds
After that I wrote a system that allowed me to easily edit the attenuation curves for each gun in the game, so we can have different curves for different sounds. Once that was done, I played around with the values and after a while, I got some very nice sounding guns and looking at how the system works, it's more than likely to mix and match different sounds.

Here is a video of gun sounds in their current state, note how much further they can be heard compared to vanilla sounds:
And finally, here are two clips from a recent playtest, showcasing the new gun sounds in action - clips courtesy of Wonder, one of our QA testers (please excuse the subpar quality of the video).
Of course, these values are a work in progress and will almost definitely be changed before release.

With all that said, at the end of the day, RM is still a game and having realistic values for guns, explosions, etc. just wouldn't work in this scenario. I do still intend to increase the gunshot distances further though - basically, we want players to know where they're being shot from using audio, which is impossible using the vanilla values.

Many more improvements are going to be coming to the audio for Reality Mod too. We plan to introduce "bullet cracks" (which is the sonic-boom caused by the bullet breaking the sound barrier) to most guns that will be heard as a bullet whizzes past your head.

Fortunately the marksman rifles in BF3 already have this so it's just a matter of porting that over to the other guns in the game.

I believe this will be a huge improvement since it'll show that you are indeed the target of that bulletstorm coming your way and you might want to keep your head down. We also plan to make improvements to the volume and audibility distance of explosions and vehicles. I, personally, have always found it annoying that games seem to forget just how loud helicopters really are!

I'm very excited for players to be able to experience the changes to the audio system!

Thanks for your time and have a good one!
~ Joe
Vehicles!
by Janssent
What's up everyone, I'm Janssent. I'm a 22 year old Applied IT student from Belgium. At first I joined the team as a contributor with very little coding experience, mostly modifying the vanilla vehicles to make them more suited for Reality Mod.

While working on vehicles I gained a lot of experience with VeniceEXT, VU's scripting system. It's what lets you modify control game behavior, allowing you to create new experiences. I used that experience to research and create Proof of Concept mods for the artillery strike, texture modifications, material grid tweaks and more.

Why are the vanilla vehicles unsuited for Reality Mod?

Like most things in BF3, the vanilla vehicles do not satisfy our needs for Reality Mod. We want them to look and behave like their real world counterparts. In order to achieve that the flight/driving physics and damage model have to be tweaked. For example the vanilla helicopter physics are very responsive, but do not resemble how helicopters move at all. There is no startup time and it is not possible to roll/loop with the helicopter. Some vehicles also need to be able to carry more passengers to adjust for the increased player count and squad sizes.

How do you go about modifying vehicles?

Every vehicle has set attributes which dictate how it behaves in the game.A lot of the tweaks made to the vehicles are simple changes to these attributes. We can modify them relatively easily by assigning new values. This example shows how the minimum collision speed for the heli to take damage was reduced:
Reduced the minimum collision speed for the heli to take damage
Another good example would be the changes to the flight model. This is what happens when you try to roll the heli in vanilla:
Trying to roll the heli in vanilla, forces the heli down.

For the Venom flight physics we wanted to find what was keeping helis from looping. The culprit turned out to be vehicleEntityData.motionDamping (MotionDampingData), after setting it to nil this was the result:
The helicopter can loop and roll after adjusting the flight model.

Things get a bit more complicated when trying to add more components to a vehicle. Components define physical parts (like wheels or rotors), player entries (driver and passenger seats), weapons, cameras etc. One such component is the Browning M2 as you can see in this clip:
DICE devs added a M2 to EOD bot for lols, the component was disabled (componentData.excluded = true), but the data was kept.

In the Frostbite engine vehicles are created from VehicleEntityData instances. This is where a lot of the common vehicle properties are defined. Aside from these common properties, the VehicleEntityData also has an array field of ComponentData types, this is where the individual components of each vehicle are defined. Below you can see the component layout of the venom helicopter both as structured in the game data, and as separate components in-game.

Example of a Venom Component Data: https://pastebin.com/seiXju7c
Components seen in-game using the Component Visualiser Mod by txt
In order to add extra components to a vehicle, new component instances have to be created and added to the VehicleEntityData in the same manner as vanilla BF3. For example in Reality Mod, six SoldierEntryComponentData instances were added to the Venom to allow for more passengers. However, you need to ensure the passenger and co-pilot sitting animations are working properly or character models end up clipping through the vehicle model or end up misplaced.
Researching passenger animations, adding a co-pilot to the Venom
That is not the correct placement for a passenger?!
Experimented with closing doors by removing miniguns and moving door components
The modularity of these components is what makes modifying vehicles a lot of fun, as it allows for infinite combinations. No one can stop you from adding 6 weapon components to a scout helicopter.

Unlimited POWER!!!
You can even add a passenger to tip of the main rotor for some epic cinematics:
How are vehicles in Reality Mod different from the ones in vanilla?

Some of the modifications done to all the vehicles in RM include a wider FOV, a smaller entry radius and a longer startup time. The vehicles were also set up so the opposing faction could not enter them.
M1114 HMMWV 'Humvee' Transport
Ground Vehicle
Left: Vanilla; right: Reality Mod
Changes:

  • Removed CROWS turret (and added regular passenger entry in its place
  • Disabled lights
M1114 HMMWV 'Humvee' Transport
Ground Vehicle
Left: Vanilla; right: Reality Mod
Changes:
  • Added disabled state when on low health
  • Added a horn to match the transport humvee
  • Disabled light components and changed blinker shader to a dim shader
  • Adjusted speed to match the transport humvee
  • Modified cameras to use input curves (the camera position mimics realistic eye movement when turning your head instead of pivoting on a single point)
  • Added 5th passenger entry
UH-1Y 'Venom'
Airborne Vehicle
Left: Vanilla; right: Reality Mod
Changes:

  • Removed minigun and gunner entries
  • Added 6 passenger entries
  • Added copilot entry
  • Adjusted flight physics
  • Adjusted damage model
  • Enabled small arms fire damage
RHIB
Sea Vehicle
Left: Vanilla; right: Reality Mod
Changes:

  • Removed vanilla passenger entries
  • Added 6 passenger entries
  • Enabled small arms fire damage

That is all for the vehicles for now! We hope to launch with these vehicles already included so you guys have something to use the Light Anti Tank kit for. In the future we will address the Russian vehicles and hopefully even some heavier machinery.

Until then,
Janssent
Dev Spotlight
Josephus
Hi all, I'm Josephus but you can call me Joe. I'm a 23-year-old Software Developer from England. My role in Reality Mod is to implement new features that you guys will hopefully enjoy. Last year I finished university where I studied Software Development for Computer Games. I joined the Reality Mod team back in June of 2020 - I've always loved the Battlefield series (especially 3 and 4) and thought it would be a lot of fun to work on a project revolving around that.

I've been programming for almost as long as I can remember - I first started around the age of 13, while I was still in school. I remember downloading Unity 2.6 and building some truly awful things that barely worked (so I guess not much has changed really) using the old UnityScript. As well as programming, in my spare time, I also play computer games, the drums, a little bit of guitar and will often nerd out over a good bit of medieval or classical history.

The first feature I worked on for RM was revamping the FOB and Rallypoint systems. I also created the FOB model that we have in place today! I have worked on plenty of features for this project over the last few months but I think my two favourites were the artillery (because who doesn't love explosions?) and the new audio design.

Software development for Computer Games sounds fun. Did that degree help you in designing features for RM?

Joe: I wouldn't necessarily say it helped me design features for this project but it certainly helped me land the role and work well with the rest of the team. In the course, we did a lot of teamwork units revolving around different development methodologies such as waterfall, agile and scrum.

How did you get the idea to study something "unconventional"?

Joe: I've been programming and developing games from a very young age and I always knew that I wanted to get into some kind of software development. I decided to enroll on a course that I knew I'd enjoy but would also leave me with transferable skills to get into other sectors (I'm currently working as a Software Development at a finance company).

Which games shaped the person you are today? Which features made them special? Why are they (not) your favorite?

Joe: The first game I remember really enjoying was Call of Duty 4 when I got my first Xbox 360 back in 2009. My dad and I used to play it together because I didn't have Xbox Live at that point. I'd spend hours learning the maps just to get the advantage over him.

After that, I got into the Battlefield franchise with Bad Company 2, quickly followed by 3 and 4 - Battlefield 4, to this day, is the game I've got the most playtime in.

On a slightly different genre, I absolutely adore the older Assassin's Creed games with my favourites being AC2, AC Brotherhood and Black Flag. Thanks to them, I've become a massive history nerd!

Do any of these games/features influence in how you approach designing RM?

Joe: They do not lol. Could you imagine being 360 noscoped in Reality Mod?

What do you love (or hate!) about working on RM?

Joe: The team! I can't stand them! Nah just joking, they're all great! I think the only frustrating thing about working on this mod is the Frostbite engine and DICE's inability to do anything consistently.

What do you think makes RM a one of a kind mod?

Joe: Something I've always found annoying about tactical games is that the player controls and animations always feel very clunky but thanks to RM being built upon BF3, that isn't a problem here. Oh yeah, and the destruction.

Which features would you like to see in RM in the future? Maybe some features from other games? Or original designs?

Joe: I think tanks would be good to see and maybe air vehicles with weapons - like a minigun on transport heli (add them back Janssent!) or something.

Thank you for your time, it was very nice to get to know you a bit better!

Joe: You're welcome, I hope you liked it. Have a good one!

That's all for today folks! I hope you enjoyed this Dev Blog, join our Discord if you want to stay up to date or to sign up for Early Access! (https://discord.gg/sNwbeHC).

Cheers & stay tuned!


Alphacore
Head of Community Management
Made on
Tilda