Today, we're releasing the Ares update! In many ways, Ares is a big complementary companion to the Apollo (0.26) update. Released in August, Apollo introduced the first wave of PVP-centric assets, balancing, and features. Now, Ares update, our fifth major update so far this year, named after the Greek god of war, is packed with new things, improvements, and fixes regarding PvP and even more! Here's the changelog to keep you busy during maintenance time:
Explicit docking and boarding system (previously called “parenting”)
Avatars must now have the "Right to board" dynamic constructs. Similarly, any dynamic construct is now able to dock to any other dynamic construct of strictly smaller size if the pilot has the necessary "Right to dock" permission.
Owners can use the Rights and Duties Management System (RDMS) to assign a right to board or a right to dock to their constructions that will allow others to board or dock or to prohibit such requests.
When a ship or a player is docked or boarded, it moves with the "parent" construct, and its mass is then added to the physics of the parent.
The constructs now have two zones, a "red" zone corresponding to the bounding box of the construct, and a "blue" zone corresponding to the surrounding zone of the ship; the size of this zone depends on the size of the core of the potential parent construct, from 32m to 128m.
In order to board or dock, a player or a ship will have to be close to the candidate construct, in the blue zone, and have the appropriate rights, else the player or the ship will be repulsed.
For the previous things added to the docking and boarding system, you can read the Boarding and Docking devblog.
Updated two construct rights: “Right to board” and “Right to dock” (formerly “Parent Construct”).
Docked constructs and boarded players (including offline players) and their mass are now listed in the Build Helper. Offline players can be ejected from that window.
Docking status of a construct and nearby constructs are displayed in the docking widget. Boarding status of a player is displayed in the player UI at the top right of the screen next to the mini-map.
Widget is triggered by Lua (as usual). Players can auto configure their ships to get the widget or add in the start event of the lua unit slot :
parentingPanelId = system.createWidgetPanel("Docking")
parentingWidgetId = system.createWidget(parentingPanelId,"parenting")
The owner of a construct can maneuver all other docked constructs even if they don't have the right to those constructs. They can also choose to undock them once they are outside of the parent construct either by right-clicking on it or from the Build Helper. To be more specific, you can be "docked" to a construct while not being inside the construct but simply "near" the construct. You can not forcibly undock a construct that is inside of your construct. But if a construct is still docked to your construct while being "near" your construct, you can forcibly undock it.
Using the Maneuver Tool to dock a construct displays the nearest construct you can dock to. You can use ALT+T to dock the construct.
As a pilot, there are three different docking modes:
MANUAL: You have to manually dock your construct.
PROXIMITY: If the construct is not docked but in the bounding box of the parent candidate construct, it automatically docks if able.
OWNER: As proximity, but only when the construct owners of both the parent candidate and the piloted construct are the same.
You can switch the docking mode by using the docking widget.
Constructs that are not docked to another construct are physically repulsed when trying to enter it.
All players can board (walk on) inactive (unpiloted) constructs. Players without the boarding right are ejected when the construct becomes active.
Added Lua functions and event on core unit API:
getPlayersOnBoard(): Returns the list of player IDs on board the construct.
getDockedConstructs(): Returns the list of IDs of constructs docked to the construct.
isPlayerBoarded(pid): Returns 1 if the given player is boarded to the construct.
isConstructDocked(cid): Returns 1 if the given construct is docked to the construct.
forceDeboard(pid): Sends a request to the server to attempt to forcibly unboard a player with the given ID.
forceUndock(cid): Sends a request to the server to attempt to forcibly undock a construct with the given ID.
playerBoarded(pid) event: Emitted when a player boards the construct.
constructDocked(cid) event: Emitted when another construct docks this construct.
getBoardedPlayerMass(pid): Returns the mass of the given player if it is on board the construct.
getDockedConstructMass(cid): Returns the mass of the given construct if it is docked to the construct.
getParent(): Returns the ID of the parent construct of your active construct.
getCloseParents(): Returns the list of IDs of nearby constructs to which the construct can dock.
getClosestParent(): Returns the ID of the nearest construct to which the construct can dock.
dock(): Sends a request to dock to the given construct. Limited to piloting controllers.
undock(): Sends a request to undock the construct. Limited to piloting controllers.
docked(cid) event: Emitted when the construct becomes docked.
undocked(cid) event: Emitted when the construct is undocked.
setDockingMode(mode): Sets the docking mode.
getDockingMode(): Returns the current docking mode.
Added Lua functions on control unit API:
getMasterPlayerParent(): Returns the ID of the construct on which the active player is boarded.
getMasterPlayerMass(): Returns the mass of the active player.
Core Combat Stress (CCS)
Core combat stress (CCS) represents a core unit's ability to keep functioning under weapons fire. CCS is basically a second loss condition on a construct during PvP fights. It works in tandem with generic core unit destruction. It does not matter which one happens first, only the one that happens eventually. A ship can now be destroyed in combat independent of voxel damage.
A core unit that takes too much stress will be destroyed and will be considered a fair PvP destruction. Stress will be accumulated as the construct takes non-shield weapons hits. A devblog about this was recently released; read it here.
The maximum stress supported by a construct is based on the number of honeycombs that compose it.
Added core combat stress widget.
Added stress level warning SFX at 25%, 50%, 75% and 95% of stress.
Added Lua functions and events on core unit API:
getCoreStress(): The core's current stress, destroyed when reaching max stress.
getMaxCoreStress(): The maximum stress the core can bear before it gets destroyed.
getCoreStressRatio(): The core's current stress-to-max stress ratio.
stressChanged(stress) event: Emitted when core unit stress has changed.
The Ares update introduces two new shield modules for PvP fights: the adjustable resistances and the venting mechanic:
Added venting game mechanic to allow regeneration of shield hitpoints during combat. Players will now have to think more strategically during combat.
Players may vent their shields at any point.
Venting shields will do two things:
Turn off the shields. (They cannot be reactivated during venting.)
Start a shield regeneration of a certain percent/second.
Venting can be deactivated at will.
Arriving at max shields will auto-deactivate venting.
Venting has a cooldown after usage.
Added adjustable resistances game mechanic: Players can now allocate points to better prepare and adapt during a fight, depending on the weapons of their opponents:
Shields start at a base resistance value of 10/10/10/10.
There is a shield resistance pool of an extra 60% resistance.
Players can assign these extra resistances by increments of five to any of the four resistances, i.e. 10/10/10/70 or 25/25/25/25.
Players may lock in their resistance selection and that selection will be active and cannot be changed for 60 seconds.
Once the time has expired, the set resistances stay as set unless the player recalibrates them.
Shields UI provides feedback to indicate which resistances are taking the most damage on the shield regardless of what resistances are set.
Shield venting cooldown depends on the size of the shield generator:
Update Shield Generator widget according to new additions.
Added raw hitpoints as arguments of the absorbed Lua event.
Renamed functions containing HitPoints to Hitpoints.
Adjusted base resistance of shields: Now 10/10/10/10 down from 15/15/15/15.
Balanced shields hitpoints :
Lua shield generator API additions:
toggled(active) event: Emitted when a state change is triggered (active/inactive).
venting (active, restoredHitpoints) event: Emitted when venting has started, stopped or restored some hitpoints.
startVenting(): Activate shield venting to restore hit points.
isVenting(): Check whether venting is in progress, return 1 if it is venting.
getVentingCooldown(): Returns time after which venting is possible again.
getVentingMaxCooldown(): Returns maximal cooldown between venting.
getResistances(): Returns distribution of resistance pool over resistance types.
setResistances(antimatter,electromagnetic,kinetic,thermic): Distribute the resistance pool according to damage.
getResistancesCooldown(): Returns time after which adjusting resistances is possible again.
getResistancesMaxCooldown(): Returns maximum cooldown between adjusting resistances.
getResistancesPool(): Returns total resistance pool that may be distributed.
getResistancesRemaining(): Returns the remaining amount of the resistance pool that can be distributed.
getStressRatio(): Returns ratio per damage type of recent weapon impacts after applying resistance.
getStressRatioRaw(): Returns ratio per damage type of recent weapon impacts without resistance.
getStressHitpoints(): Returns stress, that is the total hit points of recent weapon impacts after applying.
getStressHitpointsRaw(): Returns stress, that is the total hit points of recent weapon impacts without resistance.
Core units are no longer destroyed by environment damages (i.e. crash on planets, other construct collisions, etc).
Resume speed is reset when the core unit is destroyed.
Offline players are killed on core unit destruction.
Constructs are now only affected by the artificial gravity of constructs of equal or bigger size.
[Warp] Fixed the warping loop sound that never ended while warping with passengers.
[Warp] More explicit Warp Drive widget and notifications.
[Warp] PvP strike can cancel warp during start/spool sequence.
[Warp] Updated required warp cell quantity when distance changes.
[Warp] Warp Stop button is active only 1s after warp start, to prevent annoying misclick.
[Warp] When you cannot warp, the button is visually disabled.
Warp drive has been rebalanced: speed reduced, initiation duration increased.
Changed allowed timing between industry start/stop/set_recipe Lua queries.
[Emitters/Receivers] Restored multiple channels support on emitters and receivers.
Listening is now restricted on the channels defined on the receiver.
Restored emitter.send(channel,message): Send a message on the given channel.
Restored receiver.receive(channel, message) event: Emitted when a message is received on any channel defined on the element.
Added receiver.setChannels(channelList): Set the channels list on the element.
Added receiver.getChannels(): Returns the channels list.
[Radar] Improved identified construct markers and periscope interpolation.
Improved precise element placement on non-axis aligned surfaces.
[UEF Store] All the ships at the UEF store have had a quality improvement (Mark 2) pass. Some ships look very similar to their predecessors with power, lift, and balance tweaks, while some others (such as the Dragonfly, the Mule, and Specters) have been overhauled so that their performance improvements are also matched by visual improvements. The ship prices have also been adjusted to match current market conditions. (Note: Eclipses are currently unavailable.)
[Market] Market buy orders are now sorting in descending order initially (meaning that best offers are displayed first).
[Building] Improved element collision detection in Build mode.
[Screen units] Increased maximum visible Lua screen units from 16 to 32.
Fixed a random crash when exiting the game.
Fixed crash when other ship toggles shield via Lua.
Fixed various crashes including those related to inventory.
Fixed a crash that could occur with a specific invalid Lua autoconf file.
Fixed a crash when a ship with a linked container receives shield damage while standing on an asteroid.
A destroyed construct will now stop in place. Resume speed cannot trigger on destroyed constructs.
Offline players aboard a construct are now killed when its core unit is destroyed.
Fixed an industry duplicate production.
Fixed an exploit that allowed the placement of several elements in the same position. (Element Stacking)
Fixed an exploit about tokenized constructs.
Fixed organization vote refresh update.
Added reticule loading when requesting element use.
Fixed job completion issue with modal.
Fixed elements disappearing at high speed.
Fixed force fields extending unexpectedly at high speed.
Fixed reward display in sandbox history if reward is empty.
Fixed character speed when entering a cockpit while moving.
Fixed potential freeze from construct loading.
Fixed a framerate drop issue when loading construct meshes.
Fixed click sound spam when closing context menu.
Blueprints now properly preserve element names.
Fixed occasional hit prediction error when preselecting targets.
Fixed pending friend requests that cannot be deleted by the sender.
Fixed separation taken/created on hauling mission when viewing history of another player.
Fixed other cases of the issue where the client could freeze indefinitely (especially prevalent on AMD CPUs).
Fixed the chat settings "Remove notifications for.." which hid the notification from the different chat rooms.
Fixed undefined behavior (not working/editing another order) when editing a market order too soon after the last interaction with the market.
[FTUE] The Air Delivery Challenge no longer breaks if you speedrun.
[FTUE] Gunner Tutorial: Fixed an issue where moving multiple ammo types at once in the ammo container would not complete both related objectives.
[FTUE] Fixed a bug where during Gunnery Tutorial "open the order by menu" did not trigger Aphelia anymore.
[Market Tutorial] Fixed a typo in the instruction of one of the objectives.
[GUI] Fixed input disabled text on Industries.
[GUI] Fixed market modal that was not closing.
[GUI] Extended height of the gunner seat notification chat.
[GUI] Fixed the sort function of the gunner seat dropdowns.
[GUI] Fixed iFrame scrollbar style for organization manifest.
[GUI] Fixed case sensitive chat room creation.
[GUI] Redirect item global item inspector to active container.
[GUI] Asteroid name now properly shows on HUD.
[GUI] Fixed cut button on talents (queue & cancel buttons).
[GUI] Fixed wrong message when trying to drop undroppable items.
[GUI] Periscope is now updated correctly when preselecting targets.
[GUI] Fixed graphic setting overflow issue on 16:10 windows resolution.
[GUI] Fixed the remaining visible red border of the mining debugging panel.
[GUI] Partially fixed animation on Talent progress bar.
[GUI] Fixed crosshair information not displaying when standing still on a moving construct.
[GUI] Minor fixes for Inventory/container view (font families issues/tabs overflow).
[GUI] Minor fixes for consumables bar: item scale label is now visible all the time.
[GUI] Minor fixes for PvP combat logs: fixed correct wording for hit PvP logs.
[GUI] Center screen notification now correctly displays source and destination container name when moving multiple items.
[GUI] Fixed the reset of the scanner graph when the player opened the radial scanner.
[GUI] Fixed number field incrementing without stopping if clicked with both left and right mouse button.
[GUI] Set bigger market dropdown in order view so that market name stays on one line for easier reading.
[GUI] When editing a tag on a territory a territory icon is now displayed rather than a missing icon placeholder.
[GUI] Fixed coordinate comparison that was previously broken for world position created coordinates.
[GUI] When selecting a construct on the construct list, it will only open the planet map for the nearest planet if the construct is in its sphere of influence.
[Market] Fixed formatting currency.
[Market] Fixed market order sorting.
[Loc] Various fixes about ammo descriptions.
[Codex] Fixed shield generator codex texts.
[Mining] Fixed mining that was still possible until 10 minutes after a territory became private.
[Tool] Fixed a bug where “Replace” tool coordinates were not displayed.
[Building] Fixed BuildingZone flickering when voxels reach the limits.
[Lua] Fixed Lua getAxisAngleRad with angles > 90.
[Lua] Fixed Lua Parameter edition that could display code instead of values only.
[Lua] Replaced all uses of Lua atan2 by atan.
[Lua] Fixed a bug where Lua widgets were not always up-to-date when launched from a RemoteControlUnit.
[Screen Units] Fixed a bug where switching on a screen unit could read a wrong mouse value at first frame.
[Audio] Fixed a bug where engine sounds were not played and dynamic construct sweeteners were heard instead.
Some shield units may currently have zero maximum shield hitpoints following the update, if this is the case simply pick up and place down the shield to restore its hitpoints to the new maximum value.
[PvP] Using multiple weapons can still result in a low miss rate due to internal timeouts.
[Shields] In certain situations when constructs load, shields will not be visible to individual players. Deactivating and reactivating the shield will cause it to become visible for those players. This does not affect the functionality of the shield and is a visual issue only.
[Shields] Shields sometimes do not correctly fully encapsulate the construct to which they belong. This does not affect the functionality of the shield and is a visual issue only.
[Screen Units] Non-standard aspect screens, like signs, currently do not render correctly and stretch.
[Loc] Numerous French and German localization issues have already been spotted.
A random rendering crash may occur under some conditions due to low GPU/driver resources. Setting shadows to ‘Low’ and disabling Volumetric Clouds in Graphic settings may help.
Voxel crashes may occur due to low disk/memory.
[Industries] Talents that impact ingredients of schematic products are not displayed client-side, but the schematics are updated with the server schematics when starting.
[Industries] Some inconsistencies in schematics and tiered elements.
[Screens] High-frequency text updates on screens in HTML mode cause text to not display or flash.
Various lighting, shadow, and reflection issues might be seen due to ongoing rendering rework.
In some cases, DU stops responding when the game is minimized for too long. We’re investigating this issue right now.
Animated elements can be visually duplicated when broken during an animation.
Wrong highlight mesh for shield generators (XS, M, L).
[Codex] Missing Lua Screen Units codex page.
[Docking] Players will slide off of docked constructs if both they and the construct they are docked to are moving, which gets more severe with higher speeds.
[Docking] Piloting a construct while docked to another one that is flying very quickly will frequently induce strong rotations upon colliding with the docked construct.
[Docking] The child construct can be teleported when using the maneuvering tool on a moving parent construct.
We hope you'll like this update. The team has been working hard and continues to do so; we can't wait to have your feedback! Thank you very much for your support.