every DN allocates space for 4 tokens on default / emplace construction, but the average final size is ~1.9 tokens.Īpproximate DataNode::Size() breakdown for game files as of March 2021: Call `shrink_to_fit` after parsing a line, so persistent DataNodes (GameEvents, PlayerInfo::changes) consume less space. Perf(internal): Reduce persistent DataNode memory usage disallow copies of "unique" things like Missions and NPCs classes that contained a Point (like Personality, Body, etc) now have better move semantics when in a stdlib container now that Point has noexcept move & copy semantics, can make NPC have noexcept move ctor Perf(internal): Add noexcept specifier to a few more classes * Removed check for IsDisabled from Ship CanCarryĪdded check for IsDestroyed to Ship CanCarryįix(typo): Fix typo in ConditionSet validation message * Removed check for IsDestroyed from Ship CanCarry * Updated CanCarry to check if escorts are destroyed or disabled
* Updated CanCarry to use Total bays before counting escorts and free spaces When calculating the free bays the escorts already carried are
* Fix captured fighters dont dock in free escort bays endless-sky#6074 Strider: Remnant 3 specifies `landing` twice, when just once will do.įix(mechanics): Avoid double-counting carried ships when considering carrying another ship ( endless-sky#6091) Guns are all under by default, while turrets are all over by default.įix(UI): Allow the map to be opened when at the end of a conversation ( endless-sky#6106)Ĭhore(content): Removed duplicate "landing" tag ( endless-sky#6115) These define how a hardpoint's sprite is drawn. Of course this could be reproduced anywhere as long as the conditions described apply.įix(mechanics): Properly assign over/under for hardpoints on variantsįeat(mechanics): Add ability to fire all secondary weapons at once ( endless-sky#6085)įeat(enhancement): Add over/under keywords for gun/turret hardpoints ( endless-sky#6113) There's a skein escort ready to go and 3 barbs parked on the planet that can be un-parked to take up half the bays for demonstration/comparison purposes. This file has a decent fleet with beam weapons heading into Kor Ak'Mari which is an easy farming spot for Korath Chasers. Game Source: Steam beta, self-compiled (both).System (please complete the following information): Watch the fighter select a ship at random to escort instead of the Skein (though it might get lucky)įighters and drones should be able to identify escort ships with available bays even when the bays are nearly full.Wait for the fighter's AI::Step function to run.
This causes the docked escorts to be counted twice. The free value is decremented in a loop based on number of escorts matching the bay category but the occupied bays are already accounted for since they aren't free.
This seems to be caused by the captured fighter always starting as an escort of the player ship even when the player ship has no bays.įrom looking at the code a bit, I think the issue is in Ship.cpp in the Ship::CanCarry method. There's still a delay before the fighter docks even when the Skein has all bays free. Until that random selection it's possible to order each non-fighter, non-drone escort to hold position at different spaced out locations and watch the captured fighter periodically fly from ship to ship as it selects them at random even though there are free bays in the fleet. If the randomly selected ship is the Skein, then the fighter docks as expected. It looks like the fighter's AI::Step function checks to see if a bay is available and if the check fails then the fighter selects a random ship to escort for a while. For example, if the player ship has no bays and the player's escort, a Skein, has 3 of its 6 fighter bays occupied, then any fighter ships that are captured won't be able to dock with the Skein in a reasonable amount of time.
Captured fighters and drones don't seem to recognize that a player's escort has available bays if the bays are at least half occupied already.