1. Ravenfield
  2. News

Ravenfield News

EA29 - Game Fixes & Modding Groundwork

EA29 is finally here! While a lot of my time since the last update has been spent working on campaign assets (which are not quite ready to be shown yet), I have been polishing up the base game with quality-of-life fixes and improving Ravenscript and the Trigger System. This should get the two scripting systems ready for the planned addition of custom game modes which I hope to get working very soon.

IMPORTANT: If you're running into any weird main menu or ingame bugs that prevents you from playing the game after updating to EA29, make sure you remove any mods that modify the original game files such as RavenM.

One of the new features in EA29 is an enhanced instant action preview screen, where the background will change based on the metadata tags of the map that is currently selected. Map metadata could previously only be changed via the RF modding tools for Unity, but is now also available through the ingame map editor (via Level Details -> Metadata). In addition to tagging levels, metadata also allows map makers to control other map information such as display name and recommended bot count.



The dynamic instant action preview screen may seem like a superfluous feature at first, but the data that drives the preview screen will be exposed to Ravenscript in a future update. This will allow modders to find maps with specific tags (City, Desert, Airport, Coastline, etc) and load them - essentially allowing modders to create custom campaigns spanning all maps that are currently subscribed (moddable conquest mode on custom maps, anyone?). For this reason, I highly recommend that you tag your custom maps using the new metadata features.



I would also like to highlight one of the new Ravenscript/Trigger features, the addition of named trigger signals. Named signals are sent from a sender component to a receiver component just like regular Trigger System signals, but the modder does not need to directly connect the sender to the receiver inside the map tools. Instead, the modder assigns a name to the sent signal, and any receivers that are listening to signals of the same name will receive the signal. Named signals can be sent between maps/game modes/vehicles/weapons loaded from different files, including different mods, allowing for easy inter-mod logic. Before this addition, this type of communication was difficult to do inside Ravenfield.



Finally, you can check out a few improvements to the citadel story mission such as a more detailed destroyed hangar area. This in an example of the power of the trigger system, where you can dynamically change areas of a map based on story events. Unfortunately I have not been able to implement the remaining cutscenes for the citadel mission yet, which is something I was planning on doing for EA29. Expect these to come in the next one or two updates, finishing up the first story mission in the official campaign.


-- Full change log --

Game improvements:
- Added camera smoothing to player movement while on foot. This should prevent jittering when running close to bots or when playing the game at high refresh rate displays
- Various updates to level geometry in the citadel mission.
- Data container component preprocessing, will now only run once per data container asset at load time instead of once for every instance in Awake().
- Non-actor-collision layer will now produce impact decals correctly
- Objective indicator now fades in/out based on what you're currently aiming at.
- Target seeking missiles now have a grace period of one second after thruster ignition, during this time period the missile can never lose tracking of the target. This allows target seeking missiles to track targets that are behind them on some custom vehicles.
- Vehicles can now be assigned a driver halt strategy, which allows the driver to stop when a passenger is engaging a target according to the passenger weapon's halt strategy configuration.
- Squad leaders can now halt when engaging preferred targets.
- Razorback MG will now halt when engaging preferred targets with the turret
- Prowler quadbike will now halt when the passenger is engaging a preferred target
- Some slight terrain updates to dustbowl near Raven controlled airport to make it easier to get up onto the tarmac for bots.
- Updated occlusion culling data on dustbowl to fix some props turning invisible when standing inside certain areas
- In spec ops mode, the bot count will set the number of teammates directly when the balance slider is set fully to the player team.
- When leaning to the right while standing, the camera will now move slightly less to better align the camera to the third person animation.
- Sped up third person stance changing animations slightly
- Added spawn point offset values to vehicles. This value can be used for large vehicle to offset the spawn position to prevent the vehicle from clipping into the ground.

Bugfixes:
- Fixed a bug where changing a missile target via RS would not cause the targeted vehicle to register the new missile (and thus not warning the pilot)
- Fixed bug with custom skins selected from the instant action menu would sometimes not be applied to the first person arms
- Fixed a bug where TriggerVolumes would sometimes not initialize correctly, and not be able to detect actors.
- Fixed game mode "no flag config" value not having any effect.
- Fixed a bug where bots would sometimes get stuck when following scripted path groups. This bug typically happened on the citadel mission where teammates would sometimes get stuck near the gate.
- Fixed a bug where spec ops mode would not end when the exfiltration helicopter could not fit all teammates as passengers.
- It is no longer possible to lean while dead
- Fixed a bug where bots would get stuck when trying to go to a ScriptedPathGroup. This would sometimes make the bots get stuck outside the citadel gate in the citadel story mission.
- Various misc AI improvements and fixes

