ソースを参照

default settings and remove dead settings nodes

stan 2 日 前
コミット
24504fdba7

+ 2 - 8
Sunrise/resources/default_settings.json

@@ -1,5 +1,5 @@
 {
-  "version": 15,
+  "version": 16,
   "core": {
     "logging": {
       "debugger_sink": true,
@@ -37,7 +37,7 @@
     "suppress_peer_relay": true,
     "custom_bootflow_textures": true,
     "fade_release": true,
-    "socket_menu_routing": true,
+    "socket_menu_routing": false,
     "reveal_lore_books": true,
     "region_private": false,
     "pin_replicated_record": true,
@@ -57,9 +57,6 @@
     },
     "activation": {
       "default_client_activation": true,
-      "activity_compatibility_mirror": true,
-      "gameplay_external_body": false,
-      "server_default_entity": false,
       "activity_public_membership": true,
       "prevent_ownerless_channel_close": false,
       "mission_scripting": true
@@ -360,7 +357,6 @@
         "melee_ability": 11,
         "class_ability": 2,
         "level": 50,
-        "accepted": true,
         "preview_available": true,
         "appearance_value": 1.0,
         "last_orbited_destination": "0x125CF0E7",
@@ -886,7 +882,6 @@
         "melee_ability": 11,
         "class_ability": 2,
         "level": 50,
-        "accepted": true,
         "preview_available": true,
         "appearance_value": 1.0,
         "last_orbited_destination": "0x125CF0E7",
@@ -1412,7 +1407,6 @@
         "melee_ability": 11,
         "class_ability": 2,
         "level": 50,
-        "accepted": true,
         "preview_available": true,
         "appearance_value": 1.0,
         "last_orbited_destination": "0x125CF0E7",

+ 4 - 3
Sunrise/src/core/settings/client/definition.h

@@ -27,10 +27,11 @@ struct Settings {
      */
     bool fadeRelease{true};
     /**
-     * Moves the loaded armour socket rows so the mod menu lists every category.
-     * On by default; a client stand-in until the corrected pool is published over the wire.
+     * Moves the four Arrivals leg mods into the leg plug set, so the leg mod menu lists them.
+     * Off by default. Retail shipped the same package data and showed the same gap, so this is a
+     * content correction, not a retail behaviour. It may be removed.
      */
-    bool socketMenuRouting{true};
+    bool socketMenuRouting{false};
     /**
      * Clears the visibility gates on the loaded lore presentation nodes.
      * On by default; a client stand-in until the unlock banks carry every gate the nodes read.

+ 0 - 15
Sunrise/src/core/settings/server/activation/activation_settings_parser.cpp

@@ -23,21 +23,6 @@ bool Parser::activation_settings(server::activation::Settings& output) noexcept
                 return false;
             }
             candidate.defaultClientActivation = value;
-        } else if (key == "activity_compatibility_mirror") {
-            if (!boolean(value)) {
-                return false;
-            }
-            candidate.activityCompatibilityMirror = value;
-        } else if (key == "gameplay_external_body") {
-            if (!boolean(value)) {
-                return false;
-            }
-            candidate.gameplayExternalBody = value;
-        } else if (key == "server_default_entity") {
-            if (!boolean(value)) {
-                return false;
-            }
-            candidate.serverDefaultEntity = value;
         } else if (key == "activity_public_membership") {
             if (!boolean(value)) {
                 return false;

+ 0 - 19
Sunrise/src/core/settings/server/activation/definition.h

@@ -5,7 +5,6 @@ namespace sunrise::core::settings::server::activation {
 /**
  * Gates for the default client-activation work, one per bounded domain.
  * Each domain finishes on its own, so partial work in one cannot make another read as ready.
- * With every gate off the host sends the same bytes it did before the domain existed.
  */
 struct Settings {
     /**
@@ -14,24 +13,6 @@ struct Settings {
      * nothing.
      */
     bool defaultClientActivation{true};
-    /**
-     * Bounded receipt, mirror, and response handling for the activity compatibility traffic.
-     * Off, an activity message that changes no state is framed and reported but not recorded, so
-     * the arrival registry stays empty.
-     */
-    bool activityCompatibilityMirror{true};
-    /**
-     * The external common and channel wrapper on the gameplay packet.
-     * TODO: nothing reads this gate. The codec and receive shadow exist; the packet-outcome
-     * binding does not. Wire it to the established writer, not before.
-     */
-    bool gameplayExternalBody{false};
-    /**
-     * One allowlisted server-owned default entity.
-     * TODO: nothing reads this gate. The allocator and channel-2 codec exist offline; a visible
-     * class chain and a live outcome path do not. Wire it with those, not before.
-     */
-    bool serverDefaultEntity{false};
     /**
      * Membership on a public-target link, so the client binds a world container to it.
      * On by default. Sending it hands the client's player create and destroy source to that

+ 1 - 1
Sunrise/src/core/settings/settings.h

@@ -26,7 +26,7 @@ struct ActivitySdkGenerationSettings final {
  * Raise it when a key is renamed, removed, changes meaning, or must take a new default. Adding a
  * key needs no raise, because a missing key already takes its default.
  */
-inline constexpr std::uint32_t kSettingsVersion = 15;
+inline constexpr std::uint32_t kSettingsVersion = 16;
 
 /** Parsed read-only process settings. */
 struct Settings {

+ 10 - 2
Sunrise/src/core/settings/settings_upgrade.cpp

@@ -76,14 +76,22 @@ struct RemovedMember {
     std::uint32_t version;
 };
 
-/** Members this build no longer reads, each with the version that removed it. */
-constexpr std::array<RemovedMember, 4> kRemovedMembers{{
+/**
+ * Members this build no longer reads, each with the version that removed it.
+ * Only the first occurrence of a name is removed, so a member repeated per character, such as the
+ * version-16 `accepted`, is left for the parser to skip as an unknown key.
+ */
+constexpr std::array<RemovedMember, 7> kRemovedMembers{{
     {"\"force_join_request_ready\"", 12},
     // Version 14 dropped two client stand-ins and moved the catalyst gate under
     // `state.investment`, so the root copy is no longer read.
     {"\"skip_profile_setup\"", 14},
     {"\"ignore_client_slot_release\"", 14},
     {"\"complete_exotic_catalysts\"", 14},
+    // Version 16 dropped two gates nothing read and one that only skipped a receipt row.
+    {"\"activity_compatibility_mirror\"", 16},
+    {"\"gameplay_external_body\"", 16},
+    {"\"server_default_entity\"", 16},
 }};
 
 /** One splice per replaced, renamed and removed member, plus the version member itself. */

+ 0 - 4
Sunrise/src/core/settings/state/account_rows_parser.cpp

@@ -280,10 +280,6 @@ bool Parser::character(state::CharacterState& output) noexcept {
                 return false;
             }
             output.level = static_cast<std::uint8_t>(value);
-        } else if (key == "accepted") {
-            if (!boolean(output.accepted)) {
-                return false;
-            }
         } else if (key == "preview_available") {
             if (!boolean(output.previewAvailable)) {
                 return false;

+ 2 - 1
Sunrise/src/middleware/gameplay/external/external_entity_codec.h

@@ -177,7 +177,8 @@ struct ExternalEntityFrame {
 
 /**
  * Reads one channel-2 batch and commits the reader and output only on success.
- * TODO: no caller yet. The four entry points below wait on the `gameplay_external_body` gate.
+ * TODO: no caller yet. The four entry points below wait on the packet-outcome binding to the
+ * established writer.
  */
 [[nodiscard]] bool read_entity_batch(encoding::bits::Reader& reader,
                                      const TypePayloadCodec& codec,

+ 0 - 4
Sunrise/src/server/bap/encrypted/activity_message/activity_message_route.cpp

@@ -349,10 +349,6 @@ std::uint64_t record(const service::Request& request,
             report_message(request.messageType, request.sessionId, "mission_ingress_refused");
         }
     }
-    if (!core::settings::get().server.activation.activityCompatibilityMirror) {
-        // Off, only the aggregate receipt row is skipped. The diagnostic history stays live.
-        return sequence;
-    }
     store::Arrival arrival{};
     arrival.sessionId = request.sessionId;
     arrival.messageType = request.messageType;

+ 2 - 1
Sunrise/src/server/gameplay/peer/external_shadow.h

@@ -23,7 +23,8 @@ struct EmptyFrame {
 
 /**
  * Reads one complete empty-channel frame without changing output on failure.
- * TODO: no caller yet. Both entry points here wait on the `gameplay_external_body` gate.
+ * TODO: no caller yet. Both entry points here wait on the packet-outcome binding to the
+ * established writer.
  */
 [[nodiscard]] middleware::gameplay::external::EmptyProfileResult
 read_empty_frame(middleware::encoding::bits::Reader& reader, EmptyFrame& output) noexcept;

+ 2 - 1
Sunrise/src/server/gameplay/peer/peer_transport.h

@@ -19,7 +19,8 @@ namespace sunrise::server::gameplay::peer {
 
 /**
  * Installs the process-lifetime channel-0 codec before gameplay starts.
- * TODO: no caller yet. The session-less channel-0 owner waits on the `gameplay_external_body` gate.
+ * TODO: no caller yet. The session-less channel-0 owner waits on the packet-outcome binding to
+ * the established writer.
  */
 void install_lane0_codec(
     const middleware::gameplay::external::Lane0Codec& codec,

+ 0 - 1
Sunrise/src/state/account/account_state.h

@@ -135,7 +135,6 @@ struct CharacterState {
     CharacterGender gender{CharacterGender::male};
     CharacterClass characterClass{CharacterClass::titan};
     std::uint8_t level{};
-    bool accepted{};
     bool previewAvailable{};
     /** Authored scalar kept for the family-specific character presentation encoders. */
     float appearanceValue{};

+ 1 - 2
Sunrise/src/state/runtime/state_account_equipment_runtime.cpp

@@ -335,8 +335,7 @@ void report_item_state(std::string_view stage,
                                        const CharacterState& right) noexcept {
     if (left.soid != right.soid || left.selected != right.selected || left.race != right.race
         || left.gender != right.gender || left.characterClass != right.characterClass
-        || left.level != right.level || left.accepted != right.accepted
-        || left.previewAvailable != right.previewAvailable
+        || left.level != right.level || left.previewAvailable != right.previewAvailable
         || left.appearanceValue != right.appearanceValue
         || left.lastOrbitedDestination != right.lastOrbitedDestination
         || left.currentActivityIndex != right.currentActivityIndex