optimizations
This commit is contained in:
parent
6a446e1b18
commit
ab83443632
|
@ -1,4 +1,5 @@
|
|||
# Yeahbut Apr 2024
|
||||
import math
|
||||
import certifi, os
|
||||
os.environ["SSL_CERT_FILE"] = certifi.where()
|
||||
|
||||
|
@ -183,6 +184,7 @@ class Player:
|
|||
self.load_chunk(*i)
|
||||
for i in old_chunks:
|
||||
self.unload_chunk(*i)
|
||||
self._load_queue.sort(key=lambda o: math.sqrt(pow(self.cx - o[0],2) + pow(self.cz - o[1],2)))
|
||||
self._conn.send_update_view_position(self.cx,self.cz)
|
||||
|
||||
def load_chunk(self, x: int, z: int):
|
||||
|
@ -212,7 +214,7 @@ class YTDServerProtocol(ServerProtocol):
|
|||
# in-game, and does some logging.
|
||||
ServerProtocol.player_joined(self)
|
||||
self.buff_type = Buffer_1_18_2
|
||||
self.view_distance = 2
|
||||
self.view_distance = 5
|
||||
|
||||
self.player = Player(
|
||||
self,
|
||||
|
@ -242,7 +244,7 @@ class YTDServerProtocol(ServerProtocol):
|
|||
|
||||
# Start sending "Keep Alive" packets
|
||||
self.ticker.add_loop(20, self.update_keep_alive)
|
||||
self.ticker.add_loop(1, self.manage_queue)
|
||||
self.ticker.add_loop(.5/self.ticker.interval, self.manage_queue)
|
||||
|
||||
# Announce player join to other players
|
||||
self.factory.broadcast_player_join(self)
|
||||
|
@ -297,7 +299,7 @@ class YTDServerProtocol(ServerProtocol):
|
|||
join_game.append(self.buff_type.pack_string(world_name))
|
||||
join_game.append(self.buff_type.pack("q", hashed_seed))
|
||||
join_game.append(self.buff_type.pack_varint(max_players))
|
||||
join_game.append(self.buff_type.pack_varint(view_distance)),
|
||||
join_game.append(self.buff_type.pack_varint(view_distance))
|
||||
|
||||
join_game.append(self.buff_type.pack_varint(simulation_distance))
|
||||
|
||||
|
@ -307,22 +309,21 @@ class YTDServerProtocol(ServerProtocol):
|
|||
self.send_packet("join_game", *join_game)
|
||||
|
||||
def manage_queue(self):
|
||||
if self.closed: return
|
||||
t = time.time()
|
||||
if self.player._load_queue:
|
||||
x,z = self.player._load_queue.pop(0)
|
||||
while (x,z) in self.player._load_queue:
|
||||
self.player._load_queue.remove((x,z))
|
||||
print(f"dequeuing loading chunk {x}, {z}")
|
||||
# print(f"dequeuing loading chunk {x}, {z}")
|
||||
self.send_chunk(x,z)
|
||||
print(f"generating {x}, {z} took {int(time.time()-t)}s")
|
||||
elif self.player._unload_queue:
|
||||
print(f"generating {x}, {z} took {int(time.time()-t)}s; {len(self.player._load_queue)} chunks remaining")
|
||||
while self.player._unload_queue:
|
||||
x,z = self.player._unload_queue.pop(0)
|
||||
while (x,z) in self.player._unload_queue:
|
||||
self.player._unload_queue.remove((x,z))
|
||||
print(f"dequeuing unloading chunk {x}, {z}")
|
||||
self.send_unload_chunk(x,z)
|
||||
# else:
|
||||
# print("queues empty")
|
||||
|
||||
def player_left(self):
|
||||
ServerProtocol.player_left(self)
|
||||
|
|
Loading…
Reference in New Issue