Map metadata updates:
- Added biome/terrain/decorator values to map metadata. These values are used to display a custom configuration background in instant action mode. Additionally, these values will be available for modders to query inside custom campaigns in the future.
- Map metadata now contains information about the precense of ground/naval/air vehicles in maps, this will be made available to custom campaign modding in the future.
- It is now recommended to always generate map metadata and set up map type and theme so the exported map can be categorized correctly. Therefore, the mod tool will warn you if you export a map that doesn't have metadata and instruct you how to create metadata for your map.
- Map biome/terrain/decorator metadata values can be automatically fetched from steam workshop tags for maps that do not have them assigned.
- Added metadata editor to ingame map editor.

Ravenscript:
- Exposed LandHelicopterAtPosition(), CancelLanding(), TakeOff() and related landing status bools to the Squad class. This makes bot helicopter landing controllable from RS
- Exposed Player.allowAutoWaveRespawn, set to false to stop player from being able to spawn in the automatic wave respawn system used by most game modes.
- Exposed GameManager.sceneName and GameManager.mapDisplayName that can be used to get names of the current scene/map.
- Exposed Time.systemTime fields
- Exposed ConfigurableJoint
- Exposed ReflectionProbe
- Exposed Rigidbody interpolation/collision detection values
- Exposed MountedStabilizedTurretClamp to RS
- Exposed new Actor values to RS: hasHeroArmor, isInvulnerable, canBeTargeted and attackersIgnoreRulesOfEngagement
- Added Random.RangeInteger() to RS to randomize integer values (previously only floats were available)
- Added OnDestroy RS callback to ScriptedComponent
- Exposed global named signal sending from using TriggerScriptedSignal.SendGlobalNamedSignal("my cool signal")
- Cleaned up API for MountedWeapons and MountedStabilizedTurret which previously contained lots of unneccesary functions and properties
- Updated the online Ravenfield documentation categories, the API reference is now split up into Ravenfield and Unity type categories, which should make it easier to navigate
- Updated the online Ravenfield documentation's auto-generated links to the Unity documentation for Unity types so they are no longer 404

Trigger system:
- Added TriggerDamageVehicle component
- Added TriggerShowInputPrompt component
- Added TriggerOnVehicleDestroyed component
- Added TriggerNamedSignalSender and TriggerNamedSignalReceiver components. These allow sending named signals to all child receivers of a gameobject, without having to explicitly set a destination trigger component. Named signals can optionally be sent/received globally.
- Added TriggerDebugMessage component that can be used to display a console message from the trigger system along with an activation counter and the signal context.
- Added CancelLanding to TriggerLandHelicopter component
- Added "pick random squad from team" and team filtering to squad references
- Added optional actor credit to TriggerKillActor
- Added total actor count greater/equal condition to TriggerCondition
- TriggerSpawnVehicle can now use TurretSpawners.
- TurretSpawners can now be set to Scripted spawn mode, which allows them to be controlled from Ravenscript/The trigger system instead of their default behaviour
- TriggerSpawnPrefab signal propagation to the prefab instance can now optionally use a named signal in the same way as TriggerNamedSignalSender.
- Renamed TriggerScriptedSignalSender and TriggerScriptedFunction to TriggerRavenscriptSignalSender and TriggerRavenscriptFunctionCall in order to differentiate them from the named signals. This is just a visual change in the mod tools inspector. The Ravenscript class name is kept the same as before, so no need to update any existing code!
- Added per-signal context documentation to trigger components. This can be used to see what parts of the signal context a trigger component sets.
- Fixed default paramters values for TriggerSpawnSquad/TriggerSpawnPlayer components
- Fixed a bug where the player would sometimes not get the correct weapon arm skin when spawning from triggers.
- Fixed OnActorEnterSeat LeaveSeat signal not being sent
- Fixed an issue where OnActorDeath trigger squad filtering did not work as intended
- Fixed an issue where squad conditions would sometimes return fale positives.

Dialog system improvements:
- Added rich text support for the ingame dialog system. Rich text supports Unity's built in rich text tags such as , , and the following custom tags:

- Prints the player's steam username
- Prints the map's display name
- Changes the icon actor pose to something else
- Changes the grain amount on the dialog portrait
- Pauses for duration seconds
- Changes the print speed of the dialog text, default is 1.0
- Stops the actor mouth animation and prevents blip sounds from playing
- colors text using the team color
- Prints the team name

