### Compatibility
-Impostor has two compatibility options which allow some extra flexibility but may not work properly. Enabling either of these options is not recommended.
+Impostor has some compatibility options which allow some extra flexibility but may not work properly. Enabling any of these options is not recommended. When contacting support, please mention which of these options are enabled.
-| Key | Default | Value |
-| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **AllowNewGameVersions** | `false` | Warning: Setting this option to `true` is unsupported and may cause issues when large updates to Among Us are released. Allow future versions of Among Us to join your server. |
-| **AllowVersionMixing** | `false` | Allow players using different game versions to play in one lobby. |
+| Key | Default | Value |
+|-----------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **AllowFutureGameVersions** | `false` | Warning: Setting this option to `true` is unsupported and may cause issues when large updates to Among Us are released, but can be useful when a small patch is released. Allows future versions of Among Us to join your server. |
+| **AllowHostAuthority** | `false` | Certain Among Us mods allow disabling some server-authoritative features, which also changes some code paths in the client. These code paths have not undergone as much testing and contain bugs, which can't be fixed from the Impostor side. Use with caution. |
+| **AllowVersionMixing** | `false` | Allows players using different game versions to play in one lobby that have not been marked by the Impostor developers as compatible. |
### Debug
_clients = new ConcurrentDictionary<int, ClientBase>();
_compatibilityManager = compatibilityManager;
_compatibilityConfig = compatibilityConfig.Value;
+
+ if (_compatibilityConfig.AllowFutureGameVersions
+ || _compatibilityConfig.AllowHostAuthority
+ || _compatibilityConfig.AllowVersionMixing)
+ {
+ _logger.LogWarning("One or more compatibility options were enabled, please mention these when seeking support:");
+
+ if (_compatibilityConfig.AllowFutureGameVersions)
+ {
+ _logger.LogWarning("AllowFutureGameVersions, which allows future Among Us versions to connect that were unknown at the time this Impostor was built");
+ }
+
+ if (_compatibilityConfig.AllowHostAuthority)
+ {
+ _logger.LogWarning("AllowHostAuthority, which allows game hosts to control more game features, but it uses less well tested code on the client, which causes some bugs");
+ }
+
+ if (_compatibilityConfig.AllowVersionMixing)
+ {
+ _logger.LogWarning("AllowVersionMixing, which allows players to join games created on different game versions that they may not be 100% compatible with");
+ }
+ }
}
public IEnumerable<ClientBase> Clients => _clients.Values;
return;
}
+ // Warn when players connect using the +25 flag that disables server authority. The host authority version
+ // of 2024.6.18 contains various bugs that break the game, so print a message if this mode is in use
+ if (clientVersion.HasDisableServerAuthorityFlag)
+ {
+ if (!_compatibilityConfig.AllowHostAuthority)
+ {
+ _logger.LogInformation("Player {Name} kicked because they requested host authority.", name);
+ await connection.CustomDisconnectAsync(DisconnectReason.Custom, DisconnectMessages.HostAuthorityUnsupported);
+ return;
+ }
+
+ _logger.LogWarning("Player {Name} connected with server authority disabled, this may cause issues as there are known bugs in this mode. Please mention that this mode is in use when asking for support.", name);
+ }
+
if (name.Length > 10)
{
await connection.CustomDisconnectAsync(DisconnectReason.Custom, DisconnectMessages.UsernameLength);