enhanced UDP audio sender/receiver scripts with metrics for packet tracking and improved NPC assignment logic

This commit is contained in:
tom.hempel
2025-10-23 03:08:51 +02:00
parent 6a99392e34
commit 73b921fc9b
13 changed files with 751 additions and 12 deletions

View File

@ -58,12 +58,19 @@ namespace Convai.Scripts.Runtime.Multiplayer
Lost
}
// Event log for debugging
private System.Collections.Generic.List<string> _eventLog = new System.Collections.Generic.List<string>();
private const int MAX_LOG_ENTRIES = 20;
// Public properties
public string PeerIP => _peerIP;
public byte LocalPlayerID => localPlayerID;
public byte PeerPlayerID => _peerPlayerID;
public ConnectionState CurrentState => _connectionState;
public bool IsConnected => _connectionState == ConnectionState.Connected;
public float TimeSinceLastPeerPacket => _connectionState == ConnectionState.Connected ?
(float)(DateTime.UtcNow - _lastPeerPacketTime).TotalSeconds : -1f;
public System.Collections.Generic.List<string> EventLog => _eventLog;
private void Awake()
{
@ -91,6 +98,7 @@ namespace Convai.Scripts.Runtime.Multiplayer
}
_cancellationTokenSource = new CancellationTokenSource();
LogEvent($"🔍 Discovery started (Player {localPlayerID})");
StartDiscovery();
}
@ -401,6 +409,7 @@ namespace Convai.Scripts.Runtime.Multiplayer
SetConnectionState(ConnectionState.Connected);
ConvaiLogger.Info($"✅ Peer discovered! Player {peerPlayerID} at {peerIP}", ConvaiLogger.LogCategory.Character);
LogEvent($"✅ Peer discovered! Player {peerPlayerID} at {peerIP}");
// Notify listeners
OnPeerDiscovered?.Invoke(peerIP);
@ -409,6 +418,7 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void HandlePeerLost()
{
ConvaiLogger.Warn($"⚠️ Peer connection lost (Player {_peerPlayerID} at {_peerIP})", ConvaiLogger.LogCategory.Character);
LogEvent($"⚠️ Peer connection lost (Player {_peerPlayerID})");
string lostPeerIP = _peerIP;
_peerIP = "";
@ -441,6 +451,7 @@ namespace Convai.Scripts.Runtime.Multiplayer
public void RestartDiscovery()
{
ConvaiLogger.Info("Manually restarting peer discovery", ConvaiLogger.LogCategory.Character);
LogEvent("🔄 Manually restarting discovery");
_peerIP = "";
_peerPlayerID = 0;
SetConnectionState(ConnectionState.Discovering);
@ -455,6 +466,19 @@ namespace Convai.Scripts.Runtime.Multiplayer
ConvaiLogger.Info($"Peer Player ID: {_peerPlayerID}", ConvaiLogger.LogCategory.Character);
ConvaiLogger.Info($"Listen Port: {_listenPort}", ConvaiLogger.LogCategory.Character);
}
private void LogEvent(string message)
{
string timestamp = DateTime.Now.ToString("HH:mm:ss");
string logEntry = $"[{timestamp}] {message}";
_eventLog.Add(logEntry);
// Keep only last N entries
if (_eventLog.Count > MAX_LOG_ENTRIES)
{
_eventLog.RemoveAt(0);
}
}
}
}