Valid team parameters are:
team0 - Team 0, default Eagle
team1 - Team 1, default Raven
teamf - Friendly Team (same as player)
teame - Enemy Team


I hope you'll enjoy this update!

/Johan (SteelRaven7)

EA28 Patch Nov 27

Here's a patch fixing some issues in EA28:

- Fixed a bug where bots would sometimes ignore all enemies for a while.
- Fixed an issue with data containers weapon entry prefabs not being initialized correctly, which could potentially lead to various related bugs.

EA28 - Custom Mission update

IMPORTANT INFO If you're having trouble with menu buttons not working and mods not loading correctly, this is because you're running the game with the RavenM mod installed. RavenM is currently not supporting EA28. You can either remove RavenM entirely to use EA28, or switch to the RavenM compatible branch, found by going to your steam library -> right click Ravenfield -> Properties -> Betas -> Select ravenm-compatible in the dropdown.

Please keep in mind that DLL mods such as RavenM and other mods that need to be manually installed have no official support inside the game. This means that any updates to the official game will cause these mods to break!



Hey all,

Here's the latest Ravenfield update, featuring loads of improvements to the modding tools, including the new ability for modders to create their own story missions.

One of the goals with Ravenfield's official campaign is to bring the same tools used to create official missions to the modders, and with this update all of the existing tools are now available for modders to use! The main bulk of this update comes in the form of new Trigger System components. These components can be linked together using the Ravenfield mod tools for Unity to create story driven experiences or even entire new game modes - all without having to code anything. If you're interested in creating your own story missions, now is a great time to jump in! You can find everything you need on the official modding page.

Here are a two halloween-themed custom missions that have been created by Ravenfield's modding community thus far:

Penumbra by Sofa

Isolated by Hans, NefariousDrH, RadioactiveJellyfish, LeDiegue3 and Aspel

There are even more missions to try out under the workshop Scripted Mission tag.

You can also check out the new and improved Island, featuring an all new quarry themed capture point with multiple new paths. While most of the level layout remains intact, there have been minor tweaks here and there to improve sightlines and to create more natural paths between capture points.


Oh and don't worry, you can find the old island map on the workshop.


[h2]Full change log[/h2]

Game changes
  • Updated steamworks.net to latest version, which should solve an issue where the steam api could not be initialized on Apple M1 systems, resulting in the menu not appearing correctly.
  • Capture points take slightly longer to neutralize due to the respawn logic change.
  • Made the distance you can fall before ragdolling consistent between different gravity settings.
  • Mouse look is now enabled while dead.
  • Added a very fast acceleration when starting moving/changing direction. This makes it easier to get into exact positions by tapping movement keys.
  • Fixed an issue where benchmark mode didn't work
  • Added healing/resupply sounds to the new ingame ui, and the healthbar/ammo heading bar will now blink when resupplying or healing.
  • When restarting a rfc map, the file is no longer unloaded and reloaded first, resulting in much shorter load times on reloads
  • Kicking an upside down vehicle that is light will now cause it to flip over, allowing you to recover crashed vehicles more easily.
  • You can no longer phase through level geometry when getting on a ladder
  • You must now look towards a ladder to be able to get on it
  • Fixed an issue where you would sometimes not be able to get off ladders if you were spamming the use button
  • Fixed a bug where melee weapons would not hit rigidbodies etc on the default layer
  • Fixed a bug where the first person camera would sometimes be zoomed out when aiming down sights. This is now fixed by clamping the ADS FOV value so it's always slightly lower than the current default FOV
  • Fixed a bug where the spectator camera was rendering 3d hud objects.
  • Fixed player actor Accessory rendering when switching between first person/third person cameras.


Respawn logic redesign
  • The game will now cluster contested spawn points and regular spawn points into regions.
  • Whenever an attacker is inside any spawn point region, the capture point will be considered under attack.
  • Each region is penalized for having an attacker or a defender that is taking fire inside.
  • When spawning, the region with the lowest penalty score is picked.
  • When a capture point is not under attack (or if no contested spawn point container is assigned), the regular spawn points will be used.
  • Due to this change, only non-moving spawn points are allowed when using a contested spawn point container. For modded special cases with moving spawn points such as flags attached to large vehicles etc, you can still use moving regular spawn points by not assigning a contested spawn point container.


