Back to Main Page

This page contains details about the Vehicle Effects Pool mod I create today (Mon 2nd April 2018).


Vehicle Effects Pool - NPC Effects Management (v1.1.4)

The more you create, the more you feed the need to create more and that is perfectly true for my latest collection of mods. Having created a custom replay system, then a custom replay camera system, then a multi-vehicle version of my replay system, I needed the NPC vehicles to be more in keeping with what the player was doing. My Ground Vehicle Effects mod gave a bit of life to driving, so the other vehicles looked a bit flat without it. But there were two immediate problems with solving this...

1) GVE uses looped particles, which are finite in number and need careful management.

2) Simply scanning for vehicles that *might* be doing something suitable to apply an effect to, is just ridiculously impractical, especially when you're already pushing the boundaries of performance with particle effects.

So I needed another solution, one that was flexible enough to handle all my effect types but offered a controlled envirionment for them to be managed in. So my Vehicle Effects Pool mod was born. Over the course of today (2nd April 2018) I built a standalone effects manager that basically sits there waiting for you to send it vehicles. Once it has them, it drops them into its pool, updates their effect cycles and when they drop out of range, it fires events back to the processing mod so that it can be removed from the processing pool in that mod.

So for instance, the Helicopter Effects mod collects a whole batch of vehicles and processes that collection looking for cars to make dirty, helicopters to create dust and buses to add lights. And it had to do all that as well as handling the effects. Now, it finds a vehicle that needs an effect, it sends that off to the VEP, telling it what type of effect it should have and the VEP gives it an ID, assigns it a place in the pool, processes all the effects and then watches for it to fall out of effect range. Once a bus gets out of range, it is removed from the effect pool and the helicopter effects mod is notified of the removal, so it can remove that vehicle handle from the collection queue.

But if you don't want all that automatic removal to take place, like for the ground effects, you have another option. You send the vehicle to the VEP and it processes the effects for that vehicle. Once the control mod has finished with that vehicle, it sends a removal request to the VEP, with a handle and the VEP pulls it from the pool and frees up that ID for another vehicle.

Along with building the VEP, I had to completely strip out the GVE effects processing and turn it into an NPC compatible effects system. So needless to say, it's been a busy day but equally a very productive day with something I am extremely proud of as an end result. So now GVE handles the player vehicle, for an enhanced experience but the VEP handles all NPC effects, to ease the burden.

This is a basic demonstration of how it all fits together. This is the first multi-vehicle test with the VEP and it's clear that the effects need some tweaking. The non-looped particles are still using the Editor Mode particles from GVE, so they need further adjustment... but it's a start.


You can see in this how I record one sequence and then can flip to any other sequence as the player. Any vehicle in the replay can trigger the camera shake (on compatible cameras), even multiple vehicles will each trigger their own shake effect. You just set the camera position and type, then the shake is generated based on passing speed and proximity.

VEP underwent a major transformation yesterday, with the ability to now accept multiple effects for a single vehicle.

So as can be seen in this video, the replay system sends the buses to the VEP as potential ground effect vehicles and the helicopter effects combo mod, sends them as Bus Lights vehicles. If they went beyond the effects range, they could have their lights removed but still keep their Ground Effect intact. This opens up possibilities for expanding the effects types within the VEP, that can be assigned to vehicles as and when required. That means that Helicopter Effects might now become a vehicle collection processor (a VCP), to handle any large-scale vehicle effect assignment tasks.


Probably the last VEP video I'll post now, just to show the place I really created the VEP to work in, off-road.


Update 30-06-2019: Bugfix - Fixed a bug in the material enums, old_wood_creaky was stored as old_woodc_reaky, so no effects were being generated over that surface.

Also fixed a bug in the distance checking, vehicles were set to go out of range at the same distance as they were detected and they should have been set to go out of range at distance * 1.5f, so they couldn't be detected again straight away. As it was, vehicles could constantly go in and out of range, causing instances of the effect classes to be constantly created and destroyed... not good.

Helicopter Effects have now been removed and have been replaced with Air Vehicle Effects. The main controller mod that supplies vehicles to VEP has also been renamed to Vehicle Effects, as it is no longer based on the original Helicopter Effects core.

VehicleExtensions.dll, the core library; has been updated with the new rotor and propeller speed functions.

So quite a lot has happened because of the last week.

Update 05-07-2019: Small update to enable certain military vehicles to use ground effects.

Interesting thing I discovered while rewriting this... I always wondered why the parachute jump helicopters didn't spawn particles the same. Turns out it's because the idle speed of the rotors is less than the normal idle speed when the player is in the Maverick. Now that I can get an accurate rotor speed, the system adapts accordingly, which is better.

Update 24-07-2019: Still getting this strange phasing option with the AVE particles and I can't understand why. It's like the spawns go into a cycle where they spawn and then stop until all particles have gone, then they spawn again, then they wait again. Unless I am hitting a particle cap or something, I don't understand what's happening.