@@ -74,11 +74,6 @@ void Gekko::MessageSystem::AddInput(Frame input_frame, Handle player, u8 input[]
7474 input_q.last_added_input ++;
7575 input_q.inputs .push_back (std::make_unique<u8 []>(_input_size));
7676 std::memcpy (input_q.inputs .back ().get (), input, _input_size);
77-
78- // update history // TODO REDO WITH BACKEND REWORK..
79- if (!remote) {
80- history.Update (input_frame);
81- }
8277 }
8378
8479 // discard acked inputs (local) or just cap the queue (remote)
@@ -680,7 +675,7 @@ void Gekko::MessageSystem::OnInputAck(NetAddress& addr, NetPacket& pkt)
680675 player->stats .last_acked_frame = ack_frame;
681676 // only add remote advantages once
682677 if (!added_advantage && i == 0 ) {
683- history.AddRemoteAdvantage (remote_advantage);
678+ history.SetRemoteAdvantage (remote_advantage);
684679 added_advantage = true ;
685680 }
686681 }
@@ -890,27 +885,17 @@ void Gekko::MessageSystem::SendInputsToPeer(Player* peer, GekkoNetAdapter* host,
890885
891886void Gekko::AdvantageHistory::Init ()
892887{
893- _adv_index = 0 ;
894888 _local_frame_adv = 0 ;
895-
896- std::memset (_remote_frame_adv, 0 , HISTORY_SIZE * sizeof (i8 ));
889+ _remote_frame_adv = 0 ;
897890 std::memset (_local, 0 , HISTORY_SIZE * sizeof (i8 ));
898891 std::memset (_remote, 0 , HISTORY_SIZE * sizeof (i8 ));
899892}
900893
901894void Gekko::AdvantageHistory::Update (Frame frame)
902895{
903896 const u32 update_frame = std::max (frame, 0 );
904-
905897 _local[update_frame % HISTORY_SIZE] = _local_frame_adv;
906-
907- i32 sum = 0 ;
908- for (i8 num : _remote_frame_adv) {
909- sum += num;
910- }
911-
912- sum /= HISTORY_SIZE;
913- _remote[update_frame % HISTORY_SIZE] = sum;
898+ _remote[update_frame % HISTORY_SIZE] = _remote_frame_adv;
914899}
915900
916901f32 Gekko::AdvantageHistory::GetAverageAdvantage ()
@@ -926,17 +911,16 @@ f32 Gekko::AdvantageHistory::GetAverageAdvantage()
926911 f32 avg_local = sum_local / HISTORY_SIZE;
927912 f32 avg_remote = sum_remote / HISTORY_SIZE;
928913
929- // return the frames ahead
930- return (avg_local - avg_remote);
914+ // return the frames ahead (halved: each peer corrects its share of the gap)
915+ return (avg_local - avg_remote) / 2 . f ;
931916}
932917
933918void Gekko::AdvantageHistory::SetLocalAdvantage (i8 adv) {
934919 _local_frame_adv = adv;
935920}
936921
937- void Gekko::AdvantageHistory::AddRemoteAdvantage (i8 adv) {
938- _remote_frame_adv[_adv_index % HISTORY_SIZE] = adv;
939- _adv_index++;
922+ void Gekko::AdvantageHistory::SetRemoteAdvantage (i8 adv) {
923+ _remote_frame_adv = adv;
940924}
941925
942926i8 Gekko::AdvantageHistory::GetLocalAdvantage () {
0 commit comments