Map changes
  • Island has received an overhaul, completely redesigning the old fort area into a quarry. This area still retains most of the old layout, but with a new theme and a couple of new paths. The old Island map is no longer available ingame, but you can find it in the workshop as "Island (2016)".
  • Other parts of the island has also received slight redesigns, making paths/lanes more clear.
  • Minor updates to river delta sawmill area
  • Made citadel tree vis colliders slightly bigger so they block AI views a bit more than before
  • Added more sawmill modular props for use in the ingame map editor
  • Added new island props to the ingame map editor
  • Added "Show Objectives" key prompt to the start of the citadel mission

    Modding changes
  • Added source mod/source bundle tracking to all prefabs, which allows proper shading reloading etc if needed, should solve some rare cases of pinkeye on Mac/Linux.
  • Added SpriteActorDatabase and IngameDialogActorDatabaseProvider component that are used to bundle custom sprite actors for the ingame dialog system. To use, just instantiate the IngameDialogActorDatabaseProvider component pointing to your SpriteActorDatabase anywhere in your map/mutator. As long as that object is alive, you can reference your custom actors by name through the TriggerDialog or via the RS ingame dialog API.
  • Added the following components to the whitelist (meaning they can now be loaded from custom maps/content mods):
    Cloth, Legacy water components, Rigidbody joints
  • Added full support for RFL metadata, allowing modders to change the display name, loading screen background image/decoration 3d model, visibility on instant action mode etc.
  • Added Actor imposters, these are characters that can follow predefined ScriptedPathGroup paths but lack all AI, Colliders, Hitboxes, Ragdolls etc. These imposters can be used for cutscenes or could be placed in the background in inaccessible areas of a map/mission to fill out the battlefield with more action. Because they don't have AI and related features, they are more optimized than regular actors.
  • Fixed a bug where boat navmeshes would not generate on water planes.
  • Terrains inside RFLs exported with Unity 2020.3 will keep the original materials unless a shader reload is requested due to platform incompabilities. This allows modders to freely change the terrain materials.
  • Fixed a bug where modded vehicle weapon names would not be assigned correctly and instead throw an error in the console.
  • ActorSkinData assets used in TriggerSpawnSquad/TriggerSpawnPlayer/TriggerSpawnImposters will now be preprocessed and retargeted based on the unity rig version. This means they are now also compatible with skins made for the Unity 5 rig, but you need to set up the correct rig version in the skin's Rig Settings.
  • Added mod save data, and exposed to RS (see ScriptedBehaviour.modSaveData). This is used to save and load values between game sessions. Each mod has its own save data, meaning that maps/mutators/etc in the same mod can access the same values.
  • Save data is found in %USERPROFILE%\AppData\LocalLow\SteelRaven7\RavenfieldSteam\SaveData\Mods*mod_name*.save (on windows) in plaintext xml (so it's easier to debug).
  • Added Destructible takesMeleeDamage, takesSplashDamage and takesImpactDamage (damage from being rammed by vehicles or other rigidbodies), all default to off.
  • Vehicles placed in maps will no longer be removed when the map loads. This means you can now have one-off vehicles placed in your map, which is useful for story missions etc. Vehicles spawned like this can be referenced in the trigger system by using the VehicleInstance reference type.
  • Fixed a bug where navmesh would sometimes not generate through terrain holes on custom levels


Added SynchronizeEditorTransform component.
This is a component that is only available in test mode (by testing a map via the Unity RF Tools). With this component you can synchronize the gameobject transform and all children with renderers from the game to the editor. Here's how to set it up:
  • Place the component on the gameobject you want to synchronize (typically a vehicle). Only once synchronized game object is allowed at a time!
  • Run test mode on the map to load it up ingame. Press play mode in the editor so both the editor and the game is running at the same time.
  • Press Q ingame to connect to the editor. After a few seconds the two should be connected, any the component's gameobject and children will be synchronized. (The game may freeze for a few seconds while the connection is being set up)
  • One use case for this would be to record yourself driving a vehicle ingame. You can use the Unity Recorder package to record the synchronized vehicle movement keyframes as an animation, which can then be used as a cutscene in a scripted mission.


PLEASE NOTE: The SynchronizeEditorTransform component is very naively implemented, only allowing one gameobject and children to be synchronized and using quite a high data rate. However it should work well for recording individual vehicles, which is the use case I had in mind. As this component is very niche, I'm not planning on expanding or optimizing it.


New Trigger components
  • TriggerEquipWeapon, used to equip weapons on actors
  • TriggerEndMatch, triggers the victory/defeat sequence and optionally returns the game to the main menu.
  • TriggerExplosion, simulates and explosion effect, damaging and pushing all nearby actors and vehicles
  • TriggerEffect, can play screenshake, fades, audio events directly from triggers
  • TriggerChangeScene, can load a new map from the trigger system (by specfying the .rfl or .rfld name), or return to the menu
  • TriggerOnSquadRequestsNewOrder, sends a signal whenever an AI squad requests a new order. Having this component in your map prevents the AICommander from automatically issuing orders.
  • TriggerFireWeapon, used to force fire a weapon from triggers
  • TriggerHelicopterLanding, causes a helicopter to land at a specific landing zone (or take off again)
  • TriggerSquadRecalculatePath, forces a squad to recalculate the path to their current order destination. Useful for cases where other triggers modify the map and the navmesh, and squads must now take alternate paths.
  • TriggerUpdateVehicleInfo, used to update the vehicle stats
  • TriggerExitVehicle, forces actors to leave a vehicle
  • TriggerDeployParachute, forces actors to deploy their parachute
  • TriggerSpawnImposterActors, used to spawn actor imposters that follow a predefined ScriptedPathGroup.
  • TriggerChangeGravity, change the gravity of all objects in the scene
  • TriggerChangeSpawnpointContainer, change the spawn points of a capture point from triggers.
  • TriggerUpdateFog, change the scene fog
  • TriggerUpdateAmbientLighting, change the scene ambient lighting
  • TriggerChangeMaterial, changes a renderer material or the skybox material
  • TriggerHideUI, hide elements of the built in UI
  • TriggerShowInputPrompt, used to display a key prompt


Trigger System improvements
  • WeaponState data for TriggerSpawnSquad and TriggerSpawnPlayer can be used to control the ammo/etc of individual weapons when spaning.
  • Added lots of new conditions to TriggerCondition
  • TriggerDialog now has actor blip sound overrides so you can change the character voice audio clip
  • Fixed a bug where triggering the same TriggerDialog component multiple times would sometimes cause the dialog system to stop showing up.
  • Fixed a bug where TriggerOnActorDeath would trigger before the game had fully registered that actor's death, potentially leading to misleading results in TriggerCondition and similar systems.
  • TriggerIssueSquadOrder can now be used to issue an AI command order (basically letting the game auto-assign a new order that makes sense)
  • TriggerDelay can now optionally block signals if one is already being delayed.
  • Added WeaponReference to Trigger System, this type is now available as a signal context.
  • Added TriggerUsable tooltip interaction values that control how the tooltip is shown/hidden when used.
  • Added SpawnBehaviour values to VehicleSpawner, can be set to only spawn vehicles from scripted events (RS/Trigger system). This will prevent the game from automatically spawning/respawning the vehicle.
  • Added VehicleInfo values to TriggerSpawnVehicle, used to configure spawning health etc.
  • Added canDeployParachute to spawn ActorInfo
  • Added FireWeapon modifier to ScriptedPaths, use this to control the firing of weapons on actors or imposters following the path.
  • TriggerUpdateActorInfo can set/increment current health value.
  • TriggerSpawnPrefab can optionally propagate the signal to the first TriggerReceiver component on the instantiated prefab's root GameObject. This is used to more easily run trigger logic on a spawned prefab, and keeps the original signal's context.
  • Fixed a bug where TriggerSquadFormation was not working
  • Added player seat change rules for TriggerSpawnVehicle
  • Added spawnSource field to TriggerSpawnSquad which can be used to control whether or not dead actors can be used for spawning (which is the default settings), or if a new actor should always be created (this can be useful if you want to spawn an actor for a specific map-related purpose but don't want to interfere with the actors in an existing game mode)
  • Added per-signal documention of all trigger system signals. This includes when the signal is sent, and what context it provides to the receiving trigger component.
  • Added WeaponEntry hidden flag that can be used to hide a weapon from being pickable in instant action mode (It can still be spawned in via trigger/Ravenscript)
  • Added automatic signal canceling if a signal has been propagated through more than 200 components. This also logs an error with the last component the singal passed through. If this happens, you most likely have an infinite signal loop in your map/mod.
  • Deprecated TriggerUpdateVehicle as it is functionally the same as TriggerUpdateVehicleInfo. The component will continue to work but will not be distributed with future RFTools packages.


Ravenscript changes
  • Exposed Joint to RS
  • Exposed Exposed spawnpointContainer/contestedSpawnpointContainer to RS
  • Exposed TriggerVolumes to RS
  • Exposed ScriptedBehaviour.modSaveData to RS
  • Added new TriggerScriptedSignal.Send(name) function call (without signal context argument) that generates a signal with an empty signal context.
  • Exposed GameManager.gameDifficulty to RS


RFTools additions
  • Added metadata file system. Metadata are .json files next to the mod files that can either be manually edited through a text editor or changed via built in metadata editors.
  • Added RFL metadata editor window that can be used to change level display name, loading screen background image, visibility in instant action mode and more. (Access via Ravenfield Tools -> Map -> Metadata Editor in the top menu bar).
  • Removed unintended animation that was previously included in RFTools which wasn't used by the project
  • Maps using the Trigger System will now automatically be tagged as such on the workshop. This allows players to more easily find maps with extra functionality on top of the built in game rules.
  • Updated all trigger component classes to be up to date with the main project, so more documentation should now be available.
  • Updated the workshop item upload window, it now shows an error message if it fails to connect to steam
  • Updated the workshop item file labeling system, now metadata files such as .json, .png and .obj are visible, and also any files that aren't allowed which prevents the item from uploading.
  • Added browse buttons to the workshop item file labeling lists, this opens the corresponding folder in your file explorer so you can more easily see the files

  • Added Trigger Prefabs (found in RFTools/Prefabs/Trigger Prefabs. You can drag and drop these into your map to add cool predefined behaviours:
  • Area Secure Bark Trigger Group: Triggers a dialog when all enemies inside the supplied trigger volume die IF the player is inside the same volume trigger. This is useful for making your pals go "Area Secure" and say other very tactical one-liners.
  • Force Vehicle Pilot Look Direction: Hook this up to a vehicle to force the pilot to look in a certain direction when not engaging targets.
  • Spawn Player Squad Reinforcements: When triggered and the player has less than 2 squadmates (the number can be configured), will spawn reinforcements that automatically join the player squad.
  • ZOMBIES!: Provides basic zombie behaviour to the enemy team, making them rush towards the player at all times. You can activate/deactivate this object to dynamically turn this behaviour on or off during gameplay.
  • Trigger Spawn Vehicle Airdrop prefab: spawns a vehicle in a parachute, and causes the closest AI squad to try to enter the vehicle when it lands


As always, I hope you'll enjoy these new features and look forward to seeing more cool story missions designed by the community!

/Johan (SteelRaven7)

EA27 - Story Mission Update

Hey hey everyone, EA27 is finally here! Holy smokes this took a long time...

So what's new? Basically I have been working on getting story missions to work with the game. On top of creating a story mission I have spent a lot of time refactoring the underlying game tech so that it works with both the original instant action style sandbox gameplay and the new designed style of the story campaign. You can see the results of this in the new story mission available in the instant action menu. This mission is a part of the story campaign I announced a while back, and while it is still a work in progress (this is Ravenfield after all...) it is still playable from start to finish. In this mission, you're tasked with assaulting the Citadel and sabotaging the enemy air capabilities. It even opens with a cutscene featuring shiny new fully-animated characters :O



The idea behind this mission is to bring together parts of both Spec Ops and Battle gameplay, so you will play as both Talon and your standard Eagle grunt in the same mission. All game logic that drives this mission has been designed using the new Trigger System - a set of logic components that can be connected together using signals in the RF Mod Tools for Unity. The point of this system is to make story mission map design much more approachable for modders. One of the primary goals for the Citadel mission was to design the Trigger System itself along with the mission, making sure that similar missions can be created using only Triggers - zero coding required!

This Trigger System is not limited to story missions, however. You can attach Trigger System components to any modded GameObject, meaning it can be used to drive game logic on your modded maps, vehicles, weapons, projectiles, etc. While the Trigger System can be viewed as an alternative to Ravenscript, more complex logic are usually easier to design using Ravenscript, but the choice is left entirely to the modder. The two systems are completely interoperable as you can send and receive Trigger System signals from a Ravenscript ScriptedBehavior component. Along with the Trigger System, there are other mission-related components that can be used to manually set up AI paths, detect player entering triggers, trigger cutscenes and more.



On top of the new game systems, you will probably notice that the AI has been streamlined quite a bit, and that the game plays a lot better than it did in EA26. This is due to the numerous AI changes that had to be made in order to accomodate the new trigger system and custom game mode tech. You should see the AI using their weapons in a more sane way, and utilizing cover better. The game HUD has also received a much-needed makeover, and now has a more modern and clear style. Additionally, the new HUD is modular, so custom HUDs can override specific parts of the official HUD as needed.



Now that this update is out, what's next? Most of the very time-consuming task of redoing the game infrastructure to support story missions and the Trigger System is now done. This means that you can expect much more frequent updates in the future, mainly focused on adding more official story missions and eventually becoming the story campaign. These tools are also being made available to modders right away, so modders will be able to create playable custom game modes or story missions inside level files. Eventually, modders will be able to create fully fledged custom game modes playable on any map, but we are not quite there yet, maybe for EA28 :D!


[h3]Full Change Log[/h3]

Game changes
- Added WIP story mission that takes place on the Citadel map
- New HUD design!
- Added hangar area to the Citadel map
- Navmesh generator now fully support terrain holes
- Forced navmesh generator to use highest detail representation of terrain while generating.
- Optimized the germanic house models used on Citadel map, drastically reducing the drawcalls
- Fixed a bug where alt weapons would not animate correctly after getting up from ragdoll
- Added checks to prevent option menu values like mouse sensitivity and FOV from randomly changing while playing the game.
- Added support for moving platforms such as elevators!
- You can now stand on top of vehicles without being rammed (Basically allowing you to ride on top of tanks and stuff lol). This works up to a speed threshold of 20 m/s
- Added support for custom game modes bundled inside maps
- Fixed a bug where weapons using patched animations (due to them not being EA26+ compatible) would sometimes spam error messages.
- Made soldier animation culling more robust, should fix a rare bug where animations would sometimes be culled when they shouldn't.
- Improvement to player third person lean animation transitions.
- Improvements to soldier animation state machine transitions so animations between different stances flow better and faster.
- The capture state of the flag the player is capturing will now be updated every frame, meaning that the flag capture progress will look smoother.
- The kill cam will now move slightly when the direct path between the player and the killer bot is obscured.
- Fixed a bug where maps with multiple identical flag pairs in the neighbor manager would not start.
- Added slight spread to Rhino MG
- Cassowary missile tracking/lock sounds will now play in bomb sight.
- Fixed a bug where bots could sometimes shoot through walls
- At very short ranges (< 1m) Players cannot deal friendly fire, this mitigates the issue where friendly bots run in front of you just as you fire your weapon.
- Fixed a bug where flag capture volumes sometimes would not initialize correctly at the start of a map
- Added follower invisibility system to the citadel mission (Copying over the functionality from spec-ops where your squadmates will be invisible to enemy detection while following you). This system is now completely modular and is exposed to the trigger system and eventually to RS.
- Added Detection Groups, where multiple AI squads will alert each other whenever one of them spots the enemy. These components can also send trigger signals whenever a group is alerted.
- Doubled suppressed Patriot projectile falloff range so it's more effective at longer ranges.
- Fixed some spawns at the Coastline flag Cliff that were previously under the terrain
- Refactored the vehicle HUD system to be more robust when changing cameras
- Added support to compeltely disable the player's game input, which is useful for cutscenes etc.
- Fixed a bug where the player could sometimes end up on the wrong team in the scoreboard UI
- Improved suspension values on Jeep and Quadbike so they should be a little less bouncy
- Reduced friction on ground vehicle hitbox colliders so they don't get stuck quite as hard when running into stuff
- Refactored the audio system to make it easier to control audio mixing from Ravenscript/Trigger system
- Master AudioMixer is no longer affected by filtering on audio events such as deafening and being inside enclosed vehicles, so you can use this group to play unfiltered audio even when using filters on all other ingame audio.
- Ingame audio will now fade in when starting a match
- Updated lightmaps on Temple and Citadel maps.
- Updated to Unity engine 2020.3.48f1

Custom Game Modes
- Added support for custom game modes, at the moment custom game modes can only be bundled inside maps, but eventually it will be possible to also use custom game modes on any level.
- Added lots of new systems that allow for story missions to be played.
- Added support for freezing the game during cutscenes, etc.
- Added support for loading/saving data between level restarts. This is currently limited to checkpoint data, but will be expanded in future updates. It will also be possible to save this data between game sessions for persistent data loading and saving for mutators and custom campaigns.
- Added WIP Citadel story mission that can be played via the instant action menu. This mission is entirely designed using the new Trigger system!

AI Changes
- Squadmates following their leader will now try to move in a way so they can always have direct line of sight to the squad leader, meaning squads stick closer together in areas with lots of cover.
- Fixed a bug where the AI sometimes would pick really bad cover points while defending a flag
- The AI will now prefer to spread out more when picking a cover point.
- Fixed a bug where the AI would not fire mortar style weapons correctly
- Improved AI weapon switching, so now they should be way more consistent and not switch out their weapon all the time.
- Fixed AI crouching/leaning while using cover points.
- When using slow fire rate weapons like snipers, bots will now wait a little after taking a shot before crouching when behind cover.
- Bots with skill level veteran or higher will now lean while checking corners in close quarters areas.
- Fixed a bug where bots would sometimes walk through geometry when getting a new path while traversing a pathfinding link.
- Fixed multiple bugs where bots would get corrupted paths when walking to capture points after being ragdolled/strafing a target.
- When walking around a corner, bots that lean will now lean more or less depending on their look direction. This should result in smoother looking leans and prevent weird leaning behaviour when aiming backwards, etc.
- Bots will no longer play emote animations while targeting an enemy or reloading.
- Fixed a bug where bots would sometimes look at the ground when approaching the end of their current walking path.
- Bots now go to walkable navmesh nodes inside of the capture range/volume when attacking a flag, this should prevent edge cases where attacking squads think they are attacking a flag when in reality they are standing outside of the capture zone.
- AI can no longer deal friendly fire while using normal projectiles. They can still deal friendly fire by splash damage, however. Previously, AI could deal friendly fire damage when hitting a target 100 meters or futher away
- After firing their weapon, bots will not be able to look around for one second (unless they spot another target to fire at). This fixes an issue where bots would sometimes fire at an enemy, but then look in a completely other direction and continue holding their fire input for a split second, randomly firing projectiles across the level.
- Lots of other small tweaks and improvements to the AI

Ingame Map Editor
- Fixed some map editor props not generating navmesh correctly.
- Fixed skeleton hat missing mesh
- Fixed missing colliders on snowy arch and house stilts

Modding
- Added displayName field for weapons, this is the name that shows up in the new UI.
- Dropped support of the legacy animation component. This component will no longer load from mods. Please use the new animator controller component instead!
- Added component for animated vehicles to drive engine audio from their current speed, this is really useful for cutscenes where the vehicle movement is pre-animated such as the breaching APC in the citadel mission.

Trigger system
- Added ScriptedPathGroups which can be used to manually design paths for bots to follow.
- Added several dozens of logic components that can be used to contorol game flow

Ravenscript
- Added a killCredit property to weapons which is automatically set to whoever equips a weapon, but can be overridden through this value. This value can also be used to set whoever should get the kill from scripted weapons such as automatic turrets, etc.
- Renamed Projectile.source to Projectile.killCredit to match weapon naming convention. Accessing .source will still work, meaning mods using the older name will still work fine.
- Fixed a bug where weapons could not fire projectiles through the Shoot() function unless they were first equipped by an actor. This means that weapons can now be fired via scripts without having to be picked up.
- Exposed functions that can be used to hide individual elements of the new ingame UI. This is great if you're making a custom HUD and only want to replace parts of the vanilla UI.
- Exposed PlayerHud.playerOrderState to RS, which can be used to drive player squad status labels in your custom HUDs
- Added Actor functions to more easily access actor skinned mesh renderers
- Exposed fonts to Ravenscript and DataContainer component
- Various Ravenscript bugfixes


Coming up, I'm goin to finish up the citadel story mission and improve the support for custom game modes for EA28. In the meantime, I hope you'll enjoy this update!

/Johan (SteelRaven7)

June EA26 Mini-update

Hey, here's a quick mini-update with some fixes and additions to the game. As this isn't large enough to release as it's own major EA update, I figured I'd release a mini-update to EA26.

Change log:

- Updated the engine version to Unity 2020.3.34f1
- Added Big Head mutator (Your head grows as you get a higher kill-streak)
- Exposed bone scaling to RS via Actor.SetHumanoidBoneScale()
- Exposed Actor.SetWeaponParentScale() and Actor.SetWeaponParentApproximateWorldScale()
- Fixed AI sprinting behaviour, squad leaders will now sprint most of the time when moving towards an objective, but will stop sprinting when an enemy is spotted. Squad members will follow the leader and sprint to catch up.
- Rebaked occlusion data on coastline
- Fixed a bug where cover points would not be placed on the terrain on ingame map maker maps. (Navmesh needs to be rebaked for this to take effect on existing levels)
- Disabled collisions between first person layer and Players/Actors. This should prevent weird player movement issues from occuring when using weapons with attached colliders (which is used by some modded weapons such as shields etc.).

Improvements to commanding squadmates:
- When assigning a move order (or attack/defend flag order), bots will no longer stop and get into cover or stop to take down faraway targets until they have arrived at their destination.
- When bots are following, and are >15 meters away, they will no longer stop to get into cover or stop to shoot at faraway targets. They will still use cover as normal when within 15 meters of their desired formation position.
- Tweaked some code to make AI way more likely to target the currently assigned squad target. (The one you assign by aiming down sights and holding the squad order button)

See you again after summer!

/Johan