Hey everyone!

It has been a while since our last Devblog but we finally have some updates for you guys! First and most importantly, we have updated our Release Plans, next we will take a closer look at our Feature List and what you can expect for Reality Mod, an in-depth look on the damage model adjustments written by Lukita and last but not least this edition’s Dev Spotlight with Paul!

I know you are itching to know about release so let’s just get straight to the point.

Yet another Release delay

Lukita

Many of you might have suspected this already: we are forced to delay the release once again. For how long? To be honest, we can’t tell exactly. Here’s why:

Feature wise, Reality Mod is complete for its first release. But the most substantial key feature is missing: VoIP.

For the past 3 years and up until today we’ve been using a custom Mumble implementation as our VoIP solution, but it has been causing us more trouble than joy. Picture mumble as a very old, overengineered pile of spaghetti code that’s incredible time consuming for any enhancements whatsoever. In fact, it was causing so much trouble that we decided to stop fixing it and instead work on a better yet easier to work with alternative which can be directly integrated into VU.

After all, teamwork and communication are the center point of Reality Mod and as such shipping with a defective or no VoIP solution at all is out of the question for us. It would be like shipping a car without an engine. That is why we decided against releasing with Mumble.

However, there is a light at the end of the tunnel. We are working closely together with the Venice Unleashed devs to ensure that it can be finalized as soon as possible. But by the nature of that and the VU code not being open source, we are dependent on the VU devs in this case. That is also why we can’t really give a good estimate on when we will be launching - it could be finished tomorrow or in a month. We were expecting the VU VoIP implementation to be finished way sooner (hence the previous Q1 estimation), unfortunately that was not the case. But you can rest assured, once we are set on a date we will make sure you will know about it first.

In addition to that, we’re also still having issues with the UI rendering / performance, there seems to be an odd bug in the version of the chromium framework, that we’re using to display the UI, which causes the UI to at times have a slow reaction time or render incorrectly. We have however gained enough data to track it down and we’re already trying out some potential fixes together with the VU devs.

If you feel like you can live with those issues and you can’t wait to try Reality Mod already, feel free to apply for Early Access on our Discord!

Feature List

Lukita

Not all is lost in the realm of Reality Mod though. To prepare you for the hopefully timely release we have prepared a feature list so you can already mentally prepare for the battles to come.

Key features (these will be available on release)

  • Completely reworked gameplay, aimed for a more tactical™ squad-/ teamwork-based experience compared to vanilla Battlefield 3
  • Completely custom minimalistic UI
  • Immersive™, atmospheric visuals - Frostbite 2 Engine’s destruction, VFX & physics
  • 100+ players on a server
  • Custom VoIP - multiple ingame radio channels, including positional audio
  • No vanilla blue tint. ;-)

Release Feature List

Reality Mod will ship with these features, but keep in mind that this is an overview rather than a detailed change log. The full change log will be available on release.

Player / game pace

  • Slowed down player movement speed
  • Slowed down weapon handling
  • Prevented bunny hopping

New spawn system

  • All spawn points are deployed by Squad Leaders:
  • Rally Points serve as a spawn point for the whole squad
  • FOBs - team-wide spawn points

Completely reworked weapon mechanics

  • Tweaked bullet ballistics and weapon handling towards more realistic values.
  • Full mag reloads
  • Removed vanilla RNG deviation upon suppression, suppression is only visual now, but the visual effect is increased by a lot
  • Tweaked damage values for projectiles and explosions across the board. Everything is a lot more deadly now
  • Tweaked damage dealt to different objects, buildings can now withstand more damage in general, but are still very much destructible, if you put in some effort

New Medical system

  • Bleeding mechanic when getting hit, bandage fast or risk bleeding out!
  • Equipped players with field dressings for bleedings, applied over tac rose
  • Increased wounded time to 5 minutes
  • New healing system, medics need to manually heal injured players with a medic bag now
  • Very limited health after revive
  • Custom bleeding effects / visuals, drastically reducing visibility and player effectiveness when low on health

