INNER CODE UNIT · Python
read_data_udp
TheXTech/TheXTech · resources/_dev_scripts/xserver.py:227
def read_data_udp(self, msg):
if len(msg) % 4 != 0:
self.room.kill(self)
return
udp_frame_index = -1
for i in range(0, len(msg), 4):
message = msg[i : i + 4]
if message[0] == MESSAGE_FRAME_BEGIN or message[0] == MESSAGE_FRAME_END:
udp_frame_index = message[1] * 256 * 256 + message[2] * 256 + message[3]
# FIXME: figure out whether this is a good idea
# bad idea because game transmits UDP starting from the first un-acked frame with inputs, but doesn't clarify which frame this is
# reject UDP packets that start after acked_frame, as premature.
# if i == 0 and udp_frame_index > self.acked_frame + 1:
# print(f"Ignoring premature UDP packet (starts {udp_frame_index}, last seen {self.acked_frame})")
# return