Forts/Moonshot Update 1.5 - Multiplayer Training Missions
G'day forts fans! We're back with the two in a one-two punch of updates. As well as the usual fixes and optimisations, Update 1.5 comes with the new multiplayer training missions.
Multiplayer Training Missions
With many new players expected over the holiday season, we though it high time we gave rookies a helping hand in getting up to speed with the techniques of online multiplayer combat, thus the multiplayer training missions.
After heading to the Multiplayer section of the game, you will find a Training tab next to the Online and Local tabs. This is where the training missions live. We have added three new missions aimed at teaching new players some of the common skills employed in the meta game. This new feature comes with a new environment set Training Ground, complete with all new props, Gunner Sergeant character and ambient sound effects.
Training Missions
Anti-Air - Survive against three AI forts for ten minutes. Construct anti-air defences to protect your fort against the enemy swarms and warheads.
Cross-bracing - Discover the benefits of cross-bracing or die. You have less than a minute to reinforce your base before the enemy blast-doors open and hell is unleashed.
Rush - Keep getting hit with swarm missiles before you've strapped on your helmet? Learn how to rush swarm missiles before the timer runs out in this training mission.
Don't see a mission relating to a common n00b shortcoming? Build your own! Yes, training missions can be built by the community and added via the Steam Workshop integration. Simply add 'Training = true' to your mission script. This will prevent it showing up anywhere else, so make sure to record the AI for it before doing this. Sadly, we cannot supply localisation for play made training missions, but do encourage volunteers and collaborators.
Cheating in Ranked
Recently we found evidence of three players cheating in 1v1 ranked multiplayer. These players have had their scores for this season reset, and if they manage to achieve a top 20 position they will be ineligible to receive a medal in either 1v1 or 2v2. The flaw allowing them to cheat has been fixed.
Our team is very small, so incidents like this take valuable time away from more exciting work such as new features and content. If you know of anything going on, please let us know.
Release 2019-12-19a Changelist
Add: Christmas theme Add: Multiplayer training missions (Anti-Air, Cross Bracing & Missile Rush) Add: \block_info command to track down symmetry errors Add: capture point mode technical winner determination for ranked disconnections Add: error logging for mod sound bank loading Add: warning sound and taskbar flash when lobby goes AFK
Improve: make 'Lock teams' apply before game as well as during (off by default) Improve: Load device and weapon sprites before configuration to allow re-use of sprites regardless of order, logging disabled
Optimise: remove DDS version of splash screen and updated PNG version to reduce load time Optimise: pre-allocate mDevices::mNodeEffects to eliminate the need for copying in Device::Clone Optimise: GetNodeCountSide and GetNodeAtIndexSide Optimise: CompositeSprite::AddNode reserves space in child lists to avoid reallocation Optimise: Link::UpdateCladBothSides doesn't need to recurse if test already passed
Fix: duplicate instances Forts are possible (now brings existing instance to foreground) Fix: crash when attempting to convert an invalid strut Fix: crash when observer cycles selected device by key Fix: crash when upgrade index is invalid due to duplicate device savenames Fix: data desync caused by permanent non-preloaded effects Fix: PhysicsManager::CapsulesIntersect returns an invalid position if the two midpoints are coincident Fix: duplicate devices and material SaveNames can be created, causing issues Fix: PhysicsManager::DrawLinkCladding accesses invalid third node Fix: overlap of replay compress thread and join compress state can cause a host crash when someone joins Fix: crash when interacting with background structures Fix: crash on joining when desync_detected refers to unknown client Fix: SetBlockFlags did not handle several flags (now shown in scripts/shapes.lua) Fix: weapons can flip when their platform participates in breaks Fix: ReceiveCreateNodeMessage can use an invalid position for LineSegIntersectsWithDevices Fix: desync when devices are placed on near vertical struts Fix: Workshop mods receive an invalid 'path' when changing sprites based on faction Fix: the cursor is visible while taking map screenshots in editor Fix: A Bridge Too Far missiles hit the ground Fix: dlc1_MP 12 3v3 (Crossfire) symmetry error Fix: anti-air AI sometimes leaves doors open when door is followed by solid strut Fix: custom mod sound banks can fail to load first time Fix: menu music starts at EWG logo rather than main menu Fix: scripts replay desync when restarting campaign mission
From all of us have a safe and fun holiday season. Thanks for playing Forts!
Cheers, EWG
Forts Ranked Multiplayer Season 2 Winners and Update 1.4
G’day, Forts fans!
Today we're bringing you news of the result of the second season of Forts Multiplayer and a new update with a bunch of fixes, features and balance changes.
Season 2 Winners
Season 2 of Forts Ranked Multiplayer has just finished and it's been another hard fought fight to the top, with millions of bullets fired, thousands of players experiencing the power of gravity, and, when it comes to nukes, more drunks than a bachelor party brewery tour!
And so to the winners. In the 1v1 arena we're happy to announce that CNFT_DuskDawn has improved on his eighth place finish in season 1 to claim the top spot. Congratulations! In the 2v2 world, CNFT_LZjun has finished at the summit, adding the 2v2 gold medal to the 1v1 version he claimed in season 1. Well done!
As before, these players will receive an in-game gold medal for their heroics, with the second and third placed players receiving silver and bronze medals respectively. On top of this, all players who finished in the top 20 will receive a medal to reflect that. The top 20 of each leaderboards are as follows:
1v1 Leaderboard
CNFT_DuskDawn
KnuffigesPuffi
CNFT_zhang502
信仰彼方的喵哟
CNFT_LZjun
CNFT_W11AWA
Moon_Red
魔魇大大
Trekjeft
Bowser
pudy248
CNFT_BlackBird
sgitkene
Aerocraft
Carrie
年糕糕糕
stupid noob
Da_Lao
趋光
0fred0m
2v2 Leaderboard
CNFT_LZjun
CNFT_zhang502
KnuffigesPuffi
Emile-wa
Fumishow
Vecro
二营长
Romerolagus
Trekjeft
浅黄色的里程碑
CNFT_HouCan
寒风
CNFT_东方延绪
一
bananamilk233
gostho29
Gutenews
pokekoper
ignis_pluvius
kayden en boaz
Season 3 and Random Maps
Along with the balance changes listed below, Season 3, which starts now and ends on January 31st, will feature random map selection. This is to ensure players don't just sit on a favoured map with a favoured build order, but have to adapt to the battlefield they are given. Hosts can still chose between regular encounters and capture mode via a checkbox. In addition to this, we have made a few other changes to further streamline the ranked experience. Check out the changelist below to find out more.
Update 1.4
We're bringing a whole host of new features, balance updates and bug fixes to Forts, including cloud saves for campaign progress and settings, fullscreen HUD, and map filters.
For modders a universe of possibility has been opened up with fully featured scripting support. Just add script.lua to the root of your mod, add dofile("scripts/forts.lua") to the top and then treat it much like a mission script. Tutorials will be coming, but for now we have removed compilation on maps/03-weapons/03-weapons.lua, maps/02-resources/02-resources.lua and ai/ai.lua to provide some samples. We're also working on documentation of the scripting API. Alexc96161 has generously written a starter guide. Just remember to keep all of your state in the 'data' table, or you will cause errors and desyncs.
On top of this, weapons can now have multiple prerequisite combinations, multiple upgrades with customised context buttons, and material conversion buttons can be added to the context menu. ReloadTime has been simplified, just set ReloadTimeIncludesBurst = false and you'll find weapons easier to balance.
To help manage the increasing complexity of mods, we've added support for source control within mod folders. Basically, the game will filter out anything it doesn't recognise when updating, including any .svn or .git folders. These will not make it into the Workshop item, keeping size down for players.
There's much more in this update that can't easily be summarised, so please trawl through the changelist and see how much love we put into this update.
release 2019-12-01a changelist
Add: randomised map selection in ranked, selecting 1v1 or 2v2 maps depending on leaderboard, with button to select capture maps Add: Steam Cloud support for campaigns and settings Add: transition to steam id user paths to support cloud saves Add: map list filtering Add: expanded HUD for Material, Device, Weapon, Terrain and Prop selection --- Hold "Q" to display (can be switched to toggle in Options -> Game) Add: fully featured dynamic scripting for mods (script.lua from base folder of mod) Add: support for using source control in mod folders Add: support for multiple upgrades with customisable context buttons Add: support for multiple prerequisite combos for devices and materials --- e.g. Prerequisite = {{ "a", "b", "c" }, { "d", "e" }, { "f" }}, --- Upgrades can have Prerequisite independent of the base device --- An empty upgrade prerequisite means nothing required, even if base weapon has a requirement Add: support for secondary (barrel) structures allocated to players and AI in TDM Add: SecondaryForts mission script table to associate primary forts with secondary forts by IdPos Add: SecondaryForts.AllocateRemaining to decide what to do with unallocated secondary forts Add: validate select game files on startup, flag Steam to verify and restart Add: script checksum system Add: support for ground weapons without a forced angle Add: alternative destroy effect when expiring (defaults to destroy effect) Add: Scale variable to CompositeSprite node Add: open medal links in the Steam overlay if available Add: an alias for shortened field identifiers (e.g. FI_D -> FIELD_DISRUPT) Add: RAY_HIT_FIELD enum to CastRayFromDevice results Add: draw anchor positions & directions and outlines of all composite sprite nodes in editor for selected device Add: Additive variable to CompositeSprite node Add: data desync logging for prerequisite and upgrade differences Add: show repair area effects during replays Add: logging during World construction to narrow down silent crashes Add: SplashForceIsGravity flag to specify projectile splash force is gravity Add: 'Log' function support for building_materials.lua and projectile_list.lua Add: console error logging to mod.lua and script.lua loading Add: customisable material conversion buttons, defaulting to DefaultConversions when Conversions is missing Add: MergeLists Lua function to easily extend DefaultConversions for a material Add: portal warmup times to context menu buttons Add: weapon_pack_skirmish to balance weapon_pack outside of the Moonshot campaign Add: material SplashMultiplier parameter to adjust general vulnerability to splash damage Add: DoorSpeedClose so doors can close at a different speed to opening Add: include uihelper.lua in sprites.lua for convenient modding Add: GetTeamCount and GetTeamId functions to enumerate teams Add: TEAM_ANY value to forts.lua Add: script functions to change block texture Add: toSelf parameter to SendScriptEvent so it can target its own mod scripts Add: AddResources script function to spend or gain resources Add: OnShowResult script notification to allow boss missions to disable the pause menu Add: show device bounds when in debug mode, without circles Add: red icon for Phantom device move Add: allow one more game with a player in 2v2 before being match limited Add: new Workshop tag "Capture" Add: SetDoorState script function for instant door manipulation Add: a frame rate counter to the main menu for testing UI performance (enabled by UI.MainMenuFPS) Add: ReloadTimeIncludesBurst flag to weapon scripts (defaults to true) to maintain mod balance
Improve: move field identifiers to projectile_list.lua Improve: change FIELD_BLOCK_ANTIAIR to FIELD_BLOCK_FIRING (doesn't apply just to anti-air) Improve: replace use of cos/sin/FastCos/FastSin with cosf/sinf for performance/accuracy Improve: moved AddPrerequisite from DeviceManager to World for use by materials Improve: move portal controls into the first row of the context menu for consistency with doors Improve: HUD-Buttons-Blank*.tga context buttons for use as mod upgrade & conversion button template Improve: make link and node debug text more readable but translucent to see what's under Improve: split settings.lua into settings.lua (cloud compatible) and settings_hardware.lua (local hardware config) Improve: replace upgrade display name search with SaveName search in EnableDeviceUpgradeOfType script function Improve: reorder Add*Control functions to appear next to each other in documentation
Balance: increase range of mortars to be viable on long range maps (MaxFireSpeed +30%) Balance: increase reload period of warheads by 4s to 25s (+19%) Balance: increase shootdown radius of warhead from 10 to 14 (+40%) Balance: increase charge period +10% and reduce active period of Overdrive -30% (~36% reduction overall) Balance: shotgun sprays projectiles evenly Balance: increase hitpoints of shotgun to withstand one sniper shot Balance: increase hitpoints of smoke grenade to withstand one sniper shot Balance: smokebomb projectiles can't be shot down Balance: shields immune to 20mm splash damage Balance: portal receives only 25% of normal splash damage to make return to senders more viable Balance: increase repair station radius from 200 to 270 (+35%) Balance: reduce repair station energy upkeep from 16 to 10 (-37.5%) Balance: increase firebeam firing cost from 1500 to 2000 (+33%) Balance: increase firebeam reload period from 14 to 17s (+21%) Balance: reduce protruding door caps when fully open by half Balance: increase open speed of doors from 50 to 70 to combat warheads at close range Balance: tightened up human assist anti-air AI to react faster to threats --- AntiAirPeriod reduced from 0.4 to 0.3 --- AntiAirMinTimeToImpact reduced from 1.8 to 1.5 --- AntiAirReactionTimeMin reduced from 0.375 to 0.2 --- AntiAirReactionTimeMax reduced from 1 to 0.8 Balance: reduce phantom move time from normal deconstruction of the device time to 3s --- Can be modified with the DefaultMovePeriod rule --- Can be overridden using the MovePeriod variable in device_list.lua or weapon_list.lua Balance: reduce Phantom dummy weapon metal cost from 30 to 20 (-33%)
Optimise: replace RotateAboutAxis in SparkSet::EmitSparkAtIndex with GenerateRotationMatrix/RotateVec Optimise: PhysicsManager::GetLinkCount counts primary links, rather than using visited flags Optimise: Control::EvaluateLayoutScript avoids double recursion if current control has no scripted layout Optimise: HUDItems::Initialise prevents re-evaluation of HUD item layout during runtime Optimise: reduced size of file cache lookup key for workshop maps (stripped off local path prefix)
Fix: beams can collide with the same field or projectile more than once Fix: beam segments drawn to field graphical position are incorrectly drawn when the beam survives Fix: projectile types can collide that wouldn't normally when fired from different weapons Fix: non-DisruptionBlocksFire Anti-air weapons are blocked Fix: AI can shoot DisruptionBlocksFire weapons offensively through a blocking field Fix: use of FastCos and FastSin adds error to sprite anchors and aiming gizmo Fix: CompositeSprite nodes are drawn with invalid dimensions if frame image isn't found Fix: munitions plant has an incorrectly set Scale value in its sprite Fix: upgrade centre has a gap in the sprite Fix: DeviceExists doesn't check for fully built, disabled or dummy (check existing usage) Fix: potential crash when reading excessively long upgrade SaveNames Fix: upgrade params are not included in device checksum Fix: basic mesh projectile sprites don't have their Scale and Additive values set Fix: background terrain surfaces are drawn in foreground in the map editor Fix: struts on fire can be converted to other materials Fix: fire can spread to bracing while being replaced Fix: team extents not updated correctly when converting or mirroring a fort Fix: device positions are not updated during structure mirror, affecting structure extents Fix: weapon angles are not updated during structure mirror, causing aiming at strange angles Fix: interleaving dynamic ground blocks (e.g. energy field) can corrupt edge sprite rendering Fix: ambient.lua effect desync after player uses \set_background in map editor (loaded permanently instead of temporarily) Fix: maps that don't set a FortGroup table are limited to 4 AI forts on each side Fix: World::AllocateFortsToAI unnecessarily loops through all structure states Fix: rope peg isn't included in cost of building a new rope to the ground Fix: artificial increase to default FortGroups causes map flag caching to slow Fix: device facing is mirrored with structure in map editor Fix: desync when placing device on a perfectly vertical strut Fix: shockwave 'construct' effect misplaced for sloping devices Fix: desync when firing structure weapons with fixed angle Fix: Weapon::AimWeapon has obsolete, incorrect and inefficient behavior Fix: default Russian keyboard layout is JCUKEN which is less clear than QWERTY Fix: desync when standin links connect to a bouncing node Fix: weapon RoundsPerBurst, ReloadTime and RoundPeriod can be zero or negative Fix: portal orientation desync: aiming depends on prior aim of weapon Fix: auto portal orientation weapon aiming fails when weapons are in auto fire/reloading Fix: effects within environment mods cause replays to desync Fix: desync when connecting to a single floating node (e.g. in zero gravity) Fix: incorrect structure breaks when connecting to isolated nodes Fix: crash when alt-tabbing during shell initialisation Fix: "rank" string in Chinese Fix: math.random can be used to produce non-deterministic numbers Fix: allow use of math.random in effects scripts only Fix: blank mod is activated for built-in environments Fix: memfile leak in ReadEnvironmentName when terrain file is the wrong version Fix: the failure to load some textures goes without error message Fix: ReadProjectileEffectMap crashes if non-string table keys are present Fix: secondary projectiles can never collide Fix: corrupt base2.pack can cause memory allocation crash Fix: projectiles with IgnitesBackgroundMaterials = true pass through materials with a certain configuration Fix: Splash defaults to true for Deflect effects Fix: crash when spawning a secondary projectile that doesn't exit Fix: Shockenaugh's explosive barrel can overlap devices Fix: shockenaugh explosive barrel uses battery detail panel Fix: base of cannon has factory colours during construction in some circumstances Fix: commander Buster error messages for impact_howizter and impact_howizter_big sprites when dlc1_weapons is off Fix: crash in HUD::AddToContextMenu2 if row exceeds the maximum Fix: SetDamageMultiplierSpecific sets AntiAir multiplier only, instead of type parameter passed Fix: cannon detail panel not updated with munitions colours in weapon_pack Fix: crash when switching team in editor without a selection Fix: door caps can be drawn beyond the link when fully open Fix: AI can build devices up-side down (AttachDevice accidentally using direct attachment) Fix: weapons facing backwards when seeking in replays Fix: OnKey can cause Lua exceptions during cutscenes when advance button is mashed Fix: on start up game doesn't load when not in focus Fix: SetControlText doesn't use parent to disambiguate the requested control Fix: GetChildName does no bounds checking Fix: GetDeviceType returns NULL, potentially causing exceptions or crashes Fix: MapOriginalNode logs nodeTeam when node doesn't exist Fix: game switches to terrain edit mode in CreateBlock Fix: teamChecksum[0] was not cleared after structure checksums Fix: repair breaks weapon reload animations Fix: devices can protrude slightly and suffer projectile impacts Fix: pause menu shows in final Black Gold mission victory cinematic, UI can become unresponsive Fix: F1 or ESC on final victory banner causes the video cutscene to be missed, and can lock controls Fix: crash when right clicking on terrain with a unknown texture or edge type Fix: crash when opening maps with the indo environment Fix: AI keeping doors open, blocked by door cap but opens door any way Fix: door cap collision in DeviceManager::FireWeapon and Weapon::OpenDoorsInFrontOf ignores modification Fix: generated file caches break if no language is set up (i.e. release builds) Fix: gData.UseEnglishMapNames inconsistencies (used in FileSelect::GetMapDisplayName, but not used in some other cached places) Fix: Mod Moonshot icon issue wrt a circular status check when refreshing items Fix: updated workshop items can have versioning issues if the itemversion.lua script is modified or rolled back Fix: Prevent F2 re-opening HUD if force closed by GameOver or script call Fix: Prevent mousing over bottom of screen re-opening HUD if force closed by GameOver or script call
Remove: dynamic screen files from old system Remove: compiling of tutorial mission scripts so they can be used as scripting references Remove: obsolete upgradeDisplayName in UpgradeParams Remove: obsolete BeamImpactProjectile on magnabeam Remove: isolated nodes after fire burns out the last strut Remove: obsolete clouds layer and texture from desert environment Remove: map selection, AI control and game mode control from ranked lobbies Remove: host configuration grace period, to prevent "shopping" for favourable maps Remove: compilation of ai.lua, 03-weapons.lua, and 02-resources.lua for use as scripting examples Remove: dummy sandbags for Phantom Remove: AI deliberately keeping doors open between shots (looks buggy)
Thanks for playing Forts.
Cheers, EWG
Happy Hallowe'en!
Hallowe'en is now the season, When things turn sinister, And defy all reason.
Upon Forts does a pall descend, Bringing a spooky landscape And a haunted front end!
EWG goblins spent all their time On art, music and code, And very little on rhyme!
Haunted Main Menu
Cursed Landscape
Wishing you a happy Hallowe'en, EWG
Forts Ranked Multiplayer Season 1 Winners
G’day, Forts fans!
Today sees the culmination of the first season of Forts ranked multiplayer. After thousands of battles, we have our champions of the 1v1 and 2v2 leaderboards. Congratulations to CNFT_ LZjun topping the 1v1 leaderboard after eighty eight. In the 2v2 arena, KnuffigesPuffi claimed the top spot. Well done!
These players will receive an in-game gold medal for their heroics, with the second and third placed players receiving silver and bronze medals respectively. On top of this, all players who finished in the top 20 will receive a medal to reflect that. The top 20 of each leaderboards are as follows:
1v1 Leaderboard
CNFT_LZjun
2784724182速出加农
KnuffigesPuffi
CNFT_zhang502
CNFT_BlackBird
pudy248
QASAklim_
CNFT_DuskDawn
魔魇大大
Romerolagus
Kamen Rider Ab
喵呜~~~
EreXiuM
Zi_Min
Jorge-Stoom
tony
Kamsta99
Bowser
Trekjeft
0fred0m
2v2 Leaderboard
KnuffigesPuffi
Emile-wa
Grizz (Commend Meツ)
JKS
Gluflex
Romerolagus
QASAklim_
АРБУЗ
2727342737
1075115010
Баклажан
18302030633
slibarmann
枫叶丶柚子茶
DJ_lazysheep
Monika_Chan
oDa_
CNFT_zhang502
Red_Lhok
BSKDragon
Season 2
In a bid to increase competitiveness on the leaderboards, we are reducing the duration of seasons to two months. Therefore, Season 2 will finish on November 30th. The leaderboards have been reset, the season starts now! To the battlefield!
Thanks for playing Forts.
Cheers, EWG
Forts/Moonshot Update 1.3
G'day forts fans! We're back with another update for you, concerning some fixes and optimisations, and the introduction of in-game medals in preparation for the end of Forts Ranked Multiplayer Season 1 on September 30th.
This update also features some changes and additions for mod makers:
Projectiles now have a 'DeviceDamageBonus' variable which works just like WeaponDamageBonus.
The projectile DamageMultiplier table can now have "structure", "device", "weapon" and "projectile" entries that provide a catch-all for those categories, if no specific SaveName matches what is hit.
The projectile Effect system has been extended with the addition of the 'Chain' variable, which contains a list of additional effects to execute. These do not apply additional damage but can spawn visual effects and new projectiles.
Projectiles now have 'EnemyCanTeleport' variable which is an alias for 'PassesEnemyPortals', but does not trigger Moonshot dependency for the mod.
Projectile vs projectile collision damage multiplier has been moved from the receiver using Direct, to the giver using AntiAir. This makes it consistent with other damage multiplier types, and allows damage to projectiles having the same name as their weapon to be differentiated.
Commander descriptions can be modified in-game using paths such as mods\\language-English\\mods\\commander-bpo-scattershot\\strings.lua.
See the sniper projectile in the base files for samples of DeviceDamageBonus and categorised damage multipliers. Further documentation will be coming.
Medals
Introducing the new Forts medals system. Upon the completion of the current ranked season, players placing in the top three of the 1v1 and 2v2 leader boards will be awarded medals to signify this achievement. Additional medals will be awarded for anyone else who placed in the top 20. A star on the corner of the medal indicates that older medals have been hidden. Simply click on the medals to see the full history. Medals will also be granted to Forts content creators and modders/map makers who meet the minimum criteria, with those owning Moonshot DLC getting a further medal with immediate effect. A developer medal will also be awarded to the developers. It's our game, so why not? :P
1st Place - Season 1 - 1v1
1st Place - Season 1 - 2v2
2nd Place - Season 1 - 1v1
2nd Place - Season 1 - 2v2
3rd Place - Season 1 - 1v1
3rd Place - Season 1 - 2v2
Top 20 - Season 1 - 1v1
Top 20 - Season 1 - 2v2
Current Tournament Champion
Workshop
Content Creator
Developer
These medals will appear next to the player's name, as shown, with visibility being specified in the game options screen (hide rank in lobbies) to avoid high ranked players getting kicked by fearful server hosts. Hovering over the medals pops out larger versions of the medal that can be clicked on to take the player to a specific destination, as described below.
Additionally, we have implemented a Trophy Cabinet section to the Ranked Match screen, for players to get an over view of their medals and bask in the glory of their haul in hi-res. This screen will also show placings from previous seasons.
Content creators with at least 100 subscribers can apply for a medal by emailing us at info@earthworkgames.com (from the email address listed on your channel for verification purposes) with links to three videos featuring Forts for at least ten minutes each. Also include a link to your Steam profile to allow the game to identify you.
Applications for the Workshop medal are handled via this form. To qualify, you must have at least one Steam Workshop item with at least 1000 subscribers.
Changelist release 2019-08-30a
Add: medals for devs, moonshot owners, streamers, modders, and ranked and tournament winners with popup links Add: Trophy Cabinet to show ranked season and tournament medals Add: Season results with links to previous leaderboards and medals earned Add: AgeEffectsOnExpiry to ProjectileParams to prevent spawning of projectiles Add: Chain to CollisionActionParams for secondary impact effects to projectile collisions Add: support for additive highlighting of Button controls Add: DeviceDamageBonus to projectiles Add: WeaponDamageBonus and DeviceDamageBonus can be negative Add: SetDamageMultiplier and SetDamageMultiplierSpecific convenience functions to projectile_list.lua Add: DamageMultiplier categories for structure, device, weapon and projectile Add: "Retrieving Workshop Items" notice at top of map/mod select screens if waiting on initial workshop initialisation
Optimise: loading of file selection screens (maps, mods, replays) Optimise: Workshop maps/mods are no longer parsed for ranked matches
Fix: DamageMultiplier between projectiles are broken (moved multiplier from damage receiver to giver, and from Direct to AntiAir) Fix: ConvertStructure goes beyond no-conductive struts, preventing correct set up of team forts connected to neutral structures Fix: invalid upgrades are accepted without error, and cause crashes Fix: mods can cause devices to be inconsistent between Team1/Team2 and Passive/Active without warning Fix: ground animations are not loaded from environment Fix: actions can spawn new projectiles with no life span, allowing infinite loops Fix: howitzer projectiles don't collide if they start within range Fix: howitzer projectiles don't collide if they are trapped in a portal loop Fix: crash when a client disconnects during a ranked game Fix: crashes calling load callbacks when OnP2PSessionConnectFail is called during loading Fix: handling of excessive ping doesn't score ranked matches Fix: internal disconnecting client status gets spammed when receive timer times out Fix: extrusion fails and can crash if a full extrusion material doesn't have a recession target Fix: commander specific fmod events are not reliably loaded Fix: leaderboard names can overlap right most columns Fix: 'Unranked' text in RankedMatchScreen can overlap first column Fix: damage to background structures creates inaccurate damage stats Fix: invalid forces can be applied to structures when a weapon is blocked by an unowned device Fix: ray damage isn't applied when a device is hit Fix: remove defunct 'left click deselect weapon' option Fix: rotate up/down by key allows weapons to aim and shoot outside normal range Fix: ground edge sprites sometimes appear large and corrupted Fix: materials with negative mass cause projectiles to slow down too much, sometimes producing infinite collision loops Fix: mMaxSparks can be zero or negative Fix: mSparksPerBurst can exceed mMaxSparks Fix: forfeit message doesn't arrive when force quit in ranked Fix: when other team forfeits ranked winner can be decided by damage Fix: if host times out player doesn't score self in ranked Fix: incendiary mortars don't clear smoke Fix: dedicated host setting can be used in ranked games Fix: Workshop maps could appear in player tab of ranked map select Fix: dlc1_MP0 incorrectly marked for "FromScratch" map select tab Fix: "AllowEdit = false" maps were not being displayed for copy in map edit select (now greyed out for edit mode) Fix: item list index was used to track current selection when going back to map select, and can get out of sync if still downloading items Fix: Chatroom Subscribe messages could incorrectly pick a local display name in certain circumstances Fix: MultiplayerUnlocked settings flag now also checks against steam multiplayer stats
Remove: error message when forcing default recession target for materials Remove: turn stiffness limit error into a warning to avoid dropping console
Thanks for playing Forts!
Cheers, EWG
Team YouTube win FORTS Tournament XV!
G'day FORTS fans!
Huge congrats to the winners of FORTS Tournament XV - Team YouTube! felixwoelmuis and CronkhinatorYT (Germany) showed impressive skill and consistency to defeat runners up Gluffi Puffi (Switzerland) and Composite Rushes Engineers (France), who also showed impressive tactics.
Adding to the international flavour of the tournament, this was the first time there has been a large Chinese contingent of players. Recently dominating the leaderboards, it was awesome to see their strategies.
On the streaming front we had the sultry Project Incursus (USA) and vibrant Frazzz (Scotland) commentating with guest devs Nozehed (Australia) and Blammo (Argentina).
Another big thanks also goes to 42 Scientist from the French [FR/Official] FORTS Communauté Véritable discord channel for organising all of the teams, players, and tournament ladder.
Replays from all Tournament XV matches are now available in FORTS in the replay selection screen under the 'Featured' tab. Just hit the download button to get them.
Here is the current FORTS Hall of Fame:
What happens after tournament 15? Stay tuned and find out :)
Thanks again to everyone involved and have fun playing FORTS!
EWG
Forts Tournament XV
G'day Forts Fans!
Now that Moonshot has been out for over a month, we thought it high time to announce a new tournament, and see what new strats players have come up with.
This will be a 2v2 TDM tournament. It is being organised by the awesome [FR/Official] FORTS Communauté Véritable, and is open to everyone and all languages. As a new twist, the battle maps will be chosen by audience vote during the live stream. You can vote here.
The tournament stream will be hosted by the ever strategic Project Incursus and the effervescent Frazzz. With special guests Blammo and Nozehed, both of which are are on the FORTS development team.
In order to participate, you must do the following...
note: Earthwork Games reserves the right to make changes to this event as needed
Forts/Moonshot Update 1.2
G'day Forts fans! We hope you've been enjoying the game and getting amongst it for the first Forts ranked season. Having had a couple weeks rest after the intensity of the Moonshot launch, Beeman is back with some fixes and optimisations for you all. The map editor has received a few additions and tweaks, and Phantom gets a nice buff. Read on to find out more.
Changelist release 2019-07-25b
Add: capture point maps made symmetrical so they are available in ranked Add: \set ground_snap 0 to disable ground snap in map editor Add: \set block_details 0 to hide block text in map editor Add: \set block_bounds 0 to hide block bounds in map editor Add: draw selected block outlines and normals on top of any other blocks and extents for clarity Add: Editor.Zoom.Min/Max in constants.lua to adjust zoom depth in map editor only Add: increase mSortedEffects reserve from 1000 to 2000 to handle common peak
Balance: increase max link length of portal by 5 Balance: (Phantom) Cloaked weapons stay cloaked with damage, only become visible when destroyed Balance: (Phantom) Can move devices as well as weapons. Excludes devices that cannot be scrapped (e.g. Reactor and Derricks) Balance: (Phantom) Can place dummy devices Balance: (Phantom) Dummies ignore tech and population cap requirements Balance: (Phantom) Dummy devices/weapons do not apply splash damage, etc when destroyed, affect resource production or generate repair fields Balance: (fast-build) decrease portal warmup time to 1s
Optimise: don't draw node extents, edges, normals, handles, or details for blocks off screen Optimise: only ResolveMaterialTargets and CompactMaterialRenderOrder once for each material state Optimise: Store reserves the maximum number of nodes to fill a minimum block allocation to avoid frequent reallocation
Fix: lobby chat history is unlimited, causing memory allocation and performance issues Fix: if a client times out the host can cause every other client to desync by not queuing the disconnection message Fix: Effects with invalid coordinates are accepted, causing memory corruption and crashes Fix: reflected nodes can have their graphical position invalidated Fix: crash in Weapon::Update and Weapon::DeserialiseSimpleData when projectile blueprint is NULL Fix: extrusion can be broken after clients rejoin due to duplicate standin node ids Fix: mod crash in ReceiveUpgradeDeviceMessage -> DeviceManager::DeviceSatisfiesPrerequisites when deviceBlueprint is NULL Fix: mod crash in DeviceEditor::Update when blueprint is NULL Fix: modders may change commander active material parameters that should be static Fix: free particles with invalid position or indices can be added and drawn Fix: weapons without a valid mProjectileBlueprint can attempt fire, beam weapons lock up Fix: crash in Device::SetResourceAccount when device type is invalid Fix: long Lua errors crash the game Fix: when trying to connect to an incompatible version, the message telling the client this is ignored Fix: in CommandInterpreter::HandleClientStatus, disconnected client is prematurely set to invalid, causing a warning message during correct handling Fix: replays data desync when playing back games where Moonshot was disabled Fix: Moonshot HUD is shown to non-owners outside of multiplayer Moonshot games Fix: map editor colours are cluttered Fix: host can spam Start in ranked to bypass the game limit test Fix: when rejoining paused TDM simultaneously players can be given a co-op team and so have nothing to control Fix: team 2 buster fires 20mm shells into team 1 shield, which hits a structure, you get a console error Fix: 20mm particle accelerator crashes game (reduced load on effect system) Fix: mPingReplies recording causing potential memory corruption or crash Fix: start button can be spammed, sending network messages rapidly Fix: (Black Gold) doesn't mark cutscene missions (first two motherload) as complete when proceeding Fix: (Phantom) Dummy devices/weapons apply splash damage, etc when destroyed, affect resource production and generate repair fields Fix: (Moonshot) weapons unlocked when restarting a campaign mission Fix: (Moonshot) it's possible to connect through the top door in Missile Command
Remove: don't draw bounding boxes and circles for unselected blocks Remove: file access operations in ReadImageFile and TextureManager::ReadTexture for speed and lower chance of crash Remove: Siberia: Eastern Block from multiplayer map selection
Thanks for playing Forts!
Cheers, EWG
Forts Moonshot Update 1.1 & Tournament Links
G'day, Forts fans! It's been a couple of weeks since the launch of the new Moonshot DLC, and we couldn't be happier with the response it has received. So great to see so many servers with the blue Moonshot icon. Since launch, we've been busy listening to and responding to your feedback, the results of which are contained in this update.
Moonshot Invitational Tournament
Recently, we saw Moonshot get a thorough play through by some of Forts' experienced players in the Moonshot Invitational Tournament. The new features and weapons were deployed over the course of some 1v1 regular battles, 1v1 & 2v2 Capture Point matches, and rounded off with a 4v4 maelstrom including the hosts Frazz and Incursus. Check it out on one of these links!
We've added a capture point template map for those wanting to create maps for the new game mode. The map can be found under the name 'dlc1_MP0(Template - CP mode)' in the editor. We have also put together a guide to help you get started.
Add: option to hide rank in lobby Add: Include capture point template (dlc1_MP0) Add: season number and its dates to Ranked menu Add: convert neutral portal structures to background throughout Moonshot campaign to avoid splash and emp issues Add: increase max free particles from 1000 to 2000 Add: make brake power consumption proportional to strength Add: BrakeLevels shifted +1 to be easier to understand (0 -> stop dead, 1 -> disabled) Add: no-build block flag (Alt + C) for derrick areas Add: no build flag to blocks to all derricks in capture maps Add: portal destruction effect set to new effect adapted from shield destroy Add: RequiresMoonshot set automatically when making a new map Add: new RequiresVanilla flag that disables a mod when Moonshot is enabled
Balance: no fires lit and no solid damage if beam is moving fast Balance: increase Magnabeam reload period from 14s to 28s Balance: increase Buster charge time by ~30%
Optimise: convert meffect_list from a list to a vector to save making many small memory allocations Optimise: reserve space for 1000 sorted effects
Fix: some systems can run out of memory due to integrated display drivers using application memory (double virtual memory available to 4GB) Fix: crash when a projectile action spawns a new mesh projectile with none available Fix: mesh projectiles can run out, temporarily preventing the spawning of new ones Fix: crash when Armourdillo commander is used with Extra Stuff++ mod Fix: crash in ClientManager::Update during replay when a mod change causes ClientData::mSelectedDeviceIndex to go out of range Fix: another instance where out of range ClientData::mSelectedDeviceIndex can cause a crash Fix: crash with invalid edge indices Fix: copying ground blocks with custom envs textures & surfaces are lost and auto environmental effects are added incorrectly Fix: field auto env effects in custom env are not created Fix: when converting to another environment surface indices can become invalid or change into common surfaces Fix: Ctrl + Delete crashes editor if environmental effect props are associated with any of them Fix: after creating a new block with blank edges, it's hard to change the edges of the whole block Fix: EMP and swarm missile projectiles collide with background portals Fix: EffectsManager gets a large delta at the end of loading while World zeros it, causing many effects to expire Fix: environmental effects don't have their lifespans extended, causing them to periodically expire Fix: environmental effects expire if time is sped up Fix: effect script and missile trail filename exceeding buffer limits can be used without warning Fix: crash drawing rare invalid effects Fix: debugging sprite on smoke projectile remains Fix: smokebomb projectile sprite is missing Fix: portals can be linked while/after changing materials Fix: replacing materials doesn't instantly unlink portals or cancel warmup Fix: Store::Load accessing NULL file that should exist (blocked by antivirus?) Fix: portals can only be used once per frame per projectile/beam Fix: new tech building descriptions not showing - device strings.lua files not commited to repository Fix: It's possible to extrude rope from disabled materials (e.g. backbarrier) Fix: mExtrudeMaterialIndex is invalid if Extrusion.DefaultMaterial is not found Fix: You can build devices over new bracing that's been replaced with armour Fix: Spy enemy resource panel is out of sync with the rest of the HUD Fix: In 'Head in the Sand' and 'Fire in the Hole' if you upgrade mines they won't count towards the objective Fix: missiles can be previewed upside down on 'Sever & Seize' Fix: derricks in capture maps can be destroyed using portals Fix: neutral portals are vulnerable to splash and emp, and behaviour is buggy when disabled by emp Fix: weapon refire can be stuck repeatedly trying to fire against the edge of a door Fix: in Mission 114 AI can't build foundations on the fissure between the ground and safe zone Fix: can't build to a backbarrier foundation on Close Quarters Fix: free particles are not cleaned up in CampaignScreen::ExitCampaign Fix: Barrier material not invulnerable Fix: incendiary projectiles fail to collide with ground when passing a non-flammable strut in the same frame Fix: 'A Bridge Too Far' objective Don't attach to floating islands granted incorrectly Fix: portals are enabled in height challenge Fix: brake context button has a placeholder texture Fix: negative and zero brake levels broken Fix: sparks keyframes can be empty, and no warning is shown Fix: Russian 'Unranked' translation overlaps rank category buttons Fix: incorrect initial hitpoints at times, causing desync when repairs are attempted Fix: extruding a shield over a ground device fails and leaves behind a standin-foundation, preventing further construction Fix: ground devices can be placed below ground at the back in 'Lock Pick' Fix: brake context menu doesn't show current state for 10% Fix: Fmod falls back on nosound to allow players to play multiplayer when init fails Fix: Desync when restoring some portals from keyframes Fix: can't hit background devices in some situations Fix: "Log into Steam and go online to use this feature" is overlapped with player and map columns Fix: Background team blocks auto-orientation Fix: crash when Moonshine extrudes portal over weapon Fix: extrusion looks up active materials Fix: when extruding a short portal preview works but construction fails (now substitutes bracing) Fix: when extruding a long portal it fails without preview (now substitutes bracing) Fix: extrusion fails if current selected material is too long (use support material instead) Fix: attempt to link nodes to self when extruding large portal box Fix: very short portal extrusions are possible and don't have previews Fix: extrusions so short that the cross brace fail are common (increased minimum offset from 30 to 40) Fix: weapon bounding box is not lifted at the base to allow placement near armour below, or retrofitting Fix: big explosion missing when howitzer collides with a shield Fix: flamingbuzzsaw is missing RayDamage Fix: standard forts are out of date Fix: crash when old chat lines with workshop icons are culled (unlimited history again) Fix: crash when updating refire on weapon with no resource account Fix: crash when showing very large production and capacity values for device tags
Remove: AlienFX lighting turned off by default to avoid crashes (now opt in) Remove: 'avoiding writing keyframe due to paint required' console spam Remove: extended block details for unselected terrain Remove: near zero factor brakes Remove: brakes reducing speed below BrakeMinSpeed threshold
Thanks for playing Forts!
Cheers, EWG
Forts Ranked Season 1
G'day Forts fans! Now that the Moonshot DLC has been out for a while, we'd like to announce the introduction of Forts seasons for the ranked matches and leaderboard. Our intention with this to give the ranked scene some momentum and context, and do away with the stagnation an endless 'season' has created.
How it works
The leaderboards have been reset.
Starting today, July 1st 2019, seasons will run for three months.
At the end of each season, the first second and third placed players will be awarded medals in the form of in-game icons placed next to their name in the leaderboard.
Icons will be Gold, Silver and Bronze, and will have a number denoting the season in which the medal was earned.
Visibility of these icons in lobbies can be turned on and off, so as to avoid being kicked for being 'too good'.
We'd like to take this opportunity to say well done to the top placed players as of the old leaderboards, who are as follows:
Ranked 1v1
samsam
QASAklim_
The Mouther 'Fudger'
Ranked 2v2
42 scientist
trekjeft
CronkhinatorYT
Looking forward to seeing some high level play, and who will be the champions of season 1! Leaderboards being reset in 3... 2... 1...