Brand new UI

  • Minimalistic HUD with only a compass and mag counter
  • New spawn screen with map overview, spawn selection and additional information
  • Squad selection menu, join up to 9 squads with up to 8 people each
  • Kit selection menu, choose between 9 different kits (more details below)
  • Custom loading screen, end screen and scoreboard

Role based kit system

  • Variety of predefined kits with different roles / purposes and weapons
  • Kit limitation based on the amount of people in squad and issued kits per team
  • Limited attachment customization (Different sights, bipod vs. foregrip, etc.)

Venice Unleashed VoIP

  • Squad channel to talk to the whole squad
  • Squad Leader / HQ channel
  • Proximity / positional (team only) channel

Custom visual effects / visual environment / weather

  • No blue tint
  • Custom bleeding effects / visuals
  • Modified FX (muzzle flashes / smoke effects / impacts)
  • Visual suppression
  • Different daytime settings per map
  • Dynamic weather and time changes (Fog, sandstorms, night time etc.)

Factions

  • US Marine Corps
  • Russian Army

Server / Client improvements

  • 100+ players on a server, vanilla only has 64 players per server
  • Option for higher tickrate

New gameplay elements

  • Artillery Strike called in by Squad Leaders

Small variety of land and air assets (modified vanilla) with additional seats and partially removed guns

  • Boats
  • Jeeps (Transport / Armed)
  • Helicopters (Transport)

Vehicle physics and controls

  • Advanced flight models / vehicle handling

Future Features

These features will be shipped in future updates, however, some of these are already close to being tested and finished.

Custom content

  • Large scale maps & gamemodes
  • New weapon models, assets & skins once VU supports imports
  • More content to be announced

New gameplay element

  • Deployable Assets for FOBs like Mortars, TOWs, AAs, Sandbags, etc.
  • Commander role with UAV

Multiple land and air assets

  • Jeeps / Trucks (Logistics / Transport / Armed)
  • Helicopters (Transport / CAS)
  • Jets (CAS)
  • APCs / IFVs
  • Tanks

Advanced vehicle physics and controls

  • Multi person crew with different roles
  • Advanced flight models / vehicle handling
  • Tweaked damage model (Material / HP based)

Dev Spotlight

Paul

Hi, I’m Paul, a 21 years old student located in the Netherlands. Right now I’m studying Computer Science and started graduating very recently. I am the UI Lead Developer.

Roughly 2 years ago I got in contact with 3ti65. The team was looking for a web developer that could help finish the UI. I was supposed to fix some bugs and add a scoreboard. I remember telling 3ti65 it would take me around 3 months to finish. Boy oh boy was I wrong.

When I started I quickly noticed it was a mess and I suggested cleaning it up and moving to a reactive web framework to make our lives easier (especially mine). Ever since I had been working on rewriting the UI and slowly getting Foolhen and others involved in the process. Half a year ago we got two new awesome web developers on board, Mayson and Dylan. Because of the knowledge I had built up during my stay at RM the team decided to make me the UI lead developer.

Last year I ran my internship at a very interesting company. They taught me a lot about project management, testing and continuous integration. Especially the last skill I learned there is what I’m really utilising in Reality Mod. We now have automated builds that we use for each QA and EA test. Since then this project has also taught me other technologies/techniques I’m using at work and school.

Since I started I’ve grown from a simple web developer into a lead developer. At first this was very challenging as I now had to responsibility manage the people working on the UI. Review code, help people where needed, etc. Now it feels like it’s part of my daily routine and I really enjoy doing it.

What was your main motivation to join the RM team?

Paul: I didn’t know anything about Project Reality yet before I joined the RM team. It just seemed like a challenging project to be part of. In the past I was part of a Call of Duty modding community. Unfortunately because I had only experience with making websites I couldn’t do much else apart from work on the forum and website. When 3ti65 told me they already replaced a huge part of the Battlefield 3 UI I was sold.

How did Computer Science help you with programming / designing the UI?

Paul: I learned most programming outside of Computer Science. My study is mostly focussed on embedded hardware. I still love programming, hence why I learned it in my free time. I started programming when I was 14 years old if I remember correctly. A friend of mine introduced me into some simple web technologies and that’s where it all started for me really.

