mirror of
https://git.ngram.ca/OpenJam/rc-servers
synced 2026-08-23 23:08:52 +00:00
Mitigate #59 with validation warning and reduce motion packets
This commit is contained in:
@@ -39,8 +39,12 @@ impl super::config::SelfValidator for MultiplayerConfig {
|
|||||||
message: "Game match may be lonely with only one player".to_owned(),
|
message: "Game match may be lonely with only one player".to_owned(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// TODO campaigns
|
if ((self.players_per_game as f32) / (self.fakes.len() as f32)) > 1.0 {
|
||||||
// TODO vehicles
|
info.warn(super::config::ValidationMessage {
|
||||||
|
path: vec!["fakes".to_owned()],
|
||||||
|
message: "Game match may have broken vehicle flipping functionality due to more than 1 ClientAI per player".to_owned(),
|
||||||
|
});
|
||||||
|
}
|
||||||
// TODO
|
// TODO
|
||||||
is_ok
|
is_ok
|
||||||
}
|
}
|
||||||
@@ -134,7 +138,7 @@ pub(super) fn default_fake_users() -> Vec<FakePlayerConf> {
|
|||||||
},
|
},
|
||||||
implementation: ClientEmulation::ClientAI,
|
implementation: ClientEmulation::ClientAI,
|
||||||
},
|
},
|
||||||
FakePlayerConf {
|
/*FakePlayerConf {
|
||||||
team: None,
|
team: None,
|
||||||
vehicle: super::garage::PrefabVehicle {
|
vehicle: super::garage::PrefabVehicle {
|
||||||
name: Some("fake3".to_owned()),
|
name: Some("fake3".to_owned()),
|
||||||
@@ -157,7 +161,7 @@ pub(super) fn default_fake_users() -> Vec<FakePlayerConf> {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
implementation: ClientEmulation::ClientAI,
|
implementation: ClientEmulation::ClientAI,
|
||||||
},
|
},*/
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1068,8 +1068,9 @@ impl <L: super::CustomGameLogic> GenericGamemodeEngine<L> {
|
|||||||
log::error!("Failed to serialize motion data from user {}: {}", user_id, e);
|
log::error!("Failed to serialize motion data from user {}: {}", user_id, e);
|
||||||
} else {
|
} else {
|
||||||
let data = bytes::Bytes::copy_from_slice(ser.as_slice());
|
let data = bytes::Bytes::copy_from_slice(ser.as_slice());
|
||||||
for conn in self.users.read().await.values() {
|
for (player_id, conn) in self.users.read().await.iter() {
|
||||||
if conn.user.user_id() == user_id { continue; } // fun fact: the game hard crashes if you omit this
|
if *player_id == motion.player_id || conn.aliases.contains(player_id) || conn.aliases.contains(&motion.player_id) { continue; } // don't re-send to client AIs
|
||||||
|
// fun fact: the game sometimes hard crashes if you send its own motion data back to it
|
||||||
crate::events::log_lnl_send_failure(conn.connection.sender.send_data(crate::handler::EventData {
|
crate::events::log_lnl_send_failure(conn.connection.sender.send_data(crate::handler::EventData {
|
||||||
message_ty: crate::data::MessageType::RobotMotion,
|
message_ty: crate::data::MessageType::RobotMotion,
|
||||||
variant: 0,
|
variant: 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user