There are many reasons why you should use the ECP mod instead of standard OFP. OFP provides a rich scripting language and configuration system, and we have tried to push the envelope with regards to in-game effects without you requiring a P4 3.0 GHz in order to enjoy it. The ECP does not provide new units or terrain. Our overall goal is to improve the quality of gameplay through configuration modification and effects scripting. We'll leave the addons to those who are skilled in that area, and we offer the ECP as a backbone to whoever is interested. The ECP (core) provides the following features across all OFP missions and campaigns.
ECP event handling concept and initial algorithm
In 2003, snYpir developed a concept of improved game-play by resorting to the newly offered technology of configured Event Handlers (EHs) within the OFP game engine. These EHs could not be removed by the 'removeEventHandler' command thus they provided a stable base for scripted development. The EHs were triggered by specific run-time events and the data they returned provided the foundation to create new visual effects and simulations.
Since then, the ECP system was updated and expanded to affect all recognised units that have been loaded or created in-game. In order to be recognised, every unit's configuration must be bound to the ECP_EventHandlers superclass. This superclass can be inherited by any addon or else merged with an existing EH.
For those events not monitored by the EHs, a quasi-event monitoring system has been developed to enable a wide selection of effects.
Configuration modifications (Updated)
The game configuration has been enhanced with small but significant implementations:
Enhanced AI behaviour in combat
Texture specular effects for Direct3D HW T&L
Dynamic size cartridges that remain on the ground for longer time
The ECP Debug Spectator extends the OFP mission editor by providing a 3D spectating capability. It includes a debug console and a number of different camera modes (including freelook). It is the ideal tool for mission debugging.
The game startup splash screen has been improved for high performance machines, enabling the main menu as soon as the game has been fully loaded. No longer will you have to wait for the end
of the default intro or use the -nosplash flag.
In-game ECP Settings Editor (Updated)
This dialog, accessible via the pause menu, permits in-game configuration of the most common ECP settings during a mission. However, it doesn't modify the settings files, IE it's settings are not directly saved and stored when the game is closed, for this you will have to edit the start up settings files directly.
Level Of Detail
In order to make the ECP more efficient, level of detail (changing effects depending on whether or not a player can see them) has been implemented.
New main menu cut-scenes
Getting tired of seeing the same old main menu cutscenes? We've taken some steps to fix that.
Redesigned editor GUI (Updated)
The redesigned main menu and editor GUI's is an eye-candy addition to enhance the interaction between the player/designer and the game.
Redesigned main menu GUI (New)
The redesigned main menu and editor GUI's is an eye-candy addition to enhance the interaction between the player/designer and the game.
Scripting resources (Extended)
ECP provides a wide set of functions for development or mission design, gathered in the ECP_resources array. See ECP Functions for more information.
Kegetys' Spectator Script will automatically initiate when a player dies in a ECP multiplayer game. This can also be set up to run in single player missions. The Spectator Script allows players to follow the action either as a seagull or through various camera modes.
Core redesign and code optimisation (New)
Inspired by the need of improving the game performance, we have redesigned the ECP core and improved the code of many effects/simulations scripts. Thanks to such effort, the players can
enjoy an instant ECP startup followed by very smooth gameplay, even on the low-end pc's. The performance hit is generally unnoticeable, regardless of mission or computer characteristics.
Dynamic Global Array Structure (DGAS) architecture (New)
In order to prevent the crash-to-desktop (CTD) issue on mission resume we implemented an array database system, DGAS, represented by five global variables, from/to which the ECP data is
processed and stored. This method proved to be quite reliable. As a result, players can save their missions without corrupting the savegame log - this is not assured, but it's still a great step forward to prevent the problem.
Enhanced MP reliability through the Array Interchange Monitor (AIM) (New)
As a consequence of the implementation of the DGAS, a new method of MP settings broadcast was developed, followed by an enhancement of the relations between server and client. Now, the
game mode is rapidly distinguished and MP missions have a much better support and reliability.
AI information sharing and Adaptive Ally Detection (AAD) (New)
This system allows allied AI units - either from the same side or friendly to the resistance - to share the position of the enemy, depending on their distance from each other and their
The player, if leader, can join single units to his/her squad - e.g.: last member of another squad, a crashed pilot, etc.
AI release (New)
The player, if leader, can release units from his/her squad. Combined with AI join, allows replacing units in a full squad.
AI surrendering and PoW interaction (New)
There is a chance of fleeing units surrendering themselves. The player will be able to capture unfriendly units, interrogate them, collect or destroy their
weapons and halt them. However, if the player refuses to capture PoW's or lets them escape, these will regroup, collect weapons from dead bodies and get back in combat!
On the other hand, player side units, that have surrendered but not been taken captive, can be told to fight.
AT/AA launcher backblast damage
Units standing at an AT/AA launcher's Back Blast Danger Area (BBDA), upon fire, will be caught by the backblast debris and get critically injured or even killed!
Bleeding damage (Updated)
Units bound by bleeding effects can suffer blood loss damage until being deceased or, otherwise, healed.
Bouncing fragmentation grenades (New)
A set of fragmentation grenades that replaces the default hand grenade according to the unit's side. Depending on type, the grenades have specific fuse times with a random factor, sometimes
allowing air blasts.
Bouncing smoke grenades and smoke simulation (New)
A set of smoke grenades that replaces the default smoke grenades according to their colour and unit's side. Depending on type, the grenades have specific fuse and smoke release times. In addition, these grenades can be effectively used for screening purposes that works on AI also.
High Altitude Low opening (HALO) Parachutes (Updated)
HALO parachutes allow the player to decide when to open his/her parachute. It includes altimeter and auto-opening, preventing thus fatalities during cut-scenes.
Helo Coms (New)
The Helo Coms gives the player, if leader, full control over its squad helicopter, providing landing, insertion, extraction and flight altitude commands.
IR AA jamming and visual counter-measures
Aircraft engaged by AA guided weapons will release flares on the sky, an effect complemented by IR jamming, changing the trajectory of the missile. This is ideal for missions with air transportation, but rather limited during air combat.
Multiple ordnance suppression (MOS) (New)
The player will suffer visual and auditive suppression from most ordnance blasts at close range depending on the blast magnitude.
Random Weather and Snow (Updated)
Using the Island Detection Algorithm, developed by snYpir and further enhanced, ECP determines which island a particular mission is being played on. From this, random weather settings can be defined on a per-island basis. This means that weather may change more than once in a mission, at a rate chosen to the player appropriate to the particular island. In addition, snow can be implemented either for specific areas on a map (for example the snowy peaks on Nogova) or across an entire island (ie Winter Nogojev). Users can also add their own islands to the islands settings file via the 'ECP Island Matrix Tool'.
Tail rotor failure
Damaged choppers have a random chance of tail rotor failure. Once the tail rotor fails, the chopper will spin to the ground whilst smoking. Upon crashing, there's a chance of crew, if not already dead, suffering severe injury or even death.
Aircraft altitude warning
An altitude alarm will sound when flying dangerously low.
Damaged helicopters (BAS) and planes (RED and Zayfod) will smoke or even burn from the engines, according to the amount of damage. If kept working without being fixed, they'll will
eventually blow up in the air from accumulated damage.
AT/AA launcher backblast
The AT/AA weapons now have the back blast effect, complemented by damage on affected units, as in real life. Smoke and debris are spewed out the tube, from the back - AT soldiers must clear
their BBDA or risk court-martial!
AT/AA smoke trail (Extended)
All rockets and missiles now have more realistic smoke trails.
Blood spurt and bleeding (Updated)
ECP Blood is a highly reworked version of snYpir's original OFPEC Blood addon. This is now a lag-free blood fest featuring blood spurting, animated blood splashing on the ground and animated bleeding from wounds or critical injuries, which can be complemented by damage from blood loss. Dead bodies also have a chance of bleeding, besides BIS default bleeding.
Burning men (Updated)
Some crew will leave their burning vehicles, running and screaming in despair while being consumed by the flames. Not recommended for sensitive people... It can be even more terrifying when we watch a burning man bailing off a falling chopper...Oooooh!
Buzzing flies (Updated)
A while after being dead, some corpses might be infested by buzzing annoying flies. This effect brings home the true morbidity of combat.
Church chanting, animated fountains and lighting effects (New)
Missing the monks chanting in churches? Flowing water in fountains? Now, the ECP provides both effects, complemented by fancy lighting effects visible at night.
Explosion craters (New)
3D craters will appear underneath vehicles that suffered catastrophic explosions. These can be used for cover.
Explosion effects (Updated & Extended)
ECP provides many new explosion effects, from simple smoke blasts to amazingly hot fireballs, with debris and dust all over the place! This not only affects vehicles, but also the most varied ordnance. Followed by great fire effects, this is one of the most interesting and complete set of effects provided.
Fire effects (Updated & Extended)
Vehicles, houses, debris, men: everything burns! Flaming nights and smoky days envelope us in the most exciting combat environments.
There are available two rotorwash dust effects for helicopters. Start the engines and embark or disembark between dust clouds.
Mounted machine gun cartridges (New)
Now, heavy machine guns mounted on vehicles or tripods discharge bullet cartridges too.
Shell and bullet whiz (Extended)
Thanks to our sound guru, Zayfod, flying lead can be heard! The player will hear the whiz of bullets and cannon shells passing close. Keep your heads down!
Tank main gun flash (New)
From ORCS' code, we implemented this amazing effect that brightens and expands the flash of a tank's main gun.
Tank shock dust
Just like in real life, shock wave dust will be formed around a tank upon firing its main gun.
Working lighthouses (Updated)
The lighthouses from recognised islands will effectively work, with searchlight, fog horn and exterior lighting above the door.
Muzzle smoke/flash (New)
Smoke and occasional muzzle flashes come from both small arms fire and vehicle mounted machine guns. Be careful to not give yourself away, the more you fire the more the smoke drifts from your barrel.
ECP Plug-Ins are ECP exclusive addons that resort to the existing structure to provide new features - new experiences. Install, enable and experiment! Download plug-ins from the ECP links at the bottom of the page.
Dynamic Range Sounds (DR)
The Dynamic Range (DR) plugin provides an alternative set of realistic sounds for a different game experience, enhancing the human interaction towards the virtual environment. By replacing many default sounds, this plugin is the solution that breaks the routine of OFP sonority. From a pack originally developed by Satchel; PV and Zayfod had perfected and extended DR
along the year of 2003. Thenceforward, Zayfod has improved the sound configuration, assuring the plugin remains adequate to the new sound features and visual simulations.
Dynamic Speaking AI (DSAI)
The Dynamic Speaking AI (DSAI) plugin is one of our greatest novelties and represents another conquest over the game limitations, that we take delight in sharing with the community. Based on the AI information sharing interaction tree, the DSAI simulates circumstantial AI dialogue. According to their behaviour and the situation, the AI units talk, scream and act. It provides the player an unique scenery of envelopment, which turns out to be quite useful in combat situations. Enjoy it!
Radio Chatter (RC)
The Radio Chatter (RC) plugin is a very thrilling feature in mounted combat. Armoured and air transportation are now accompanied with radio chatter from real combat scenarios, leading you into a deeper realm of fantasy. This effect is still only available onboard of air and armoured vehicles. Sometimes, the chatter might not have much to do with the circumstances since it's mostly associated with combat environments. Nevertheless, it gives the impression to the player that they are in a world where many other things are happening around them, perhaps on other islands or other parts of the island. Its de/activation is available through the settings dialog, in game.
The ECP has both new effects and simulations. Effects are purely visual changes to enhance your OFP experience. Simulations are 'things that happen' and they may modify gameplay.
There are two ways to configure ECP effect and simulation settings:
Via the settings files in the @ECP folder, or
Via the ECP settings dialog.
ECP Settings Files
The ECP settings files are located in the @ECP folder. Open these up in either notepad or Notepad++ (recommended).
The settings files are fairly well commented. You do not need to restart OFP if you load these settings, you only need to restart the current mission.
The available settings files are:
ECP_Settings.sqf > contains the settings related to most of simulations and effects.
ECP_Blood_Settings.sqf > contains the settings related to blood effects.
ECP_Island_Settings.sqf > gathers information regarding island configuration.
ECP Settings Dialog
The ECP Settings Dialog is accessible via the 'pause' (ESC key) screen whilst playing OFP. This dialog allows you to configure the support pack for the particular mission you are playing. It does not save the settings to disk. If you want to change settings across all your missions you must edit the settings files as detailed above. Note that certain settings will not be able to be changed during multiplayer games (they will be set by the server from variables defined in the settings files).
ECP Override Settings
When using the ECP settings dialog you'll notice 'override' settings of low, medium or high. These can be also be set by changing the 'ECP_override' variable in ECP_Settings.sqf.
Following are very approximate system requirements for each override setting:
Low - P4 1.5 GHz or slower
Medium - P4 1.5 - 2.5 GHz
High - P4 2.5 GHz or faster
It is recommended that you set your preferred override in ECP_Settings.sqf correctly to ensure satisfactory performance. This offers a quick way to increase or decrease ECP effects and is
intended for those end users that are less familiar with the ECP_settings.sqf and its many options.
We recommend that you become familiar with the ECP_settings.sqf and customise all effects for your PC so that you eventually won't need to use the 'ECP_override' variable at all.
On the dialog you'll notice a slider for 'effects distance'. This is used to calculate the distance in meters (or closer) that the player must be from an effect in order for the effect to occur. Before ECP determines if the effect will occur it multiplies the 'effects distance' by a multiplier 'LOD multiplier'. The 'LOD multiplier' is set in ECP_Settings.sqf. For example, if the effect distance was set to 300m (ECP default) and the LOD multiplier for blood (ECP_lod_bld_x) was set as 0.5 (ECP default in ECP_Settings.sqf) then the final effects distance would be 150m. So if a unit got hit 300m from the player there would not be a blood spurt from that unit.
We use LOD multipliers because it enables ECP to increase or decrease the final effect range for different effects. Example, the LOD multiplier for explosions (ECP_lod_exp_x) is 2, thus giving a final effect range of 600m. This is because one would expect to see explosion effects at that range but not necessarily blood.
'Effects distance' affects all effect ranges and is universal to all effects.'LOD multiplier' affects only the effect that it is assigned to and it may vary in value for different effects. Effects distance can also be set via the 'ECP_lod_dis' value in ECP_Settings.sqf.
Important! Cutscenes may not have effects visible because of the LOD culling (the player may be too far away from where the cutscene is taking place).
To disable the effects distance concept set ECP_lod_enable equal to false:
ECP_local set [ 16 , false ];
The ECP is fully compatible with MP play. It is recommended that all computers play with the ECP mod to prevent 'modified config.bin' error messages. It is important that all computers have the same version of the ECP as well.
You may play on non-ECP servers with the ECP installed, however many effects will not be visible because a number of important eventhandlers are registered on remote computers, not your own.
The ECP will operate in either dedicated or designated server mode.
If you are using a dedicated OFP server (running the OFP executable with the -server option) then the ECP will use dedicated server mode. This means that the 'simulation settings' on the
dedicated server will be used by all connected to the server. All 'effect settings' are local to the client computers - you could turn off blood on a client, for example, and this would not effect any other computer on the network.
If you are not using a dedicated server, and the game has been started through the OFP 'multiplayer' interface, then the ECP will automatically pick one of the computers on the network
to act as a designated server. The 'simulation settings' on this designated server will be used on all computers. Unfortunately there is currently no way for the ECP to determine which is the actual server in this sort of game (we are working on it!).
It is ok to run the ECP on your system and connect to non-ECP servers on the internet. All of the ECP computers in the game will synchronise simulation settings amongst themselves as
appropriate. Note that some effects will not be seen due to certain eventhandlers being local to other, non-ECP computers.
If you are a mission designer, please put a single trigger or game logic unit name 'ECP_server' in your mission. This will allow the ECP to correctly determine which computer is the server.
The ECP is designed with mission editing in mind, and all ECP settings can be explicitly defined by a mission editor for a specific mission. In order to know which values you should modify in the ECP database, take the ECP_Settings.sqf as reference.
Overriding ECP settings File
Suppose, for example, that you don't want tail rotor failure to occur in your mission. In your
mission's init.sqs file you would have:
ECP_public set [ 5 , true ]
This would replace the user-defined value in ECP_Settings.sqf. There are also a great range of values and functions that you can use within your ECP-compatible mission.
Here are some important FAQ entries that you should read if you are mission editing with the ECP:
Why can't I see ECP effects in my cutscenes?
How do I make non-compatible addons work with the ECP?
How do I use the ECP Editor Enhancement?
ECP Database Values
When making missions specifically for use with the ECP, the following values might be useful:
ECP_server_id will contain an ID representing either the dedicated or designated server in an MP game.
It may be:
ECP_server_id == -2 // Server not yet chosen ECP_server_id == -1 // Dedicated server or standalone game ECP_server_id >= 0 // Designated server (one of the clients is acting as ECP designated server)
ECP_is_server will equal true on the computer that is server.
ECP_island_array contains information regarding the current island (loaded from
ECP_Island_Settings.sqf). It will contain the default island settings (specified in
ECP_Settings.sqf) if the current island could not be detected.
See the top of ECP_Island_Settings.sqf for a description of each element in ECP_island_array.
ECP_Internal select 18 // (ECP_units) - Array
This variable is an array of all 'man' units recognised by the ECP.
ECP Database Functions
ECP system functions
<list of units> call (ECP_resources select 30)
This function, ECP_addUnits, will add <list of units> to the ECP in a particular mission. It is designed to be used in a trigger with the following characteristics:
Size: 50000 x 50000 (as big as the entire map)
Activation: Anybody (Once) when 'Present'
On Activation: thislist call (ECP_resources select 30)
From ECP 1.057.
<"unit or camera"> call (ECP_resources select 25)
This function, ECP_addLODTgt, will add <"unit or camera"> to the ECP for the purpose of LOD calculations. Note that the name of the unit or camera must be enclosed in inverted commas (").
From ECP 1.065.
ECP Island related functions
<island array> call (ECP_resources select 37)
ECP_AddIsland adds a new island to the ECP island array. This should be done right at the start of a mission. <island array> is as per that described in ECP_Island_Settings.sqf. If the island name already exists, the new island array will replace the old one. Mission designers can use this function to specify their own island settings (rather than use player-defined ones).
A key component of an island definition is the island matrix. This is the 'key' used to determine what island is currently being used. This function, ECP_GetMatrix, will display a dialog that can be used to calculate the island matrix. See ECP_Island_Settings.sqf for more information.