Which challenges did you face working on the UI? Was it harder than anticipated?

Paul: I totally underestimated the UI. When I joined I told the team it would take me 3 months max to fix some of the bugs and add a scoreboard. Now we are still actively doing work on it.

What do you love about working on RM?

Paul: The thing I love the most about working for RM is the team. Everyone is very passionate about their work and effort they put into RM. This is just something we do in our free time, yet we’re better managed than the company I work at, amazing!

It’s also really nice to see the things you work on, come back in the game. Seeing others use and play what you’ve worked on feels really good. Besides, if players find new bugs it motivates me to fix them for the next playtest.

What do you think makes RM a one of a kind mod? What is your favourite feature?

Paul: The thing I love the most is the fact that the mod forces you to work closely with your squad members. Coming from games like Call of Duty this is a big eye opener for me and allows me to think in a more strategic way.

Besides the mod itself, I also love our awesome team, consisting of testers, designers, developers, community & marketing people. Everyone is contributing their own speciality into the project. We have a weekly meeting where everyone shares what they did, what they will work on and what their capacity will be for the next couple of days. We also have an awesome Quality Assurance team whose job it is to test newly added features and help us find and reproduce bugs.

Which features would you like to see in RM in the future?

Paul: I would really like to see custom maps, it would be so nice if we can make the maps, coming out of Map Editor, work with Reality Mod. Currently we are still having some issues making them work properly. I would also like to see support for custom assets, but for that we’ll have to wait for the Venice Unleashed team.

Which games do you like to play in your free time? Which games have you learned the most from? Do any of those inspire your work on RM?

Paul: I used to play a lot of Call of Duty, but ever since I started working on RM I noticed I wanted to play more strategic shooters. Until this day I’m actually still searching, but really want to look into Escape from Tarkov. I also used to play games like Runescape & League of Legends, but nowadays I don’t have a lot of free time, and the time I have left usually goes into Reality Mod.

Besides gaming I do spend quite some time mixing house, tech house and techno music. My goal is to throw some parties here and there when COVID clears up, let’s hope it won’t take that long anymore.

That was very interesting! Thank you for your time and insights!

Paul: Any time, thanks for your interest!

Tech insight: adjusting damage values

Lukita

My name is Lucas, I am a Lua developer in the Reality Mod team since May/2020, I work as a Data Scientist at my full-time job and I love game programming. I have contributed to the mod with the new medic system, damage, and destruction tweaks. I also developed a mod called TestRange where you can spawn bots in a variety of ways and distances and it displays how much damage they take every time you shoot them.

How do bullet damage and destruction work in vanilla BF3?

In vanilla Battlefield 3, each weapon shoots a projectile and each projectile has a material pair and attributes that define its damage and how it decays over distance. The following image shows an example for the M16A4 using Powback’s WebX.

  • The M16A4 shoots a 5.56x45mm NATO projectile.
  • Its base damage starts at 25 and decays linearly to 18.4. The decay starts at 8 meters and ends at 50 meters.
  • Its projectile’s material pair has the following attributes:

But what are those material pair values and how are they used?

Battlefield 3 has the concept of a Material Grid which defines how materials interact with each other: either what happens when one material hits another and also when two physical objects collide.

An image will make it more clear. I will use Janssent’s spreadsheet (download below) because it has all the information we need in the same place. I usually open it in Google Sheets although some formulas get broken.

VENICE_MATERIALGRID.xlsx

When you open it you will see there is a sheet for every map and one called “MaterialNames”. Let’s look at this one first.

In there you will find two columns: A contains the IDs and B has the material names. Let’s decode the M16A4’s projectile’s material pair then:

  • PhysicsPropertyIndex: 77 → BulletDamage
  • PhysicsMaterialIndex: 1 → Bullet

Now let’s check how these two materials interact with “Concrete” (ID 8), for example. If you open any of the map sheets you will notice it will have a symmetric matrix where each row/column corresponds to a material. Each cell contains data about the MaterialRelationPropertyPair regarding the interaction between the materials in the row/column pair.

In Frostbite, a MaterialRelationPropertyPair has two attributes:

  • physicsMaterialProperties: array of PhysicsMaterialRelationPropertyData. Related with FX triggered when two materials collide (decal of bullet impact in the concrete, sound of the bullet when it hits metal, particles, etc.)
  • physicsPropertyProperties: array of PhysicsPropertyRelationPropertyData. Related with penetration properties, damage, terrain destruction, etc.
Look at the cell H4 (Bullet x Concrete) in the sheet XP1_002 (Gulf of Oman map) below. Its value shows that when a bullet hits a concrete material it produces a decal, a visual effect, and a sound. Those three form the array of PhysicsMaterialRelationPropertyData (before the in the cell value) for this pair of materials.

Check the cell AP48 (BulletDamage x Head) now, it contains "*nullMat*|Damage(335D1BCF-FD1D-4BA4-9594-90C2C5425A7F)". This means its physicsMaterialProperties array is not defined (null) and its physicsPropertyProperties array has a (MaterialRelationDamageData)[https://docs.veniceunleashed.net/vext/ref/fb/materialrelationdamagedata/] data container, with the given GUID. This is the only thing we need for tweaking the damage between materials.

A MaterialRelationDamageData instance has 7 attributes in total, but I will focus on 3 of them related to damage:

  • damageProtectionMultiplier: how much of the incoming damage will be applied to the material. Ex: M16A4 projectile at 50 meters causes 18.4 damage. If damageProtectionMultiplier = 0.1, then the damaged material would be hit with 1.84 damage.
  • damageProtectionThreshold: minimum damage necessary to actually inflict damage on the material. Following the example from above, if the material gets hit with 1.84 damage and damageProtectionThreshold = 2, then the 1.84 damage is ignored. Otherwise, if this threshold is below 1.84, then the damage would be applied to the material.
  • damagePenetrationMultiplier: how much of the absorbed damage (after the damageProtectionMultiplier) is retained after penetrating the material.

All of this explanation applies from a bullet hitting a soldier to an RPG hitting a wall.

How (and why) do we use that in Reality Mod?

As the mod name says, we’d like to make BF3 feel more realistic and part of it requires to increase the damage dealt to players when they get shot. But it is not all about increasing damage. We felt that the grenade launchers were destroying building walls too easily, with a single shell, so we decided to tune it down a bit using the MaterialGrid.

But that is not only about increasing or decreasing damage. By using the MaterialGrid we made it possible to deal damage to vehicles with standard rifle bullets, which is disabled in vanilla BF3. This way a helicopter can be taken down by getting shot (a lot!).

Basically, we created a class in Lua that let us define a material grid modification that will replace (or be appended to) an existing material grid relation pair. The image below shows our modification for the pair BulletDamage x HelicopterDamage, used to make normal bullets deal damage to our Venom helicopter. Originally, the damageProtectionMultiplier was 0, preventing the chopper from getting damage. We set it to 0.1, meaning that only 10% of the bullet damage would be applied to the helicopter. And when talking about air vehicles they are usually farther so the bullet damage will likely be small, requiring a lot of bullets!

We did the same thing for the grenade launcher (GL) and the building walls. The walls use materials called DamageClass_1, DamageClass_2, up to DamageClass_5. The most common material, used for almost every building wall, is the DamageClass_4. The vanilla damageProtectionMultiplier for GL and these walls is 1.5. We decreased it to 0.2, requiring now three shells to fully destroy the wall. This way the buildings feel a bit safer inside.

By using the MaterialGrid it is really easy to tweak the damage but it has a major downside for quick testing values: it requires a server restart to apply the new values. Due to that and for faster iterations, we decided to tweak the bullet damage to soldiers using the callback (Soldier:Damage)[https://docs.veniceunleashed.net/vext/ref/server/hook/soldier_damage/] on the server-side, which requires simply to reload the mod and restart the round, which is much quicker than restarting the server.

But with great power comes great responsibility. You can turn a simple pistol into a devastating weapon (literally):

https://streamable.com/xb67fk

Lukita

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!.

Cheers & stay tuned!

Alphacore

Head of Community Management